【发布时间】:2012-10-15 14:11:40
【问题描述】:
我试图重现一个仅使用 javax.servlet.Servlet 接口实现 Servlet 的 Servlet 示例。但是,它不起作用。当我尝试使用 Web 浏览器运行 servlet 时,它会显示一条错误消息:
请求的资源()不可用。
glassfish中记录的错误信息是
[#|2012-10-15T07:00:58.703-0500|严重|glassfish3.0.1|global|_ThreadID=39;_ThreadName=Thread-1;|The 类 app01a.MyServlet 有注释 javax.servlet.annotation.WebServlet 需要是一个派生类 javax.servlet.http.HttpServlet。符号:TYPE 位置:class app01a.MyServlet |#]
我正在使用 glassfish、eclipse 和 jdk1.7.0_03。
为什么会这样?
我知道实现 Servlet 的常规方法是扩展 HttpServlet 类。但是,我很好奇作者为什么这样做。
这本书的名字是“Servlet and JSP: A Tutorial By Budi Kurniawan”。
下面是示例代码。
感谢您的帮助
package app01a;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
/**
* Servlet implementation class MyServlet
*/
@WebServlet("/MyServlet")
public class MyServlet implements Servlet {
private transient ServletConfig servletConfig;
/**
* Default constructor.
*/
public MyServlet() {
}
/**
* @see Servlet#init(ServletConfig)
*/
public void init(ServletConfig config) throws ServletException {
this.servletConfig = servletConfig;
}
/**
* @see Servlet#destroy()
*/
public void destroy() {
}
/**
* @see Servlet#getServletConfig()
*/
public ServletConfig getServletConfig() {
return servletConfig;
}
/**
* @see Servlet#getServletInfo()
*/
public String getServletInfo() {
return "My Servlet";
}
/**
* @see Servlet#service(ServletRequest request, ServletResponse response)
*/
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
String servletName = servletConfig.getServletName();
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
writer.print("<html><head></head><body>Hello from " +
servletName + "</body></html>");
}
}
【问题讨论】:
标签: jakarta-ee glassfish-3 servlet-3.0