servlet总结

本文详细介绍了JSP如何转换为Servlet的过程,web.xml文件中Servlet的配置方式,包括名称、映射及启动优先级设置。此外,还深入探讨了Servlet的实现类与生命周期,以及如何处理GET和POST请求。

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

1、所有的JSP最终都会转换成servlet。

2、web.xml是servlet的入口,配置1)、名称;2)、mapping映射

       <!-- 配置Servlet的名字 -->
<servlet>
<!-- 指定Servlet的名字,
相当于指定@WebServlet的name属性 -->
<servlet-name>firstServlet</servlet-name>
<!-- 指定Servlet的实现类 -->
<servlet-class>lee.FirstServlet</servlet-class>

<!-- 配置应用启动时,创建Servlet实例,相当于指定@WebServlet的loadOnStartup属性 越小优先级越高-->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 配置Servlet的URL -->
<servlet-mapping>
<!-- 指定Servlet的名字 -->
<servlet-name>firstServlet</servlet-name>
<!-- 指定Servlet映射的URL地址,
相当于指定@WebServlet的urlPatterns属性-->
<url-pattern>/aa</url-pattern>
</servlet-mapping>

3、servlet实现类必须继承HttpServlet类,默认的post、get和service方法方法关系如下:


doGet()和doPost()方法源码解析

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取协议 
        String protocol = req.getProtocol();
//获取http.method_get_not_supported的国际化字符串
        String msg = lStrings.getString("http.method_get_not_supported");
        if(protocol.endsWith("1.1")) {
//如果是HTTP/1.1,返回405禁止访问方法错误
            resp.sendError(405, msg);
        } else {
//如果不是HTTP/1.1,返回400错误的请求错误  
            resp.sendError(400, msg);
        }
 
    }
 
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String protocol = req.getProtocol();
        String msg = lStrings.getString("http.method_post_not_supported");
        if(protocol.endsWith("1.1")) {
            resp.sendError(405, msg);
        } else {
            resp.sendError(400, msg);
        }
 
}


所有如果不区分post和get时可以直接重写service方法要其直接返回结果转向到页面,如果要区分时需要重写post和get。

4、servlet生命周期:

Servlet生命周期分为三个阶段:

  1,初始化阶段  调用init()方法

  2,响应客户请求阶段  调用service()方法

  3,终止阶段  调用destroy()方法

Servlet初始化阶段:

  在下列时刻Servlet容器装载Servlet:

    1,Servlet容器启动时自动装载某些Servlet,实现它只需要在web.XML文件中的<Servlet></Servlet>之间添加如下代码:

<loadon-startup>1</loadon-startup>

    2,在Servlet容器启动后,客户首次向Servlet发送请求

    3,Servlet类文件被更新后,重新装载Servlet

  Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。在Servlet的整个生命周期内,init()方法只被调用一次。

Servlet响应请求阶段:

  对于用户到达Servlet的请求,Servlet容器会创建特定于这个请求的ServletRequest对象和ServletResponse对象,然后调用Servlet的service方法。service方法从ServletRequest对象获得客户请求信息,处理该请求,并通过ServletResponse对象向客户返回响应信息。

  对于Tomcat来说,它会将传递过来的参数放在一个Hashtable中,该Hashtable的定义是:

private Hashtable<String String[]> paramHashStringArray = new Hashtable<String String[]>();

  这是一个String-->String[]的键值映射。

  HashMap线程不安全的,Hashtable线程安全。

-----------------------------------------------------------------------------------------------------------------------------------

Servlet终止阶段:

  当WEB应用被终止,或Servlet容器终止运行,或Servlet容器重新装载Servlet新实例时,Servlet容器会先调用Servlet的destroy()方法,在destroy()方法中可以释放掉Servlet所占用的资源。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值