<7>手动创建Servlet程序

  • Post author:
  • Post category:其他


一般在实际项目开发中,都是使用

继承 HttpServlet 类

的方式去实现 Servlet 程序。

  • 1、编写一个类去继承 HttpServlet 类
  • 2、根据业务需要重写 doGet 或 doPost 方法
  • 3、到 web.xml 中的配置 Servlet 程序的访问地址




1.HttpServlet抽象类

HttpServlet 也是一个抽象类,它进一步继承并封装了 GenericServlet,使得使用更加简单方便,由于是扩展了 Http 的内容,所以还需要使用 HttpServletRequest 和 HttpServletResponse,这两个类分别是 ServletRequest 和 ServletResponse 的子类。代码如下:

abstract class HttpServlet extends GenericServlet{
 
   //HttpServlet中的service()
   protected void service(HttpServletRequest httpServletRequest,
                       HttpServletResponse httpServletResponse){
        //该方法通过httpServletRequest.getMethod()判断请求类型调用doGet() doPost()
   }
 
   //必须实现父类的service()方法
   public void service(ServletRequest servletRequest,ServletResponse servletResponse){
      HttpServletRequest request;
      HttpServletResponse response;
      try{
         request=(HttpServletRequest)servletRequest;
         response=(HttpServletResponse)servletResponse;
      }catch(ClassCastException){
         throw new ServletException("non-http request or response");
      }
      //调用service()方法
      this.service(request,response);
   }
}

我们可以看到,HttpServlet 中对原始的 Servlet 中的方法都进行了默认的操作,不需要显式的销毁初始化以及 service(),

在 HttpServlet 中,自定义了一个新的 service() 方法,其中通过 getMethod() 方法判断请求的类型,从而调用 doGet() 或者 doPost() 处理 get,post 请求,使用者只需要继承 HttpServlet,然后重写 doPost() 或者 doGet() 方法处理请求即可。

我们一般都使用继承 HttpServlet 的方式来定义一个 servlet。




2.继承 HttpServlet 方法

public class ServletDemo extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("doGet 方法");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("doPost 方法");
        doGet(req,resp);
    }

}




3.web.xml 中的配置

<!-- servlet 标签给 Tomcat 配置 Servlet 程序 -->
<servlet> 
	<!--servlet-name 标签 Servlet 程序起一个别名(一般是类名) -->
	<servlet-name>ServletDemo</servlet-name> 
	<!--servlet-class 是 Servlet 程序的全类名-->
	<servlet-class>com.xyh.servlet.ServletDemo</servlet-class> 
</servlet> 
<!--servlet-mapping 标签给 servlet 程序配置访问地址-->
<servlet-mapping> 
	<!--servlet-name 标签的作用是告诉服务器,
	当前配置的地址给哪个 Servlet 程序使用-->
	<servlet-name>ServletDemo</servlet-name> 
	<!--url-pattern 标签配置访问地址 
	/ 斜杠在服务器解析的时候,表示地址为:http://ip:port/工程路径 
	 /hello 表示地址为:http://ip:port/工程路径/hello  -->
	<url-pattern>/hello</url-pattern>
 </servlet-mapping>



版权声明:本文为dizzy256原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。