• java-Servlet生命周期与jsp


    1. 容器如何处理请求资源路径?

    比如,在浏览器地址栏输入:ip地址路径/abc.html.

    Step1.默认访问的一个servlet,会从web.xml查找有没有匹配的servlet.
                    web.xml url-pattern

    匹配规则:

    (1) 精确匹配: <url-pattern>/abc.html</url-pattern>

    (2) 统配符匹配:使用*匹配0多个字符
    <url-pattern>/*</url-pattern>

    (3) 后缀匹配:*.开头,后接任意的字符
    <url-pattern>*.do</url-pattern >
    匹配所有以.do结尾的请求

    Step2.如果没有匹配的servlet,则查找对应的文件.

    1. 一个servlet处理多种请求:

    a) 采用后缀匹配,比如<url-pattern>*.do</url-pattern >

    b) 分析请求资源路径,依据分析的结果进行不同的处理.

    1. Servlet声明周期:

    (1) 什么servlet的声明周期?
    容器如何创建servlet实例(对象),如何对其进行初始化处理,如何调用其方法处理请求,以及如何销毁其实例的整个过程(容器如何管理servlet).

    (2) 生命周期分成几个阶段?
    A.实例化:

    1) 什么是实例化?
    容器调用servlet的构造器创建对应的对象;

    2) 容器在什么时候实例化?
    2.1)默认情况下,容器在收到请求,才会创建实例.
    2.2)容器只会创建一个实例(单例).
    2.3)容器启动之后立即创建其实例需要额外配置.

    B.初始化

    1)什么是初始化?
    实例化之后容器调用该实例的init方法(该方法之后调用一次).

    2)GenericServlet已经提供了init方法的实现
    将容器传递过来的servletconfig对象保存下来,并提供一个getConfig方法

    3)初始化参数
    3.1配置出书画参数(wen.cml)
    3.2调用servletconfig提供的getinitparameter方法

    4)可以重写genericservlet提供的init方法来实现自己的初始化逻辑,注意:建议覆盖init(),而不是init(config)

    C.调用(就绪)

    1).什么是就绪?
    容器收到请求之后,会调用servlet实例的service方法处理请求

    2).httpservlet已经实现了service方法.
    依据请求类型类调用对应的do的方法;比如get请求调用doget方法,post请求会调用dopost方法.

    3)可以重写httpservletservice方法或者重写httpservletdoget.dopost方法写处理逻辑.

    D.销毁

    1)什么是销毁.
    容器在删除servlet实例,会调用该实例的destroy方法(destroy方法只会执行一次).

    2)可以override genericservlet提供的destroy方法来实现自己的销毁处理逻辑.

    (3) 相关的几个接口与类(了解):

    1. servlet接口:

    init (servletConfig config)

    service(?,?)

    destroy()

    注:httpservletrequestservletrequest的子接口

    Httpservletresponseservletresponse的子接口

    1. GenericServlet抽象类

    实现servlet接口中的部分方法(init,destroy)

    1. Httpservlet

    继承GenericServlet抽象类,主要实现了service方法

    1. Jsp(java server page)

    (1)jsp是什么?
        sun公司制定的一种服务器端动态页面技术规范.
        注:jsp是一个以.jsp后缀的文件,该文件的内容主要是html和少量java代码,容器会将这个文件转化成一个对应的servlet然后执行(jsp的本质就是一个servlet).

    (2)如何jsp?
           1.写一个以.jsp为后缀的文件.

    2.在该文件里,可以添加如下内容:

    2.1.html(css,js):直接写

    2.2.java代码:

    a.java代码片段<%  “java代码”  %>

    b.jsp表达式<%= “java表达式” %>

    3.隐含对象:

    a.什么是隐含对象?
    jsp文件里面可以直接使用的对象(比如out,request,response)

    b.问什么可以直接使用?
    容器会自动添加获得这些对象的代码.

    4.指令:

    a.什么是指令?
    通知容器,在将jsp文件转化为servlet类时,做一些额外的处理,比如导包.

    b.page指令:

    import属性:指定要导入的包,比如: <%@page import="java.util.Date"%>

    (3)jsp是如何运行的?

    阶段:容器先将jsp文件转换成一个对应的servlet(.java文件)
    html(css,js)---->service方法里,使用out.write输出.
    <%  %>----->service方法里照搬.

    <%= java表达式” %>---->serviceout里面输出

    阶段:容器调用该servlet来处理请求(包括编译,实例化…).

     

  • 相关阅读:
    第十二周作业
    十一周作业
    第十周作业
    第九周作业
    2019年春第八周作业
    第五周课程总结&实验报告(三)
    第四周课程总结&实验报告(二)
    第三周课程总结&实验报告(一)
    第二周课程总结
    2019春总结作业
  • 原文地址:https://www.cnblogs.com/CaiNiao-TuFei/p/7688959.html
Copyright © 2020-2023  润新知