Java Web复习四(Servlet)

本文详细介绍了Java Web中的Servlet,包括其执行过程、生命周期、初始化配置信息的获取以及如何在Servlet中进行页面跳转。此外,还探讨了过滤器的概念与实现,以及监听器的应用,如对application范围属性的监听和应用的创建销毁监听。
摘要由CSDN通过智能技术生成

前言

接着上一篇Java Web复习三

1、什么是Servlet

Servlet程序是java对CGI的实现,但是与传统的CGI不同的是,Servlet采用了多线程的处理方式,这样使得Servlet程序的运行效率比传统的CGI更加的高。

第一个Servlet程序

/**
 * @author xiaoD
 * Description: 第一个servlet程序
 */
public class FirstServlet extends HttpServlet {
   

    /**
     * 构造方法,执行父类的构造方法
     */
    public FirstServlet() {
        super();
    }

    /**
     * 
     * @author xiaoD
     * Description: 重写init(servlet初始化)
     */
    public void init() throws ServletException {

    }

    /**
     * 
     * @author xiaoD
     * Description: 重写destroy(销毁servlet)
     */
    public void destroy() {
        super.destroy(); 

    }
    /**
     * 
     * @author xiaoD
     * Description: 重写doGet(处理get请求)
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.print("welcome");
        out.flush();
        out.close();
    }

    /**
     * 
     * @author xiaoD
     * Description: 重写doPost(处理post请求)
     * 因为在java程序中,不管get和post请求,获取参数的方法都一样,所以直接在post中调用get即可
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doGet(request, response);
    }

web.xml进行配置

<servlet>
   <servlet-name>FirstServlet</servlet-name>
   <servlet-class>xiaoD.FirstServlet</servlet-class>
 </servlet>
 <servlet-mapping>
    <servlet-name>FirstServlet</servlet-name>
    <url-pattern>/index.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
   <servlet-name>FirstServlet</servlet-name>
   <url-pattern>/FirstServlet</url-pattern>
 </servlet-mapping>

2、Servlet的执行过程

这里写图片描述
1. 客户端向服务器发送HTTP请求
2. 服务器接收该请求,并将其发送给Servlet。如果Servlet尚未被加载,服务器将把它加载到Java虚拟机中执行
3. Servlet接收请求并处理
4. Serv将处理结果返回给服务器
5. 服务器收到处理结果,并返回给客户端

3、Servlet的生命周期

Servlet的生命周期包括加载程序,初始化,服务,销毁,卸载五个部分

1、加载程序

当web容器启动的时候,或者第一次使用这个Servlet的时候,Web容器会对Servlet进行实例化。

2、初始化

当Servlet被实例化以后,容器将调用init()方法初始化这个对象,初始化的目的是为了让Servlet对象在处理一些客户端请求前完成一些初始化的工作,比如建立数据库连接,读取资源文件等。

3、处理服务

当有请求提交的时候,Servlet将调用service方法(也就是处理Get请求或者Post请求)

4、销毁

当Web容器关闭或者检测到一个Servlet要从容器中删除的时候,会自动调用destroy方法,释放占有的资源

5、卸载

当一个Servlet调用完destroy方法以后,将等待垃圾收集器回收。

Servlet的整个生命周期都是有Web容器控制的,我们只需要实现一个doGet(或者doPost)方法即可。Web容器会自动加载Servlet,自动会Servlet进行初始化。当接受到客户端的请求的时候,会自动调用service方法(如果我们重写了service方法,那么web请求就直接执行我们的service方法,我们写的Get和Post请求都将无效),Servlet的设计采用了模板方法模式,如果想要了解更多,可以看我的另外一篇文章设计模式之模板方法模式。另外在Servlet中的request,response和在jsp的内置对象中request和response都是同一个接口的对象,所以使用方法也是一样。

4、获取初始化配置信息

在jsp的内置对象中,可以通过config对象获取初始化配置信息,因为都是对同一个接口的实现,这个也同样可以获取

在init方法中获取config对象

public void init(ServletConfig config) throws ServletException {
    System.out.println(config.getInitParameter("name"));
}

web.xml进行配置

<servlet>
  <servlet-name>FirstServlet</servlet-name>
  <servlet-class>xiaoD.FirstServlet</servlet-class>
  <init-param>
    <param-name>name</param-name>
    <param-value>xiaoD
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值