纠正一些关于Servlet的误解
刚才看了几篇对Servlet总结的文章,发现他们都有异曲同工之处,上来就是这样写的:
有谁说了编写一个Servlet必须继承自HttpServlet类,必须实现doGet()或者doPost() ,难道实现Servlet接口就不行了吗?
其实编写一个Servlet主要有三种方法,一是实现Servlet接口,二是继承抽象类GenericServlet,三是继承HttpServlet类.下面分别用这三种方法去实现Servlet:
(一)要从实现Servlet接口来编写一个Servlet是比较麻烦的,因为必须实现Servlet接口中的所有方法,Servlet接口主要定义了五个方法,它们分别为:
(1)void init(ServletConfig config) throws ServletException
(2)ServletConfig getServletConfig()
(3)void service(ServletRequest req,ervletResponse res) throws ServletException,IOException
(4)String getServletInfo()
(5)void destroy()
下面用实现Servlet接口的方法编写一个Servlet:
(二)继承抽象类GenericServlet编写一个Serlvet,这个相对比实现Servlet接口要容易一点,GenericServlet类中只有一个抽象方法,即service(ServletRequest req, ServletResponse res),只要实现这个方法就行了,下面看例子:
(3)继承HttpServlet类编写Servlet应该是最容易的,而且是最常见的,我们一般要编写Servlet直接继承这个类就行了,重写doGet()或者doPost()方法即可,下面看例子:
Servlet三个要素: |
有谁说了编写一个Servlet必须继承自HttpServlet类,必须实现doGet()或者doPost() ,难道实现Servlet接口就不行了吗?
其实编写一个Servlet主要有三种方法,一是实现Servlet接口,二是继承抽象类GenericServlet,三是继承HttpServlet类.下面分别用这三种方法去实现Servlet:
(一)要从实现Servlet接口来编写一个Servlet是比较麻烦的,因为必须实现Servlet接口中的所有方法,Servlet接口主要定义了五个方法,它们分别为:
(1)void init(ServletConfig config) throws ServletException
(2)ServletConfig getServletConfig()
(3)void service(ServletRequest req,ervletResponse res) throws ServletException,IOException
(4)String getServletInfo()
(5)void destroy()
下面用实现Servlet接口的方法编写一个Servlet:
import
javax.servlet.
*
;
import java.io. * ;
public class TestServlet implements Servlet {
public void init(ServletConfig config) throws ServletException{
System.out.println("init");
}
public ServletConfig getServletConfig(){
reture null;
}
public void service(ServletRequest req,ServletResponse res)
throws ServletException,IOException{
//这里可以实现请求后要做的内容
PrintWriter out = response.getWriter();
out.println("Hello World!");
}
public String getServletInfo(){
return null;
}
public void destroy(){
System.out.println("destory");
}
}
import java.io. * ;
public class TestServlet implements Servlet {
public void init(ServletConfig config) throws ServletException{
System.out.println("init");
}
public ServletConfig getServletConfig(){
reture null;
}
public void service(ServletRequest req,ServletResponse res)
throws ServletException,IOException{
//这里可以实现请求后要做的内容
PrintWriter out = response.getWriter();
out.println("Hello World!");
}
public String getServletInfo(){
return null;
}
public void destroy(){
System.out.println("destory");
}
}
(二)继承抽象类GenericServlet编写一个Serlvet,这个相对比实现Servlet接口要容易一点,GenericServlet类中只有一个抽象方法,即service(ServletRequest req, ServletResponse res),只要实现这个方法就行了,下面看例子:
import
javax.servlet.
*
;
import java.io.IOException;
public TestGenericServlet extends GenericServlet {
public abstract void service(ServletRequest req,ServletResponse res)
throws ServletException,IOException{
PrintWriter out = response.getWriter();
out.println("Hello World!");
}
}
import java.io.IOException;
public TestGenericServlet extends GenericServlet {
public abstract void service(ServletRequest req,ServletResponse res)
throws ServletException,IOException{
PrintWriter out = response.getWriter();
out.println("Hello World!");
}
}
(3)继承HttpServlet类编写Servlet应该是最容易的,而且是最常见的,我们一般要编写Servlet直接继承这个类就行了,重写doGet()或者doPost()方法即可,下面看例子:
import
javax.servlet.http.
*
;
import javax.servlet. * ;
import java.io. * ;
public TestHttpServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>HelloWorld</title>");
out.println("</head>");
out.println("<body bgcolor=\"white\">");
out.println("<hr>");
out.println("HelloWorld");
out.println("</body></html>");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
doGet(request, response);
}
}
import javax.servlet. * ;
import java.io. * ;
public TestHttpServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>HelloWorld</title>");
out.println("</head>");
out.println("<body bgcolor=\"white\">");
out.println("<hr>");
out.println("HelloWorld");
out.println("</body></html>");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
doGet(request, response);
}
}