随笔 - 4, 文章 - 2, 评论 - 36, 引用 - 0
数据加载中……

纠正一些关于Servlet的误解

    刚才看了几篇对Servlet总结的文章,发现他们都有异曲同工之处,上来就是这样写的:
 

Servlet三个要素:
      1.必须继承自HttpServlet
      2.必须实现doGet()或者doPost()
      3.必须在web.xml中配置Servlet
      <servlet>
      <servlet-name> </servlet-name>
      <servlet-class> </servlet-class>
      </servlet>
      
      <servlet-mapping>
      <servlet-name> </servlet-name>
      <url-pattern> </url-pattern>
      </servelt-mapping>

   
    有谁说了编写一个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");
        }

    }
 
    
    (二)继承抽象类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!");                     
     }

}


(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);
 }


}

posted on 2008-11-21 12:55 幽梦新影 阅读(1154) 评论(1)  编辑  收藏

评论

# re: 纠正一些关于Servlet的误解[未登录]  回复  更多评论   

嘿嘿。。可能最上面的那些关于servlet的讲解比较大众化吧。。。LZ你说的这三种方法中用得最多的也应该是第三种吧。
2008-11-22 18:13 | lepoke

只有注册用户登录后才能发表评论。


网站导航: