• web.xml servlet、servlet-mapping配置


    Servlet 常称为服务器端小程序,即运行在服务器端的程序,用于处理及响应客户的请求

    Servlet类 是个特殊的java类,继承于HttpServlet

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

    方法

    客户端通常只有GET和POST两种请求方式,Servlet为了响应则两种请求,必须重写doGet()和doPost()方法。大部分时候,Servlet对于所有的请求响应都是完全一样的,此时只需要重写service()方法即可响应客户端的所有请求。

    另外,HttpServlet还有两个方法:

    (1). init(ServletConfig config):创建Servlet实例时,调用该方法的初始化Servlet资源。

    (2). destroy():销毁Servlet实例时,自动调用该方法的回收资源。

    通常无需重写init()和destroy()两个方法,除非需要在初始化Servlet时,完成某些资源初始化的方法,才考虑重写init()方法,如果重写了init()方法,应在重写该方法的第一行调用super.init(config),该方法将调用HttpServlet的init()方法。

    如果需要在销毁Servlet之前,先完成某些资源的回收,比如关闭数据库连接,才需要重写destory方法()。

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

    Servlet创建时机

    (1). 客户端第一次请求某个Servlet时,系统创建该Servlet的实例,大部分Servlet都是这种Servlet。

    (2). Web应用启动时立即创建Servlet实例,即load-on-start Servlet

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

    Servlet的生命周期

    (1). 创建Servlet实例。

    (2). Web容器调用Servlet的init()方法,对Servlet进行初始化。

    (3). Servlet初始化后,将一直存在于容器中,用于响应客户端请求,如果客户端发送GET请求,容器调用Servlet的doGet()方法处理并响应请求;如果客户端发送POST请求,容器调用Servlet的doPost()方法处理并响应请求。或者统一使用service()方法处理来响应用户请求。

    (4). Web容器决定销毁Servlet时,先调用Servlet的destory()方法,通常在关闭Web应用时销毁Servlet实例

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

    Servlet配置

    配置Servlet有两种方式:

    (1). 在Servlet类中使用@WebServlet Annotation进行配置。

    (2). 在web.xml文件中进行配置。

    我们用web.xml文件来配置Servlet为例

    <servlet>

    声明一个Servlet

    <icon>、<display-name>和<description>元素的用法和<filter>的用法相同。

    <init-param>元素与<context-param>元素具有相同的元素描述符,可以使用<init-param>子元素将初始化参数名和参数值传递给Servlet,

    <description>:为Servlet指定一个文本描述。

    <display-name>:为Servlet提供一个简短的名字被某些工具显示。

    <icon>:为Servlet指定一个图标,在图形管理工具中表示该Servlet。

    <servlet>必须含有<servlet-name>和<servlet-class>,或者<servlet-name>和<jsp-file>。 描述如下:

    1). <servlet-name>用来定义servlet的名称,该名称在整个应用中必须是惟一的。

    2). <servlet-class>用来指定servlet的完全限定的名称

    3). <jsp-file>用来指定应用中JSP文件的完整路径。这个完整路径必须由/开始。

    备注:JSP文件可以被编译成Servlet

    <load-on-startup>

    如果load-on-startup元素存在,而且也指定了jsp-file元素,则JSP文件会被重新编译成Servlet,同时产生的Servlet也被载入内存。

    <load-on-startup>的内容可以为空,或者是一个整数。这个值表示由此servlet被Web容器载入内存的顺序,小的会被先加载

    例如:有两个Servlet元素都含有<load-on-startup>子元素,则<load-on-startup>子元素值较小的Servlet将先被加载。

    如果<load-on-startup>子元素值为空或负值,则由Web容器决定什么时候加载Servlet。如果两个Servlet的<load-on-startup>子元素值相同,则由Web容器决定先加载哪一个Servlet。<load-on-startup>1</load-on-startup>表示启动容器时,初始化Servlet。

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

    Servlet-mapping配置 

    <servlet-mapping>

    1). <servlet-name>:Servlet的名字,与<servlet>元素中声明的名字一致。

    2). <url-pattern>:指定相对于Servlet的URL的路径。该路径相对于web应用程序上下文的根路径。<servlet-mapping>将URL模式映射到某个Servlet,即该Servlet处理的URL。

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

    加载Servlet的过程 

    容器的Context对象对请求路径(URL)做出处理,去掉请求URL的上下文路径后,按路径映射规则和Servlet映射路径(<url- pattern>)做匹配,如果匹配成功,则调用这个Servlet处理请求。 
     

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

    ServletConfig

    访问Servlet配置参数通过ServletConfig对象来完成,ServletConfig提供如下方法:

    java.lang.String.getInitParameter(java.lang.String name):用于获取初始化参数

    ServletConfig获取配置参数的方法和ServletContext获取配置参数的方法完全一样,只是ServletConfig是取得当前Servlet的配置参数,而ServletContext是获取整个Web应用的配置参数。
     

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

    引入springmvc.xml

    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:/spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
     
    例子:
    <servlet>  
        <servlet-name>business</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
        <init-param>  
          <param-name>publishContext</param-name>  
          <param-value>false</param-value>  
        </init-param>  
        <load-on-startup>1</load-on-startup>  
    </servlet>  
    <!-- </span><span style="font-family:SimSun;">用户登出</span><span style="font-family:Times New Roman;"> -->  
    <servlet>  
        <servlet-name>LogOutServlet</servlet-name>  
        <servlet-class>com.yonyou.mcloud.cas.web.servlet.LogOutServlet</servlet-class>  
        <init-param>  
          <param-name>serverLogoutUrl</param-name>  
          <param-value>https://dev.yonyou.com:443/sso-server/logout</param-value>  
        </init-param>  
        <init-param>  
          <param-name>serverName</param-name>  
          <param-value>http://10.1.215.40:80/business/</param-value>  
        </init-param>  
    </servlet>  
    <!--****************************servlet</span><span style="font-family:SimSun;">映射关系配置</span><span style="font-family:Times New Roman;">*************************-->  
    <servlet-mapping>  
        <servlet-name>LogOutServlet</servlet-name>  
        <url-pattern>/logout</url-pattern>  
    </servlet-mapping>  
    <servlet-mapping>  
        <servlet-name>business</servlet-name>  
        <url-pattern>/</url-pattern>  
    </servlet-mapping>
  • 相关阅读:
    CentOS6 配置阿里云 NTP 服务
    使用docker-compose运行nginx容器挂载时遇到的文件/目录问题
    Springboot配置文件参数使用docker-compose实现动态配置
    Dockerfile文件全面详解
    docker 生成mysql镜像启动时自动执行sql
    CentOS无法识别NTFS格式U盘完美解决方案
    网络模型与网络策略
    k8s更换网络插件:从flannel更换成calico
    数据采集实战(四)-- 线性代数习题答案下载
    leedcode 146. LRU 缓存机制(哈希+双向链表)
  • 原文地址:https://www.cnblogs.com/yanze/p/10457924.html
Copyright © 2020-2023  润新知