Tomcat的Web应用配置
基本概念
-
web.xml是web应用的描述文件,支持来自于Servlet规范定义的元素以及属性
-
在Tomcat中 ,Web应用的描述信息包括:
- tomcat/conf/web.xml中的默认配置
- Web应用的WEB-INF/web.xml的定制配置
| 属性 | 描述 |
|---|---|
| welcom-file-list | |
| servlet-mapping | |
| servlet | |
| filter-mapping | |
| listener | |
| context-param | 用于添加ServletContext初始化参数 配置了键值对,可以使用javax.servlet.ServletContext的getInitParameter() 方法获取参数 |
| absolute-ordering | |
| adminstered-object | |
| connection-factory | |
| data-source | |
| deny-uncovered-http-method | |
| description | |
| display-name | |
| distributable | |
| ejb-local-ref | |
| ejb-ref | |
| env-entry | |
| error-page | |
| icon | |
| jms-connection-factory | |
| jms-destination | |
| jsp-config | |
| locale-encoding-mapping-list | |
| login-config | |
| mail-session | |
| message-destination | |
| message-destination-ref | |
| mime-mapping | |
| module-name | |
| persistence-context-ref | |
| persistence-unit-ref | |
| post-construct | |
| pre-destory | |
| resource-ref | |
| security-constraint | |
| security-role | |
| service-ref | |
| session-config |
ServletContext初始化参数配置
-
context-param:
- 用于添加ServletContext初始化参数
- 配置了一个键值对,可以通过javax.servlet.ServletContext的getInitParameter() 方法获取参数
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-*.xml</param-value>
<description>Spring ServletContext Config File Location</description>
</context-param>
Session会话配置
-
session-config:
- 用于配置web应用会话相关配置.包括超时时间 ,Cookie配置以及会话追踪模式
- 会覆盖server.xml和context.xml中的配置
<session-config>
<session-timeout>30</session-timeout>
<cookie-config>
<name>JSESSIONID</name>
<domain>www.oxford.com</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>
-
session-timeout: 会话超时时间.单位为分钟
-
cookie-config: 配置会话追踪的cookie
- name: Cookie的名称
- domain: Cookie的域名
- path: Cookie的路径
- comment: 备注说明
- http-only: Cookie只能通过HTTP方式进行访问.无法在JS中进行读取和修改,可以增加网站访问的安全性
- secure: Cookie只能通过HTTPS连接的方式传递到服务器,不会通过HTTP进行该Cookie的传递.该配置影响的是浏览器到服务器之间的传递,不会影响服务器端的Cookie对象
- max-age: Cookie的生存周期,单位为秒.默认值为 -1, 表示浏览器关闭时,则会话Cookie就消失
-
tracking-mode: 配置会话追踪模式 .Servlet3中支持三种会话追踪模式 - COOKIE, URL, SSL
-
COOKIE: HTTP COOKIE的会话追踪模式是最常用的会话追踪机制 .Servlet规范要求都需要支持Cookie追踪
-
URL:
- URL重写是最基本的会话追踪机制,当客户端不支持Cookie时,可以采用URL重写的方式
- 当采用URL追踪模式时,请求路径需要包含会话标识信息 ,Servlet容器会根据路径中的会话标识设置请求的会话信息.比如http://www.oxford.com/user/index.xml;jessionid=11223
- SSL: 对于SSL请求,通过设置SSL会话标识确定请求的会话标识
-
Servlet配置
-
Servlet配置主要包括两部分配置:
- servlet
- servlet-mapping
<servlet>
<servlet-name>servlet</servlet-name>
<servlet-class>com.oxford.web.Servlet</servlet-class>
<init-param>
<param-name>fileName</param-name>
<param-value>init.conf</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<enable>true</enable>
</servlet>
<servlet-mapping>
<servlet-name>servlet</servlet-name>
<!-- 可以配置多个映射路径 -->
<url-pattern>*.do</url-pattern>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
- servlet-name: 指定servlet的名称,该属性在web.xml中是唯一的
- servlet-class: 指定servlet类名
- init-param: 指定servlet的初始化参数,在应用中可以通过HttpServlet.getInitParameter获取
- load-on-startup: 用于控制Web应用启动时 ,Servlet的加载顺序. 当值小于0,Web应用启动时,不加载该Servlet. 在第一次访问Servlet时加载
- enable: 指定Servlet是否处理请求. 如果为false表示Servlet不处理任何请求
Listener监听器配置
-
listener:
- 用于监听Servlet中的事件. 比如context, request, session对象的创建,修改和删除,并且触发相应的事件
- Listener是一种观察者模式,在Servlet中主要对context,request,session的生命周期进行监控
- ServletContextListener的执行顺序和web.xml中的配置顺序一致,停止时顺序相反
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
Filter过滤器配置
-
filter:
- 用于配置Web应用过滤器,用来过滤资源请求及响应
- 适用于认证,日志,加密,数据转换等应用场景
<filter>
<filter-name>filter</filter-name>
<filter-class>com.oxford.web.Filter</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>filter<filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- filter-name: 用于指定过滤器名称,在web.xml中,过滤器名称必须唯一
- filter-class: 配置过滤器的全限定类名,该类必须实现Filter接口
- async-supported: 配置过滤器是否支持异步
- init-param: 配置Filter的初始化参数,可以配置多个.通过FilterConfig.getInitParameter获取
- url-pattern: 配置过滤器需要拦截的URL
欢迎页面配置
- 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>
- 按照从上往下的顺序请求相关页面
错误页面配置
- error-page: 用于配置Web应用响应异常时定向到的页面,支持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.jsp</location>
</error-page>