JAVA--Servlet总结

一.什么是Servlet?

Jsp的前身就是Servlet。

Servlet是在服务器上运行的小程序,一个Servlet就是一个Java类,并且可以通过“请求-响应”编程模型来访问这个驻留在服务器内存里的Servlet程序。

二.Tomcat容器

    Tomcat容器分为四个等级,Servlet容器管理Context容器,一个Context对应一个Web工程。

三.Servlet执行流程

请求<a href="servlet/HelloServlet">        ===>    找web.xml

找到相同的url-pattern。然后根据servlet-mapping里面的name:helloServlet,去找对应的Servlet,再根据class找到对应的Servlet类,根据请求类型读取 doGet(),doPost().....方法。

四.Servlet生命周期

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

init()方法是工作在单线程的环境下,开发者不必考虑线程安全的问题。在Servlet的整个生命周期内,init()方法只被调用一次。Servlet长期驻留在内存中,当Servlet实例一旦被加载后,那么这个Servlet对象就会长期保留在服务器内存中。

(2)响应客户请求阶段,调用service()方法,由service()方法根据提交方式选择执行doGet ()或者doPost()等方法。

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

Servlet的执行顺序严格按照先构造方法,再初始化方法,然后是service方法,由service()方法再转去做doGet()或者doPost()方法,最后在服务器停止工作的时候,调用destroy()方法。

五.Servlet容器装载Servlet的时刻

(1)Servlet启动时,自动装载某些servlet,实现它只需要在web.xml文件中的<servlet></servlet>之间填写如下代码<loadon-startup></loadon-startup>,数字越小表示越优先。

<servlet>
        <servlet-name>TestServlet1</servlet-name>
        <servlet-class>servlet.TestServlet1</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>TestServlet1</servlet-name>
        <url-pattern>/servlet/TestServlet1</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>TestServlet2</servlet-name>
        <servlet-class>servlet.TestServlet2</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>TestServlet2</servlet-name>
        <url-pattern>/servlet/TestServlet2</url-pattern>
    </servlet-mapping>

TestServlet2的load-on-startup更小一些,会先装载。可以看到装载顺序如下。

(2)在servlet容器启动后,客户首次像servlet发送请求;

(3)servlet文件被更新后,重新装载servlet。

六.获取初始化参数

在web.xml中配置servlet时,可以配置一些初始化参数,而在servlet中可以通过servletConfig接口提供的方法来取得这些参数。

配置如下:

<servlet>
        <servlet-name>RegServlet</servlet-name>
        <servlet-class>servlet.RegServlet</servlet-class>
        <init-param>
            <param-name>username</param-name>
            <param-value>admin</param-value>
        </init-param>
        <init-param>
            <param-name>password</param-name>
            <param-value>123456</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>RegServlet</servlet-name>
        <url-pattern>/servlet/RegServlet</url-pattern>
    </servlet-mapping>

使用方式:

@Override
    public void init() throws ServletException {
        this.setUsername(this.getInitParameter("username"));
        this.setPassword(this.getInitParameter("password"));
    }

猜你喜欢

转载自blog.csdn.net/third_/article/details/84991828