Category 世界杯乳神

1. web.xml各版本区别

2. web.xml配置详解

2.1 java web项目启动加载顺序

2.2 web.xml中定义的元素

web.xml文件是Java Web项目中的一个配置文件,主要用于配置欢迎页、Filter、Listener、Servlet等,但并不是必须的,一个Java Web项目没有web.xml文件也是照样能跑起来的。

1. web.xml各版本区别

首先来看一下Tomcat官网的Servlet和JSP规范规范与的Apache Tomcat版本之间的对应关系,如图:

从中可以清晰的看到不同版本的web.xml文件要使用相应版本的Tomcat服务器。

下面是各版本的web.xml配置的头部声明:

servlet 2.3

servlet 2.4

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

version="2.4">

servlet 2.5

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

version="2.5">

servlet 3.0

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

version="3.0">

servlet 3.1

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee

http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

version="3.1">

servlet 4.0

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"

version="4.0">

Tomcat在激活、加载、部署web应用时,会解析加载${CATALINA_HOME}/conf目录下所有web应用通用的web.xml,然后解析加载web应用目录中的WEB-INF/web.xml。如果没有WEB-INF/web.xml文件,tomcat会输出找不到的消息,但仍然会部署并使用web应用程序,因此,这个web.xml并不是必要的,不过通常最好还是让每一个上线的web应用程序都有一个自己的WEB-INF/web.xml。

conf/web.xml文件中的设定会应用于所有的web应用程序,而web应用程序的WEB-INF/web.xml中的设定只应用于该应用程序本身。

2. web.xml配置详解

2.1 java web项目启动加载顺序

(1)启动WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml的两个节点:

(2)容器创建一个ServletContext(上下文);

(3)容器将转化为键值对,并交给ServletContext;

(4)容器创建中的类实例,即创建监听;

(5)容器初始化,web.xml中可以定义多个 filter,初始化每个 filter 时,是按照 filter 配置节出现的顺序来初始化的,当请求资源匹配多个 filter-mapping 时,filter 拦截资源是按照 filter-mapping 配置节出现的顺序来依次调用 doFilter() 方法的;

(6)容器初始化, servlet 同 filter 类似。

那么,web项目启动时,可以知道web.xml文件各个节点的加载顺序:context-param -> listener -> filter -> servlet

2.2 web.xml中定义的元素

web-app>

定义了WEB应用的名字

声明WEB应用的描述信息

context-param元素声明应用范围内的初始化参数。

过滤器元素将一个名字与一个实现javax.servlet.Filter接口的类相关联。

一旦命名了一个过滤器,就要利用filter-mapping元素把它与一个或多个servlet或JSP页面相关联。

servlet API的版本2.3增加了对事件监听程序的支持,事件监听程序在建立、修改和删除会话或servlet环境时得到通知。Listener元素指出事件监听程序类。

在向servlet或JSP页面制定初始化参数或定制URL时,必须首先命名servlet或JSP页面。Servlet元素就是用来完成此项任务的。

服务器一般为servlet提供一个缺省的URL:http://host/webAppPrefix/servlet/ServletName.但是,常常会更改这个URL,以便servlet可以访问初始化参数或更容易地处理相对URL。在更改缺省URL时,使用servlet-mapping元素。

如果某个会话在一定时间内未被访问,服务器可以抛弃它以节省内存。 可通过使用HttpSession的setMaxInactiveInterval方法明确设置单个会话对象的超时值,或者可利用session-config元素制定缺省超时值。

如果Web应用具有想到特殊的文件,希望能保证给他们分配特定的MIME类型,则mime-mapping元素提供这种保证。

指示服务器在收到引用一个目录名而不是文件名的URL时,使用哪个文件。

在返回特定HTTP状态代码时,或者特定类型的异常被抛出时,能够制定将要显示的页面。

对标记库描述符文件(Tag Libraryu Descriptor file)指定别名。此功能使你能够更改TLD文件的位置,而不用编辑使用这些文件的JSP页面。

声明与资源相关的一个管理对象。

声明一个资源工厂使用的外部资源。

制定应该保护的URL。它与login-config元素联合使用

指定服务器应该怎样给试图访问受保护页面的用户授权。它与sercurity-constraint元素联合使用。

给出安全角色的一个列表,这些角色将出现在servlet元素内的security-role-ref元素的role-name子元素中。分别地声明角色可使高级IDE处理安全信息更为容易。

声明Web应用的环境项。

声明一个EJB的主目录的引用。

声明一个EJB的本地主目录的应用。

相应元素配置:

(1)Web应用图标

/images/app_small.gif

/images/app_large.gif

(2)Web 应用名称

App Name

(3)Web 应用描述

This is a app disciption.

(4)上下文初始化参数

ContextParameter

test

It is a test parameter.

在servlet里面可以通过getServletContext().getInitParameter("context/param")得到

(5)过滤器配置

setCharacterEncoding

com.myTest.setCharacterEncodingFilter

encoding

utf-8

setCharacterEncoding

/*

(6)监听器配置

listener.SessionListener

(7)Servlet配置

基本配置:

test

TestServlet

test

/test

高级配置:

test

TestServlet

foo

bar

Security role for anonymous access

tomcat

1

test

/test

(8)会话超时配置(单位为分钟)

120

(9)MIME类型配置

html

text/html

(10)欢迎页配置

index.jsp

index.html

index.htm

(11)配置错误页面

方法1:通过错误码来配置error-page

404

/404.jsp

上面的配置当系统发生404错误时,页面将跳转到错误处理页面404.jsp

方法2:通过异常类型配置error-page

java.lang.NullException

/error.jsp

上面的配置当系统发生java.lang.NullException异常时,页面将跳转到错误处理页面error.jsp

(12)TLD配置

http://jakarta.apache.org/tomcat/debug-taglib

/WEB-INF/jsp/debug-taglib.tld

如果MyEclipse一直在报错,应该把放到

http://jakarta.apache.org/tomcat/debug-taglib

/WEB-INF/pager-taglib.tld

(13)资源管理对象配置

jms/StockQueue

(14)资源工厂配置

mail/Session

javax.mail.Session

Container

配置数据库连接池就可在此配置:

JNDI JDBC DataSource of shop

jdbc/sample_db

javax.sql.DataSource

Container

(15)安全限制配置

Example Security Constraint

Protected Area

/jsp/security/protected/*

DELETE

GET

POST

PUT

tomcat

role1

(16)登陆验证配置

FORM

Example-Based Authentiation Area

/jsp/security/protected/login.jsp

/jsp/security/protected/error.jsp

(17)安全角色:security-role元素给出安全角色的一个列表,这些角色将出现在servlet元素内的security-role-ref元素的role-name子元素中。分别地声明角色可使高级IDE处理安全信息更为容易。

tomcat

(18)Web环境参数:env-entry元素声明Web应用的环境项

minExemptions

1

java.lang.Integer

(19)EJB 声明

Example EJB reference

ejb/Account

Entity

com.mycompany.mypackage.AccountHome

com.mycompany.mypackage.Account

(20)本地EJB声明

Example Loacal EJB reference

ejb/ProcessOrder

Session

com.mycompany.mypackage.ProcessOrderHome

com.mycompany.mypackage.ProcessOrder

Copyright © 2088 世界杯名额_世界杯结果 - tylzr.com All Rights Reserved.
友情链接