Tomcat08——web应用的配置

落爺英雄遲暮 提交于 2020-01-26 19:57:24

        web.xml是web应用的描述文件,它支持的元素及属性来自Servlet的规范定影。在tomcat中,web应用的描述信息包括tomcat/conf/web.xml中默认配置以及web应用中的WEB-INF/web.xml下的定制配置。WEB-INF/web.xml下的标签很多,接下来介绍几个比较重要的标签。

1. ServletContext初始化参数

        我们可以通过<context-param>添加ServletContext初始化参数,它配置了一个键值对,这样我们可以在应用程序中使用javax.servlet.ServletContext.getInitParameter()方法获取参数。

以下是Spring项目的配置

<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>classpath:applicationContext-*.xml</param-value>
    <description>Spring config File Location</description>
</context-param>

接下来我们自定义context-param,在servlet中获取并使用该参数

1. 配置:

<context-param>
	<param-name>zoudmTest</param-name>
	<param-value>test1001</param-value>
</context-param>

2. 在servlet中获取该参数

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String str = request.getServletContext().getInitParameter("zoudmTest");
        System.out.println("context-param = " + str);

    }

运行结果如图:

2. session-config会话配置

        会话是服务器与浏览器建立的一个链接。<session-config>用于配置web应用会话,包括超时时间、cookie配置以及会话追踪模式,他将覆盖server.xml和context.xml中的配置。

<session-config>
        <session-timeout>30</session-timeout>
        <cookie-config>
            <name>JESSIONID</name>
            <domain>localhost</domain>
            <path>/</path>
            <comment>session Cookie</comment>
            <http-only>true</http-only>
            <secure>false</secure>
            <max-age>3600</max-age>
        </cookie-config>
        <tracking-mode>COOKIE</tracking-mode>
    </session-config>

配置解析:

1)session-timeout:会话超时时间,单位分钟

2)cookie-config:用于配置会话追踪Cookie

        1. name:cookie的名称

        2. domain:Cookie的域名

        3. path:Cookie的路径

        4. comment:注释

        5. http-only:cookie只能以http方式进行访问,js无法获取或修改,此项配置可以增加网络访问的安全性。

        6. secure:此cookie只通过HTTPS连接传到服务器,HTTP连接不会传递该信息。

              注意:从浏览器传递到服务器,服务器端的cookie对象不受此项影响。

        7. max-age:以秒为单位表示cookie的生存期,默认为-1,表示是会话cookie,浏览器关闭时就会消失

3)tracking-mode:用于配置会话追踪模式,Servlet3.0版本中支持追踪模式:COOKIE、URL、SSL

        1. COOKIE:通过HTTP COOKIE追踪会话是最常用的会话追踪机制,而且Servlet规范也要求所有的Servlet规范都需要支持COOKIE追踪。

        2. URL:URL重写是最基本的会话追踪机制,当客户端不支持COOKIE时,可以采用URL重写的方式,当采用该方式的时候,请求路径需要包含会话标识信息,Servlet容器会根据路径中的会话标识设置请求的会话信息。

例如:http://localhost/user/index.html;jessionid=123456789

        3. SSL :对于SSL请求,通过SSL会话标识确定请求会话标识。

3. Servlet配置

servlet配置主要是两部分,servlet和servlet-mapping

servlet标签用于配置servlet的具体类,servlet-mapping标签用于配置servlet的请求路径,除了基本的配置以外,还有一些其他的配置,例如:

<servlet>
        <servlet-name>myServlet</servlet-name>
        <servlet-class>com.bjc.web.servlet.UserServlet</servlet-class>
        <init-param>
            <param-name>fileName</param-name>
            <param-value>init.conf</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
        <enabled>true</enabled>
    </servlet>
    <servlet-mapping>
        <servlet-name>myServlet</servlet-name>
        <url-pattern>*.do</url-pattern>
        <url-pattern>/myServlet/*</url-pattern>
    </servlet-mapping>

配置解析:

1)servlet-name:指定servlet的名称,该属性在web.xml中唯一。

2)servlet-class:用于指定servlet的类名

3)init-param:初始化参数配置,指针对当前servlet有效,在应用中可以通过HttpServlet.getInitParameter获取。

4)load-on-startup:用于控制web应用启动时,当前servlet的加载顺序,值小于0,web应用启动的时候不加载该servlet,那么什么时候加载了?在第一次访问的时候在加载。当值大于等于0的时候,表示应用层启动的时候就加载。

5)enabled:值为true、false。false表示servlet不处理任何请求

4. Listener配置

        Listener用于监听servlet中的事件,例如:context、request、session对象的创建,修改,删除,并触发响应事件。Listener是观察者模式的实现,在servlet中主要用于对context、request、session对象的生命周期进行监控。

        在Servlet2.5规范中定义了8种Listener。在启动时,ServletContextListener的执行顺序与web.xml中配置的执行顺序一致,停止时执行顺序相反。

<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

5. Filter配置

        filter用于配置web应用过滤器,用来过滤资源请求及响应。经常用于认证、日志、加密、数据转换等操作,配置如下:

<filter>
        <filter-name>myFilter</filter-name>
        <filter-class>com.bjc.web.MyFilter</filter-class>
        <async-supported>true</async-supported>
        <init-param>
            <param-name>language</param-name>
            <param-value>CN</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>myFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

配置说明:

1)filter-name:用于指定过滤器的名称,在web.xml中,过滤器的名称唯一

2)filter-class:过滤器的全限定名,该类必须实现Filter接口

3)async-supported:该顾虑器是否支持异步

4)init-param:用户配置Filter的初始化参数,可以配置多个,可以通过FilterConfig.getInitParameter来获取

5)url-pattern:指定过滤器要拦截的url

6. 欢迎页面配置

welcome-file-list 用于指定web应用的欢迎文件列表

<welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

尝试请求的顺序,从上到下。

注意:如果在tomcat的安装文件的web.xml中有配置欢迎页面,那么在web应用的web.xml中就可以继承这个配置。如果在web应用的web.xml中配置了欢迎页面,则会覆盖tomcat中配置的欢迎页面。

7. 错误页面配置

error-page用于配置web应用访问异常时定向到的页面,支持HTTP响应码和异常类两种形式。

HTTP响应码方式:

<error-page>
        <error-code>404</error-code>
        <location>/404.html</location>
    </error-page><error-page>
        <error-code>500</error-code>
        <location>/500.html</location>
    </error-page>

异常类型方式:

<error-page>
        <exception-type>java.lang.Exception</exception-type>
        <location>/error.html</location>
    </error-page>

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!