<7>手动创建Servlet程序

本文介绍了在实际项目开发中如何使用HttpServlet来创建Servlet程序。首先,需要创建一个类继承自HttpServlet,并重写doGet和doPost方法以处理HTTP请求。接着,通过web.xml配置Servlet的访问路径。HttpServlet简化了Servlet的使用,内部已处理了初始化和service方法,开发者只需关注业务逻辑。示例中展示了如何编写一个简单的ServletDemo类,并配置其在web.xml中的映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  一般在实际项目开发中,都是使用继承 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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值