- 浏览: 209592 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
xiaokang1582830:
这有涉及到跨域?
ajax跨域调用webservice -
337240552:
...
web.xml中<security-constraint>和四种认证类型 -
pythoner126com:
写得不错,国内对perl热情不是很高,我最近也有翻译,请多多指 ...
Perl Hash 用法 -
an_yeblack:
你好,我想问一下,一般是什么愿因导致这种错误的呢?先谢谢了!! ...
WAS7 无法在控制台启动 Node Agent -
linzixiao:
感谢分享
冻结table的行和列
zhuan zi:http://elderheart.blog.sohu.com/31690693.html
[web-app]
部署描述符的根元素,语法如下:
<!ELEMENT web-app (icon?, display-name?, description?, distributable?, context-param*, filter*, filter-mapping*, listener*, servlet*, servlet-mapping*, session-config?, mime-mapping*, welcome-file-list?, error-page*, taglib*, resource-env-ref*, resource-ref*, security-constraint*, login-config?, security-role*, env-entry*, ejb-ref*, ejb-local-ref*)>
注意:在Servlet 2.3中,子元素必须按照DTD文件语法描述中指定的顺序出现。比如,如果部署描述符中的web-app元素有servlet和servlet-mapping两个子元素,则servlet子元素必须出现在servlet-mapping子元素之前。在Servlet 2.4中,顺序并不重要。
子元素:
1、icon元素
icon元素用来指定GIF格式或JPEG格式的小图标(16×16)或大图标(32×32)的文件名。
<!ELEMENT icon (small-icon?, large-icon?)>
<!ELEMENT small-icon (#PCDATA)>
<!ELEMENT large-icon (#PCDATA)>
icon元素包括两个可选的子元素:small-icon子元素和large-icon子元素。文件名是Web应用归档文件(WAR)的根的相对路径。
部署描述符并没有使用icon元素。但是,如果使用XML工具编辑部署描述符,XML编辑器可以使用icon元素。
2、display-name元素
如果使用工具编辑部署描述符,display-name元素包含的就是XML编辑器显示的名称。
<!ELEMENT display-name (#PCDATA)>
部署描述符:<display-name>Online Store Application</display-name>
3、description元素
可以使用description元素来提供有关部署描述符的信息。XML编辑器可以使用description元素的值。
<!ELEMENT description (#PCDATA)>
4、distributable元素
可以使用distributable元素来告诉servlet/JSP容器,编写将在分布式Web容器中部署的应用:
<!ELEMENT distributable EMPTY>
部署描述符:<distributable/>
5、context-param元素
context-param元素含有一对参数名和参数值,用作应用的servlet上下文初始化参数。参数名在整个Web应用中必须是惟一的。
<!ELEMENT context-param (param-name, param-value, description?)>
<!ELEMENT param-name (#PCDATA)>
<!ELEMENT param-value (#PCDATA)>
<!ELEMENT description (#PCDATA)>
param-name 子元素包含有参数名,而param-value子元素包含的是参数值。作为选择,可用description子元素来描述参数。
有效部署描述符:
<context-param>
<param-name>period</param-name>
<param-value>3600000</param-value>
<description>定时器延迟时间</param-value>
</context-param>
6、filter元素
filter元素用于指定Web容器中的过滤器。在请求和响应对象被 servlet 处理之前或之后,可以使用过滤器对这两个对象进行操作。利用下一节介绍的filter-mapping元素,过滤器被映射到一个servlet或一个URL模式。这个过滤器的filter元素和filter-mapping元素必须具有相同的名称。
<!ELEMENT filter (icon?, filter-name, display-name?, description?, filter-class, init-param*)>
<!ELEMENT filter-name (#PCDATA)>
<!ELEMENT filter-class (#PCDATA)>
icon、display-name和description元素的用法和上一节介绍的用法相同。init-param元素与context-param元素具有相同的元素描述符。filter-name元素用来定义过滤器的名称,该名称在整个应用中都必须是惟一的。filter-class元素指定过滤器类的完全限定的名称。
部署描述符:
<filter>
<filter-name>webwork</filter-name>
<filter-class>com.webwork.dispatcher.WebworkFilterDispatcher</filter-class>
<init-param>
<param-name>username</param-name>
<param-value>yefei</param-value>
</init-param>
</filter>
7、filter-mapping元素
filter-mapping 元素用来声明Web应用中的过滤器映射。过滤器可被映射到一个servlet或一个URL模式。将过滤器映射到一个servlet中会造成过滤器作用于servlet上(即把每个请求(由通配符指定)都发送到该 servlet 上)。将过滤器映射到一个URL模式中则可以将过滤器应用于任何资源,只要该资源的URL与URL模式匹配。过滤是按照部署描述符的filter-mapping元素出现的顺序执行的。
<!ELEMENT filter-mapping (filter-name, (url-pattern | servlet-name))>
<!ELEMENT filter-name (#PCDATA)>
<!ELEMENT url-pattern (#PCDATA)>
<!ELEMENT servlet-name (#PCDATA)>
filter-name值必须对应filter元素中声明的其中一个过滤器名称。
部署描述符:
<filter-mapping>
<filter-name>webwork</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>webwork</filter-name>
<servlet-name>webServlet</servlet-name>
</filter-mapping>
8、listener元素
listener元素用来注册一个监听器类,可以在Web应用中包含该类。使用listener元素,可以收到事件什么时候发生以及用什么作为响应的通知。
<!ELEMENT listener (listener-class)>
<!ELEMENT listener-class (#PCDATA)>
部署描述符:
<listener>
<listener-class>com.huawei.netforce.timer.tfTimer</listener-class>
</listener>
9、servlet元素
servlet元素用来声明一个servlet。
<!ELEMENT servlet (icon?, servlet-name, display-name?, description?, (servlet-class|jsp-file), init-param*, load-on-startup?, run-as?, security-role-ref*)>
<!ELEMENT servlet-name (#PCDATA)>
<!ELEMENT servlet-class (#PCDATA)>
<!ELEMENT jsp-file (#PCDATA)>
<!ELEMENT init-param (param-name, param-value, description?)>
<!ELEMENT load-on-startup (#PCDATA)>
<!ELEMENT run-as (description?, role-name)>
<!ELEMENT role-name (#PCDATA)>
icon、display-name和description元素的用法和上一节介绍的用法相同。init-param元素与context-param元素具有相同的元素描述符。可以使用init-param子元素将初始化参数名和参数值传递给servlet。
(1)、servlet-name、servlet-class和jsp-file元素
servlet元素必须包含servlet-name元素和servlet-class元素或jsp-file元素其中一个。
描述如下:
servlet-name 元素用来定义servlet的名称,该名称在整个应用中必须是惟一的。
servlet-class 元素用来指定servlet的完全限定的名称。
jsp-file 元素用来指定应用中JSP文件的完整路径。这个完整路径必须由a/开始。
(2)、load-on-startup元素
当启动Web容器时,用 load-on-startup 元素自动将servlet加入内存。加载servlet就意味着实例化这个servlet,并调用它的init方法。可以使用这个元素来避免第一个servlet请求的响应因为servlet载入内存所导致的任何延迟。如果load-on-startup 元素存在,而且也指定了jsp-file元素,则JSP文件会被重新编译成servlet,同时产生的servlet也被载入内存。
load-on-startup 元素的内容可以为空,或者是一个整数。这个值表示由Web容器载入内存的顺序。举个例子,如果有两个servlet元素都含有load-on-startup子元素,则load-on-startup子元素值较小的servlet将先被加载。如果load-on-startup子元素值为空或负值,则由Web容器决定什么时候加载servlet。如果两个servlet的load-on-startup子元素值相同,则由Web容器决定先加载哪一个servlet。
(3)、run-as元素
如果定义了run-as元素,它会重写用于调用Web应用中servlet所设定的Enterprise JavaBean(EJB)的安全身份。Role-name是为当前Web应用定义的一个安全角色的名称。
(4)、security-role-ref元素
在servlet代码编程中访问用户和角色,使用javax.servlet.http.HttpServletRequest.isUserInRole(String role)方法。字符串role被映射到嵌套在一个WEB应用程序部署描述符的<servlet>声明上的<security-role-ref>元素里的<role-name>元素提供的名字上。<role-link>元素映射到一个定义在WEB应用程序描述符的<security-role>元素的<role-name>上。security-role-ref元素的描述如下:
<!ELEMENT security-role-ref (description?, role-name, role-link)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT role-name (#PCDATA)>
<!ELEMENT role-link (#PCDATA)>
role-link元素用来将安全角色引用链接到已定义的安全角色。role-link元素必须含有已经在security-role元素中定义的一个安全角色的名称。
部署描述符:
<servlet>
<servlet-name>webworkServlet</servlet-name>
<servlet-class>com.huawei.netforce.WebworkServlet</servlet-class>
<init-param>
<param-name>inputCls</param-name>
<param-value>RunJob</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<security-role-ref>
<role-name>manager</role-name>
<role-link>sdctc</role-link>
</security-role-ref>
</servlet>
...
<security-role>
<role-name>sdctc</role-name>
</security-role>
10、servlet-mapping元素
servlet-mapping 元素将URL模式映射到某个servlet。
<!ELEMENT servlet-mapping (servlet-name, url-pattern)>
<!ELEMENT servlet-name (#PCDATA)>
<!ELEMENT url-pattern (#PCDATA)>
部署描述符:
<servlet-mapping>
<servlet-name>webwork</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
11、session-config元素
session-config元素为Web应用中的javax.servlet.http.HttpSession对象定义参数。
<!ELEMENT session-config (session-timeout?)>
<!ELEMENT session-timeout (#PCDATA)>
session-timeout元素用来指定默认的会话超时时间间隔,以分钟为单位。该元素值必须为整数。如果session-timeout元素的值为零或负数,则表示会话将永远不会超时。
下面是一个部署描述符,在用户最近访问HttpSession对象30分钟后,HttpSession对象默认为无效:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
12、mime-mapping元素
mime-mapping元素将mime类型映射到扩展名。
<!ELEMENT mime-mapping (extension, mime-type)>
<!ELEMENT extension (#PCDATA)>
<!ELEMENT mime-type (#PCDATA)>
extension元素用来描述扩展名。mime-type元素则为MIME类型。
部署描述符将扩展名txt映射为text/plain:
<mime-mapping>
<extension>txt</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
13、welcome-file-list元素
当用户在浏览器中输入的URL不包含某个servlet名或JSP页面时,welcome-file-list元素可指定显示的默认文件。
<!ELEMENT welcome-file-list (welcome-file+)>
<!ELEMENT welcome-file (#PCDATA)>
假设用户在浏览器的地址框中输入 http://host/webAppPrefix/directoryName/ 这样的包含一个目录名但没有包含文件名的URL,用户能得到一个目录表?一个错误?还是标准文件的内容?如果得到标准文件内容,是index.html、index.jsp、default.html、default.htm 或别的什么东西呢?welcome-file-list元素及其辅助的welcome-file元素解决了这个模糊的问题。
welcome-file子元素用于指定默认文件的名称。welcome-file-list元素可以包含一个或多个welcome-file子元素。如果在第一个welcome-file元素中没有找到指定的文件,Web容器就会尝试显示第二个,以此类推。如果两者都没有找到,则结果有赖于所用的服务器(如一个目录列表)。
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
如果用户键入的URL不包含servlet名称、JSP页面或其他资源,则不会在应用目录中找到main.html文件,这时就会显示jsp目录下的welcome.jsp文件
14、error-page元素
error-page元素用于将一段错误代码或一个异常类型映射到Web应用中的资源路径,从而在产生特殊的HTTP错误或指定的Java异常时,将显示相关的资源。
<!ELEMENT error-page ((error-code | exception-type), location)>
<!ELEMENT error-code (#PCDATA)>
<!ELEMENT exception-type (#PCDATA)>
<!ELEMENT location (#PCDATA)>
error-code元素包含HTTP错误代码。exception-type是Java异常类型的完全限定的名称。location元素是Web应用中的资源相对于应用目录的路径。location的值必须从/开始。
举个例子,每次产生HTTP 404错误代码时,下面的部署描述符可使Web容器显示error404.html页面:
<error-page>
<error-code>404</error-code>
<location>/error404.html</location>
</error-page>
15、taglib元素
taglib元素描述JSP定制标记库。
<!ELEMENT taglib (taglib-uri, taglib-location)>
<!ELEMENT taglib-uri (#PCDATA)>
<!ELEMENT taglib-location (#PCDATA)>
taglib-uri 元素是用于Web应用中的标记库的URI。taglib-uri元素的值与WEB-INF目录相对应。
taglib-location 元素包含一个位置,其中可以找到标记库的标记库描述符(TLD)文件
16、resource-env-ref元素
可以使用resource-env-ref元素来指定对管理对象的servlet引用的声明,该对象与servlet环境中的资源相关联。
<!ELEMENT resource-env-ref (description?, resource-env-ref-name, resource-env-ref-type)>
<!ELEMENT resource-env-ref-name (#PCDATA)>
<!ELEMENT resource-env-ref-type (#PCDATA)>
resource-env-ref-name 元素是资源环境引用的名称,其值为servlet代码中使用的环境的入口名称。该名称是一个与java:comp/env相对应的Java命名和目录接口(JNDI)名称,该名称在整个Web应用中必须是惟一的
17、resource-ref元素
resource-ref元素用于指定对外部资源的servlet引用的声明。
<!ELEMENT resource-ref (description?, res-ref-name, res-type, res-auth, res-sharing-scope?)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT res-ref-name (#PCDATA)>
<!ELEMENT res-type (#PCDATA)>
<!ELEMENT res-auth (#PCDATA)>
<!ELEMENT res-sharing-scope (#PCDATA)>
resource-ref子元素的描述如下:
(1)、res-ref-name 是资源工厂引用名的名称。该名称是一个与java:comp/env上下文相对应的JNDI名称,并且在整个Web应用中必须是惟一的。
(2)、res-auth 表明:servlet代码通过编程注册到资源管理器,或者是容器将代表servlet注册到资源管理器。该元素的值必须为Application或Container。
(3)、res-sharing-scope 表明:是否可以共享通过给定资源管理器连接工厂引用获得的连接。该元素的值必须为Shareable(默认值)或Unshareable
18、security-constraint元素
部署描述符中的security-constraint元素允许不通过编程就可以限制对某个资源的访问。
<!ELEMENT security-constraint (display-name?, web-resource-collection+, auth-constraint?, user-data-constraint?)>
<!ELEMENT display-name (#PCDATA)>
<!ELEMENT web-resource-collection (web-resource-name, description?, url-pattern*, http-method*)>
<!ELEMENT auth-constraint (description?, role-name*)>
<!ELEMENT user-data-constraint (description?, transport-guarantee)>
(1)、web-resource-collection元素标识需要限制访问的资源子集。在web-resource-collection元素中,可以定义URL模式和HTTP方法。如果不存在HTTP方法,就将安全约束应用于所有的方法。
<!ELEMENT web-resource-collection (web-resource-name, description?, url-pattern*, http-method*)>
<!ELEMENT web-resource-name (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT url-pattern (#PCDATA)>
<!ELEMENT http-method (#PCDATA)>
web-resource-name是与受保护资源相关联的名称。http-method元素可被赋予一个HTTP方法,比如GET和POST。
(2)、auth-constraint元素用于指定可以访问该资源集合的用户角色。如果没有指定auth-constraint元素,就将安全约束应用于所有角色。
<!ELEMENT auth-constraint (description?, role-name*)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT role-name (#PCDATA)>
role-name元素包含安全角色的名称。
(3)、user-data-constraint元素用来显示怎样保护在客户端和Web容器之间传递的数据。
<!ELEMENT user-data-constraint (description?, transport-guarantee)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT transport-guarantee (#PCDATA)>
transport-guarantee元素必须具有如下的某个值:
(1)、NONE,这意味着应用不需要传输保证。
(2)、INTEGRAL,意味着服务器和客户端之间的数据必须以某种方式发送,而且在传送中不能改变。
(3)、CONFIDENTIAL,这意味着传输的数据必须是加密的数据。
在大多数情况下,安全套接字层(SSL)用于INTEGRAL或CONFIDENTIAL
19、login-config元素
login-config元素用来指定所使用的验证方法、领域名和表单验证机制所需的特性。
<!ELEMENT login-config (auth-method?, realm-name?, form-login-config?)>
<!ELEMENT auth-method (#PCDATA)>
<!ELEMENT realm-name (#PCDATA)>
<!ELEMENT form-login-config (form-login-page, form-error-page)>
login-config子元素的描述如下:
(1)、auth-method:指定验证方法。它的值为下面的一个:BASIC、DIGEST、FORM或 CLIENT-CERT,分别代表基本、摘要、基于表单、客户端的鉴别。
BASIC:
Basic认证用WEB浏览器显示用户名/密码对话框。这个用户名和密码通过域被认证。
FORM:
基于Form的认证要求返回一个包含用户名和密码的HTML表单。从表单元素返回的字段必须是j_username和j_password,action属性必须是j_security_check(Servlet规范定义由容器负责实现的Servlet)。下面是使用FORM认证的HTML代码示例:
<form method="POST" action="j_security_check">
<input type="text" name="j_username">
<input type="password" name="j_password">
</form>
用来产生HTML表单的资源可能是一个HTML页面,一个JSP,或一个servlet。使用<form-login-page>元素来定义这个资源。
当提供login页面服务时,就会建立HTTP会话对象。因此,当认证成功后在页面调用session.isNew()方法会返回FALSE。
CLIENT-CERT:
使用客户端证书来进行认证请求。更多信息参考配置SSL协议。
(2)、realm-name:指定HTTP Basic验证中使用的领域名。
(3)、form-login-config:指定基于表单的登录中应该使用的登录页面和出错页面。如果没有使用基于表单的验证,则忽略这些元素。这个元素的定义如下,其中form-login-page用于指定显示登录页面的资源路径, form-error-page则用于指定用户登录失败时显示出错页面的资源路径。这两个页面路径都必须以a/开始,并与应用目录相对应。
<!ELEMENT form-login-config (form-login-page, form-error-page)>
<!ELEMENT form-login-page (#PCDATA)>
<!ELEMENT form-error-page (#PCDATA)>
20、security-role元素
security-role元素指定用于安全约束中的安全角色的声明。
<!ELEMENT security-role (description?, role-name)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT role-name (#PCDATA)>
21、env-entry元素
env-entry元素用于指定应用环境入口。
<!ELEMENT env-entry (description?, env-entry-name, env-entry-value?, env-entry-type)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT env-entry-name (#PCDATA)>
<!ELEMENT env-entry-value (#PCDATA)>
<!ELEMENT env-entry-type (#PCDATA)>
env-entry-name元素包含Web应用环境入口的名称。该名称是一个与java:comp/env相对应的JNDI名称,并且在整个应用中必须是惟一的。
env-entry-value元素包含Web应用环境入口的值。该值必须是一个字符串类型的值,并且对于指定类型的构造函数是有效的,该函数获得一个String参数;或者对于java.lang.Character是有效的,java.lang.Character对象是一个字符。
env-entry-type元素包含环境入口值的完全限定的Java类型,该环境入口值是Web应用代码所期望的。这个env-entry-type元素的值必须是如下之一:
java.lang.Boolean
java.lang.Byte
java.lang.Character
java.lang.String
java.lang.Short
java.lang.Integer
java.lang.Long
java.lang.Float
java.lang.Double
22、ejb-ref元素
ejb-ref元素用于指定EJB的home接口的引用。
<!ELEMENT ejb-ref (description?, ejb-ref-name, ejb-ref-type, home, remote, ejb-link?)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT ejb-ref-name (#PCDATA)>
<!ELEMENT ejb-ref-type (#PCDATA)>
<!ELEMENT home (#PCDATA)>
<!ELEMENT remote (#PCDATA)>
<!ELEMENT ejb-link (#PCDATA)>
ejb-ref-name 包含EJB引用的名称。EJB引用是servlet环境中的一个入口,它与java:comp/env相对应。这个名称在Web应用中必须是惟一的。为求一致性,推荐您的ejb-ref-name元素名称以ejb/开始。
ejb-ref-name元素包含引用的EJB的期望类型。这个值必须是Entity或Session。
home元素包含EJB的home接口的完全限定的名称。remote元素包含EJB的remote接口的完全限定的名称。
ejb-ref 或 ejb-local-ref 元素中用到的ejb-link元素可指定EJB 引用被链接到另一个EJB。Ejb-link元素的值必须是同一个J2EE应用单元中某个EJB的ejb-name。Ejb-link元素中的名称可以由指定ejb-jar的路径名组成,该ejb-jar包含引用的EJB。目标bean的名称添加在后面,用字符a# 与路径名分隔。路径名与包含引用EJB的Web应用的WAR相对应。这就允许我们惟一标识具有相同ejb-name的多个企业bean
23、ejb-local-ref元素
ejb-local-ref元素用于声明对EJB的本地home的引用。
<!ELEMENT ejb-local-ref (description?, ejb-ref-name, ejb-ref-type, local-home, local, ejb-link?)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT ejb-ref-name (#PCDATA)>
<!ELEMENT ejb-ref-type (#PCDATA)>
<!ELEMENT local-home (#PCDATA)>
<!ELEMENT local (#PCDATA)>
<!ELEMENT ejb-link (#PCDATA)>
local元素包含EJB本地接口的完全限定的名称。Local-home元素包含EJB本地home接口的完全限定的名称
元素内容模型:
出现次数:
其它内容参考:http://elderheart.blog.sohu.com/87090132.html
[web-app元素与程序的结合]
[context-param 元素]
获取配置信息:
1、获取 context-param 元素
方法:getServletContext().getInitParameter("period"); -> 3600000
2、获取 servlet 元素的子元素 init-param元素
方法:getServletConfig().getInitParameter("inputCls"); -> RunJob
ServletContext 与 ServletConfig 的区别:
ServletContext:
在web容器来说,ServletContext 接口定义了一个 servlet 环境对象,该对象定义了一个在servlet引擎上的servlet的视图,通过使用这个对象,servlet可以记录事件,得到资源并得到来自servlet的引擎类servlet容器在启动时会加载web应用,并为每个web应用创建唯一的 ServletContext 对象,可以把ServletContext看成是一个Web应用的服务器端组件的共享内存,在ServletContext中可以存放共享数据。ServletContext对象只在web应用被关闭的时候才被销毁,不同的web应用,ServletContext各自独立存在。
一个web应用由jsp,servlet,javabean等web组件的集合构成,每一个web应用,容器都会有一个背景对象,而javax.servlet.ServletContext接口就提供了访问这个背景对象的途径。你可以通过一个servlet实例的getServletContext()方法得到该servlet运行其中的这个背景对象,从这个背景对象中你可以访问如下信息资源:
1.初始化参数
2.存储在背景中的对象
3.与背景关联的资源
4.日志
ServletConfig:
ServletConfig 对象在servlet中被实例化后,对任何客户端在任何时候访问有效。但是一个servlet的ServletConfig对象不能被另一个servlet访问,也就是说,在本servlet声明后的ServletConfig只能在本servlet内被访问,也就是说该 ServletConfig 对象只能访问实例化它的servlet 元素的子元素 init-param元素,属于内部持久有效的变量
ServletContext 存储 servlet 容器的信息,相当于全局变量,而 ServletConfig 只是存储 servlet 容器中的一个 servlet 对象的信息,相当于局部变量
信息共享:
1、在web.xml中定义环境初始化参数:
<context-param>
<param-name>period</param-name>
<param-value>3600000</param-value>
</context-param>
2、setAttribute 方法:
该方法将一个对象绑定至一个给定名,任何已有的对此名的绑定都将被替换。
方法:
public void setAttribute(String name, Object object); //绑定对象
public void removeAttribute(String name); //删除绑定
public Object getAttribute(String name); //根据名称获取绑定的对象
public Enumeration getAttributeNames(); //获取所有绑定属性名称的队列
[filter 元素、filter-mapping 元素]
filter-mapping:
注意:
1、url-pattern对应的是映射的地址,比如:*.do 是映射所有以 .do 为结尾的路径;/* 是映射所有根目录下的文件路径;/webServlet.do 是映射包括 /webServlet.do 字符的路径即 root/webServlet.do; /webServlet.do 都能被映射。
2、servlet-name对应的是映射的servlet,即是servlet的名称。
3、启动容器时,读取 web.xml,将所有的 filter-mapping 元素按顺序添加进映射列表,当发生请求时,从映射列表中筛选出与请求地址对应的过滤器,然后执行过滤器对应的运行类(可以有多个对应的过滤器,按顺序执行)。
Filter servlet:
过滤器可截取和修改进入一个servlet或JSP页面的请求或从一个servlet或JSP页面发出的相应。在执行一个servlet或JSP页面之前,必须执行第一个相关的过滤器的doFilter方法。在该过滤器对其FilterChain对象调用doFilter时,执行链中的下一个过滤器。如果没有其他过滤器,servlet或JSP页面被执行。过滤器具有对到来的ServletRequest对象的全部访问权,因此,它们可以查看客户机名、查找到来的cookie等。为了访问servlet或JSP页面的输出,过滤器可将响应对象包裹在一个替身对象(stand-in object)中,比如说把输出累加到一个缓冲区。在调用FilterChain对象的doFilter方法之后,过滤器可检查缓冲区,如有必要,就对它进行修改,然后传送到客户机。
一般通过实现 Filter 接口来创建过滤器,Filter接口方法:
1、public void init(FilterConfig filterConfig) throws ServletException;
当过滤器初始化时,容器调用该方法。FilterConfig 对象包含了与Web应用程序上下文相关的信息。
2、public void doFilter ( ServletRequest request, ServletResponse response, FilterChain chain ) throws IOException, ServletException;
当收到使用过滤器的请求时,容器会调用 doFilter 方法,该方法先完成各种预处理逻辑,然后使用FilterChain.doChain()方法将请求转发给链表中的下一个过滤器(如果是最后一个过滤器则将请求转发到最终的目标)
3、public void destroy();
过滤器销毁之前,调用该方法
建立了一个过滤器后,可以在web.xml中利用filter元素来声明它,注意,所有filter元素必须出现在任意filter-mapping元素之前, filter-mapping元素又必须出现在所有servlet或servlet-mapping元素之前。
命名了一个过滤器后,可利用filter-mapping元素把它与一个或多个servlet或JSP页面相关联。关于此项工作有两种选择:
1、可使用filter-name和servlet-name子元素把此过滤器与一个特定的servlet名(此servlet名必须稍后在相同的 web.xml文件中使用servlet元素声明)关联。例如,下面的程序片断指示系统只要利用一个定制的URL访问名为webworkServlet 的servlet或JSP页面,就运行名为webworkFilter的过滤器。
<filter-name>webwork</filter-name>
<filter-class>com.webwork.dispatcher.WebworkFilterDispatcher</filter-class>
2、可利用filter-name和url-pattern子元素将过滤器与一组servlet、JSP页面或静态内容相关联。例如,相同的程序片段指示系统只要访问Web应用中的任意URL,就运行名为 webwork 的过滤器。
<filter-name>webwork</filter-name>
<url-pattern>/*</url-pattern>
例子:
调用:
<a href="/webServlet">实现过滤的入口</a>
结果:
获取用户的信息: yefei
跳转到WebServlet...
过滤结束
[listener 元素]
参考例子:http://elderheart.blog.sohu.com/85833792.html
[web-app]
部署描述符的根元素,语法如下:
<!ELEMENT web-app (icon?, display-name?, description?, distributable?, context-param*, filter*, filter-mapping*, listener*, servlet*, servlet-mapping*, session-config?, mime-mapping*, welcome-file-list?, error-page*, taglib*, resource-env-ref*, resource-ref*, security-constraint*, login-config?, security-role*, env-entry*, ejb-ref*, ejb-local-ref*)>
注意:在Servlet 2.3中,子元素必须按照DTD文件语法描述中指定的顺序出现。比如,如果部署描述符中的web-app元素有servlet和servlet-mapping两个子元素,则servlet子元素必须出现在servlet-mapping子元素之前。在Servlet 2.4中,顺序并不重要。
子元素:
1、icon元素
icon元素用来指定GIF格式或JPEG格式的小图标(16×16)或大图标(32×32)的文件名。
<!ELEMENT icon (small-icon?, large-icon?)>
<!ELEMENT small-icon (#PCDATA)>
<!ELEMENT large-icon (#PCDATA)>
icon元素包括两个可选的子元素:small-icon子元素和large-icon子元素。文件名是Web应用归档文件(WAR)的根的相对路径。
部署描述符并没有使用icon元素。但是,如果使用XML工具编辑部署描述符,XML编辑器可以使用icon元素。
2、display-name元素
如果使用工具编辑部署描述符,display-name元素包含的就是XML编辑器显示的名称。
<!ELEMENT display-name (#PCDATA)>
部署描述符:<display-name>Online Store Application</display-name>
3、description元素
可以使用description元素来提供有关部署描述符的信息。XML编辑器可以使用description元素的值。
<!ELEMENT description (#PCDATA)>
4、distributable元素
可以使用distributable元素来告诉servlet/JSP容器,编写将在分布式Web容器中部署的应用:
<!ELEMENT distributable EMPTY>
部署描述符:<distributable/>
5、context-param元素
context-param元素含有一对参数名和参数值,用作应用的servlet上下文初始化参数。参数名在整个Web应用中必须是惟一的。
<!ELEMENT context-param (param-name, param-value, description?)>
<!ELEMENT param-name (#PCDATA)>
<!ELEMENT param-value (#PCDATA)>
<!ELEMENT description (#PCDATA)>
param-name 子元素包含有参数名,而param-value子元素包含的是参数值。作为选择,可用description子元素来描述参数。
有效部署描述符:
<context-param>
<param-name>period</param-name>
<param-value>3600000</param-value>
<description>定时器延迟时间</param-value>
</context-param>
6、filter元素
filter元素用于指定Web容器中的过滤器。在请求和响应对象被 servlet 处理之前或之后,可以使用过滤器对这两个对象进行操作。利用下一节介绍的filter-mapping元素,过滤器被映射到一个servlet或一个URL模式。这个过滤器的filter元素和filter-mapping元素必须具有相同的名称。
<!ELEMENT filter (icon?, filter-name, display-name?, description?, filter-class, init-param*)>
<!ELEMENT filter-name (#PCDATA)>
<!ELEMENT filter-class (#PCDATA)>
icon、display-name和description元素的用法和上一节介绍的用法相同。init-param元素与context-param元素具有相同的元素描述符。filter-name元素用来定义过滤器的名称,该名称在整个应用中都必须是惟一的。filter-class元素指定过滤器类的完全限定的名称。
部署描述符:
<filter>
<filter-name>webwork</filter-name>
<filter-class>com.webwork.dispatcher.WebworkFilterDispatcher</filter-class>
<init-param>
<param-name>username</param-name>
<param-value>yefei</param-value>
</init-param>
</filter>
7、filter-mapping元素
filter-mapping 元素用来声明Web应用中的过滤器映射。过滤器可被映射到一个servlet或一个URL模式。将过滤器映射到一个servlet中会造成过滤器作用于servlet上(即把每个请求(由通配符指定)都发送到该 servlet 上)。将过滤器映射到一个URL模式中则可以将过滤器应用于任何资源,只要该资源的URL与URL模式匹配。过滤是按照部署描述符的filter-mapping元素出现的顺序执行的。
<!ELEMENT filter-mapping (filter-name, (url-pattern | servlet-name))>
<!ELEMENT filter-name (#PCDATA)>
<!ELEMENT url-pattern (#PCDATA)>
<!ELEMENT servlet-name (#PCDATA)>
filter-name值必须对应filter元素中声明的其中一个过滤器名称。
部署描述符:
<filter-mapping>
<filter-name>webwork</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>webwork</filter-name>
<servlet-name>webServlet</servlet-name>
</filter-mapping>
8、listener元素
listener元素用来注册一个监听器类,可以在Web应用中包含该类。使用listener元素,可以收到事件什么时候发生以及用什么作为响应的通知。
<!ELEMENT listener (listener-class)>
<!ELEMENT listener-class (#PCDATA)>
部署描述符:
<listener>
<listener-class>com.huawei.netforce.timer.tfTimer</listener-class>
</listener>
9、servlet元素
servlet元素用来声明一个servlet。
<!ELEMENT servlet (icon?, servlet-name, display-name?, description?, (servlet-class|jsp-file), init-param*, load-on-startup?, run-as?, security-role-ref*)>
<!ELEMENT servlet-name (#PCDATA)>
<!ELEMENT servlet-class (#PCDATA)>
<!ELEMENT jsp-file (#PCDATA)>
<!ELEMENT init-param (param-name, param-value, description?)>
<!ELEMENT load-on-startup (#PCDATA)>
<!ELEMENT run-as (description?, role-name)>
<!ELEMENT role-name (#PCDATA)>
icon、display-name和description元素的用法和上一节介绍的用法相同。init-param元素与context-param元素具有相同的元素描述符。可以使用init-param子元素将初始化参数名和参数值传递给servlet。
(1)、servlet-name、servlet-class和jsp-file元素
servlet元素必须包含servlet-name元素和servlet-class元素或jsp-file元素其中一个。
描述如下:
servlet-name 元素用来定义servlet的名称,该名称在整个应用中必须是惟一的。
servlet-class 元素用来指定servlet的完全限定的名称。
jsp-file 元素用来指定应用中JSP文件的完整路径。这个完整路径必须由a/开始。
(2)、load-on-startup元素
当启动Web容器时,用 load-on-startup 元素自动将servlet加入内存。加载servlet就意味着实例化这个servlet,并调用它的init方法。可以使用这个元素来避免第一个servlet请求的响应因为servlet载入内存所导致的任何延迟。如果load-on-startup 元素存在,而且也指定了jsp-file元素,则JSP文件会被重新编译成servlet,同时产生的servlet也被载入内存。
load-on-startup 元素的内容可以为空,或者是一个整数。这个值表示由Web容器载入内存的顺序。举个例子,如果有两个servlet元素都含有load-on-startup子元素,则load-on-startup子元素值较小的servlet将先被加载。如果load-on-startup子元素值为空或负值,则由Web容器决定什么时候加载servlet。如果两个servlet的load-on-startup子元素值相同,则由Web容器决定先加载哪一个servlet。
(3)、run-as元素
如果定义了run-as元素,它会重写用于调用Web应用中servlet所设定的Enterprise JavaBean(EJB)的安全身份。Role-name是为当前Web应用定义的一个安全角色的名称。
(4)、security-role-ref元素
在servlet代码编程中访问用户和角色,使用javax.servlet.http.HttpServletRequest.isUserInRole(String role)方法。字符串role被映射到嵌套在一个WEB应用程序部署描述符的<servlet>声明上的<security-role-ref>元素里的<role-name>元素提供的名字上。<role-link>元素映射到一个定义在WEB应用程序描述符的<security-role>元素的<role-name>上。security-role-ref元素的描述如下:
<!ELEMENT security-role-ref (description?, role-name, role-link)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT role-name (#PCDATA)>
<!ELEMENT role-link (#PCDATA)>
role-link元素用来将安全角色引用链接到已定义的安全角色。role-link元素必须含有已经在security-role元素中定义的一个安全角色的名称。
部署描述符:
<servlet>
<servlet-name>webworkServlet</servlet-name>
<servlet-class>com.huawei.netforce.WebworkServlet</servlet-class>
<init-param>
<param-name>inputCls</param-name>
<param-value>RunJob</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<security-role-ref>
<role-name>manager</role-name>
<role-link>sdctc</role-link>
</security-role-ref>
</servlet>
...
<security-role>
<role-name>sdctc</role-name>
</security-role>
10、servlet-mapping元素
servlet-mapping 元素将URL模式映射到某个servlet。
<!ELEMENT servlet-mapping (servlet-name, url-pattern)>
<!ELEMENT servlet-name (#PCDATA)>
<!ELEMENT url-pattern (#PCDATA)>
部署描述符:
<servlet-mapping>
<servlet-name>webwork</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
11、session-config元素
session-config元素为Web应用中的javax.servlet.http.HttpSession对象定义参数。
<!ELEMENT session-config (session-timeout?)>
<!ELEMENT session-timeout (#PCDATA)>
session-timeout元素用来指定默认的会话超时时间间隔,以分钟为单位。该元素值必须为整数。如果session-timeout元素的值为零或负数,则表示会话将永远不会超时。
下面是一个部署描述符,在用户最近访问HttpSession对象30分钟后,HttpSession对象默认为无效:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
12、mime-mapping元素
mime-mapping元素将mime类型映射到扩展名。
<!ELEMENT mime-mapping (extension, mime-type)>
<!ELEMENT extension (#PCDATA)>
<!ELEMENT mime-type (#PCDATA)>
extension元素用来描述扩展名。mime-type元素则为MIME类型。
部署描述符将扩展名txt映射为text/plain:
<mime-mapping>
<extension>txt</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
13、welcome-file-list元素
当用户在浏览器中输入的URL不包含某个servlet名或JSP页面时,welcome-file-list元素可指定显示的默认文件。
<!ELEMENT welcome-file-list (welcome-file+)>
<!ELEMENT welcome-file (#PCDATA)>
假设用户在浏览器的地址框中输入 http://host/webAppPrefix/directoryName/ 这样的包含一个目录名但没有包含文件名的URL,用户能得到一个目录表?一个错误?还是标准文件的内容?如果得到标准文件内容,是index.html、index.jsp、default.html、default.htm 或别的什么东西呢?welcome-file-list元素及其辅助的welcome-file元素解决了这个模糊的问题。
welcome-file子元素用于指定默认文件的名称。welcome-file-list元素可以包含一个或多个welcome-file子元素。如果在第一个welcome-file元素中没有找到指定的文件,Web容器就会尝试显示第二个,以此类推。如果两者都没有找到,则结果有赖于所用的服务器(如一个目录列表)。
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
如果用户键入的URL不包含servlet名称、JSP页面或其他资源,则不会在应用目录中找到main.html文件,这时就会显示jsp目录下的welcome.jsp文件
14、error-page元素
error-page元素用于将一段错误代码或一个异常类型映射到Web应用中的资源路径,从而在产生特殊的HTTP错误或指定的Java异常时,将显示相关的资源。
<!ELEMENT error-page ((error-code | exception-type), location)>
<!ELEMENT error-code (#PCDATA)>
<!ELEMENT exception-type (#PCDATA)>
<!ELEMENT location (#PCDATA)>
error-code元素包含HTTP错误代码。exception-type是Java异常类型的完全限定的名称。location元素是Web应用中的资源相对于应用目录的路径。location的值必须从/开始。
举个例子,每次产生HTTP 404错误代码时,下面的部署描述符可使Web容器显示error404.html页面:
<error-page>
<error-code>404</error-code>
<location>/error404.html</location>
</error-page>
15、taglib元素
taglib元素描述JSP定制标记库。
<!ELEMENT taglib (taglib-uri, taglib-location)>
<!ELEMENT taglib-uri (#PCDATA)>
<!ELEMENT taglib-location (#PCDATA)>
taglib-uri 元素是用于Web应用中的标记库的URI。taglib-uri元素的值与WEB-INF目录相对应。
taglib-location 元素包含一个位置,其中可以找到标记库的标记库描述符(TLD)文件
16、resource-env-ref元素
可以使用resource-env-ref元素来指定对管理对象的servlet引用的声明,该对象与servlet环境中的资源相关联。
<!ELEMENT resource-env-ref (description?, resource-env-ref-name, resource-env-ref-type)>
<!ELEMENT resource-env-ref-name (#PCDATA)>
<!ELEMENT resource-env-ref-type (#PCDATA)>
resource-env-ref-name 元素是资源环境引用的名称,其值为servlet代码中使用的环境的入口名称。该名称是一个与java:comp/env相对应的Java命名和目录接口(JNDI)名称,该名称在整个Web应用中必须是惟一的
17、resource-ref元素
resource-ref元素用于指定对外部资源的servlet引用的声明。
<!ELEMENT resource-ref (description?, res-ref-name, res-type, res-auth, res-sharing-scope?)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT res-ref-name (#PCDATA)>
<!ELEMENT res-type (#PCDATA)>
<!ELEMENT res-auth (#PCDATA)>
<!ELEMENT res-sharing-scope (#PCDATA)>
resource-ref子元素的描述如下:
(1)、res-ref-name 是资源工厂引用名的名称。该名称是一个与java:comp/env上下文相对应的JNDI名称,并且在整个Web应用中必须是惟一的。
(2)、res-auth 表明:servlet代码通过编程注册到资源管理器,或者是容器将代表servlet注册到资源管理器。该元素的值必须为Application或Container。
(3)、res-sharing-scope 表明:是否可以共享通过给定资源管理器连接工厂引用获得的连接。该元素的值必须为Shareable(默认值)或Unshareable
18、security-constraint元素
部署描述符中的security-constraint元素允许不通过编程就可以限制对某个资源的访问。
<!ELEMENT security-constraint (display-name?, web-resource-collection+, auth-constraint?, user-data-constraint?)>
<!ELEMENT display-name (#PCDATA)>
<!ELEMENT web-resource-collection (web-resource-name, description?, url-pattern*, http-method*)>
<!ELEMENT auth-constraint (description?, role-name*)>
<!ELEMENT user-data-constraint (description?, transport-guarantee)>
(1)、web-resource-collection元素标识需要限制访问的资源子集。在web-resource-collection元素中,可以定义URL模式和HTTP方法。如果不存在HTTP方法,就将安全约束应用于所有的方法。
<!ELEMENT web-resource-collection (web-resource-name, description?, url-pattern*, http-method*)>
<!ELEMENT web-resource-name (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT url-pattern (#PCDATA)>
<!ELEMENT http-method (#PCDATA)>
web-resource-name是与受保护资源相关联的名称。http-method元素可被赋予一个HTTP方法,比如GET和POST。
(2)、auth-constraint元素用于指定可以访问该资源集合的用户角色。如果没有指定auth-constraint元素,就将安全约束应用于所有角色。
<!ELEMENT auth-constraint (description?, role-name*)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT role-name (#PCDATA)>
role-name元素包含安全角色的名称。
(3)、user-data-constraint元素用来显示怎样保护在客户端和Web容器之间传递的数据。
<!ELEMENT user-data-constraint (description?, transport-guarantee)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT transport-guarantee (#PCDATA)>
transport-guarantee元素必须具有如下的某个值:
(1)、NONE,这意味着应用不需要传输保证。
(2)、INTEGRAL,意味着服务器和客户端之间的数据必须以某种方式发送,而且在传送中不能改变。
(3)、CONFIDENTIAL,这意味着传输的数据必须是加密的数据。
在大多数情况下,安全套接字层(SSL)用于INTEGRAL或CONFIDENTIAL
19、login-config元素
login-config元素用来指定所使用的验证方法、领域名和表单验证机制所需的特性。
<!ELEMENT login-config (auth-method?, realm-name?, form-login-config?)>
<!ELEMENT auth-method (#PCDATA)>
<!ELEMENT realm-name (#PCDATA)>
<!ELEMENT form-login-config (form-login-page, form-error-page)>
login-config子元素的描述如下:
(1)、auth-method:指定验证方法。它的值为下面的一个:BASIC、DIGEST、FORM或 CLIENT-CERT,分别代表基本、摘要、基于表单、客户端的鉴别。
BASIC:
Basic认证用WEB浏览器显示用户名/密码对话框。这个用户名和密码通过域被认证。
FORM:
基于Form的认证要求返回一个包含用户名和密码的HTML表单。从表单元素返回的字段必须是j_username和j_password,action属性必须是j_security_check(Servlet规范定义由容器负责实现的Servlet)。下面是使用FORM认证的HTML代码示例:
<form method="POST" action="j_security_check">
<input type="text" name="j_username">
<input type="password" name="j_password">
</form>
用来产生HTML表单的资源可能是一个HTML页面,一个JSP,或一个servlet。使用<form-login-page>元素来定义这个资源。
当提供login页面服务时,就会建立HTTP会话对象。因此,当认证成功后在页面调用session.isNew()方法会返回FALSE。
CLIENT-CERT:
使用客户端证书来进行认证请求。更多信息参考配置SSL协议。
(2)、realm-name:指定HTTP Basic验证中使用的领域名。
(3)、form-login-config:指定基于表单的登录中应该使用的登录页面和出错页面。如果没有使用基于表单的验证,则忽略这些元素。这个元素的定义如下,其中form-login-page用于指定显示登录页面的资源路径, form-error-page则用于指定用户登录失败时显示出错页面的资源路径。这两个页面路径都必须以a/开始,并与应用目录相对应。
<!ELEMENT form-login-config (form-login-page, form-error-page)>
<!ELEMENT form-login-page (#PCDATA)>
<!ELEMENT form-error-page (#PCDATA)>
20、security-role元素
security-role元素指定用于安全约束中的安全角色的声明。
<!ELEMENT security-role (description?, role-name)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT role-name (#PCDATA)>
21、env-entry元素
env-entry元素用于指定应用环境入口。
<!ELEMENT env-entry (description?, env-entry-name, env-entry-value?, env-entry-type)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT env-entry-name (#PCDATA)>
<!ELEMENT env-entry-value (#PCDATA)>
<!ELEMENT env-entry-type (#PCDATA)>
env-entry-name元素包含Web应用环境入口的名称。该名称是一个与java:comp/env相对应的JNDI名称,并且在整个应用中必须是惟一的。
env-entry-value元素包含Web应用环境入口的值。该值必须是一个字符串类型的值,并且对于指定类型的构造函数是有效的,该函数获得一个String参数;或者对于java.lang.Character是有效的,java.lang.Character对象是一个字符。
env-entry-type元素包含环境入口值的完全限定的Java类型,该环境入口值是Web应用代码所期望的。这个env-entry-type元素的值必须是如下之一:
java.lang.Boolean
java.lang.Byte
java.lang.Character
java.lang.String
java.lang.Short
java.lang.Integer
java.lang.Long
java.lang.Float
java.lang.Double
22、ejb-ref元素
ejb-ref元素用于指定EJB的home接口的引用。
<!ELEMENT ejb-ref (description?, ejb-ref-name, ejb-ref-type, home, remote, ejb-link?)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT ejb-ref-name (#PCDATA)>
<!ELEMENT ejb-ref-type (#PCDATA)>
<!ELEMENT home (#PCDATA)>
<!ELEMENT remote (#PCDATA)>
<!ELEMENT ejb-link (#PCDATA)>
ejb-ref-name 包含EJB引用的名称。EJB引用是servlet环境中的一个入口,它与java:comp/env相对应。这个名称在Web应用中必须是惟一的。为求一致性,推荐您的ejb-ref-name元素名称以ejb/开始。
ejb-ref-name元素包含引用的EJB的期望类型。这个值必须是Entity或Session。
home元素包含EJB的home接口的完全限定的名称。remote元素包含EJB的remote接口的完全限定的名称。
ejb-ref 或 ejb-local-ref 元素中用到的ejb-link元素可指定EJB 引用被链接到另一个EJB。Ejb-link元素的值必须是同一个J2EE应用单元中某个EJB的ejb-name。Ejb-link元素中的名称可以由指定ejb-jar的路径名组成,该ejb-jar包含引用的EJB。目标bean的名称添加在后面,用字符a# 与路径名分隔。路径名与包含引用EJB的Web应用的WAR相对应。这就允许我们惟一标识具有相同ejb-name的多个企业bean
23、ejb-local-ref元素
ejb-local-ref元素用于声明对EJB的本地home的引用。
<!ELEMENT ejb-local-ref (description?, ejb-ref-name, ejb-ref-type, local-home, local, ejb-link?)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT ejb-ref-name (#PCDATA)>
<!ELEMENT ejb-ref-type (#PCDATA)>
<!ELEMENT local-home (#PCDATA)>
<!ELEMENT local (#PCDATA)>
<!ELEMENT ejb-link (#PCDATA)>
local元素包含EJB本地接口的完全限定的名称。Local-home元素包含EJB本地home接口的完全限定的名称
元素内容模型:
内容模型 示例 | ||
空:无子元素或字符数据 <!ELEMENT qname EMPTY> | ||
纯文本:只有字符数据,无子元素 <!ELEMENT qname #PCDATA> | ||
开放:任何合适的XML <!ELEMENT qname ANY> | ||
混和:只有字符数据,其中缀有零个或多个qn1和qn2子元素(任何顺序) <!ELEMENT qname (#PCDATA | qn1 | qn2)*> |
纯元素:只有reg-exp描述的子元素,并且子元素之间没有非空白字符 <!ELEMENT qname (reg-exp)> |
出现次数:
最小次数 最大次数 含义 表达式 |
0 1 非强制不可重复 head? |
1 1 强制不可重复 head |
0 unbounded 非强制可重复 head* |
1 unbounded 强制可重复 head+ |
其它内容参考:http://elderheart.blog.sohu.com/87090132.html
[web-app元素与程序的结合]
[context-param 元素]
获取配置信息:
1、获取 context-param 元素
方法:getServletContext().getInitParameter("period"); -> 3600000
2、获取 servlet 元素的子元素 init-param元素
方法:getServletConfig().getInitParameter("inputCls"); -> RunJob
ServletContext 与 ServletConfig 的区别:
ServletContext:
在web容器来说,ServletContext 接口定义了一个 servlet 环境对象,该对象定义了一个在servlet引擎上的servlet的视图,通过使用这个对象,servlet可以记录事件,得到资源并得到来自servlet的引擎类servlet容器在启动时会加载web应用,并为每个web应用创建唯一的 ServletContext 对象,可以把ServletContext看成是一个Web应用的服务器端组件的共享内存,在ServletContext中可以存放共享数据。ServletContext对象只在web应用被关闭的时候才被销毁,不同的web应用,ServletContext各自独立存在。
一个web应用由jsp,servlet,javabean等web组件的集合构成,每一个web应用,容器都会有一个背景对象,而javax.servlet.ServletContext接口就提供了访问这个背景对象的途径。你可以通过一个servlet实例的getServletContext()方法得到该servlet运行其中的这个背景对象,从这个背景对象中你可以访问如下信息资源:
1.初始化参数
2.存储在背景中的对象
3.与背景关联的资源
4.日志
ServletConfig:
ServletConfig 对象在servlet中被实例化后,对任何客户端在任何时候访问有效。但是一个servlet的ServletConfig对象不能被另一个servlet访问,也就是说,在本servlet声明后的ServletConfig只能在本servlet内被访问,也就是说该 ServletConfig 对象只能访问实例化它的servlet 元素的子元素 init-param元素,属于内部持久有效的变量
ServletContext 存储 servlet 容器的信息,相当于全局变量,而 ServletConfig 只是存储 servlet 容器中的一个 servlet 对象的信息,相当于局部变量
信息共享:
1、在web.xml中定义环境初始化参数:
<context-param>
<param-name>period</param-name>
<param-value>3600000</param-value>
</context-param>
2、setAttribute 方法:
该方法将一个对象绑定至一个给定名,任何已有的对此名的绑定都将被替换。
方法:
public void setAttribute(String name, Object object); //绑定对象
public void removeAttribute(String name); //删除绑定
public Object getAttribute(String name); //根据名称获取绑定的对象
public Enumeration getAttributeNames(); //获取所有绑定属性名称的队列
[filter 元素、filter-mapping 元素]
filter-mapping:
注意:
1、url-pattern对应的是映射的地址,比如:*.do 是映射所有以 .do 为结尾的路径;/* 是映射所有根目录下的文件路径;/webServlet.do 是映射包括 /webServlet.do 字符的路径即 root/webServlet.do; /webServlet.do 都能被映射。
2、servlet-name对应的是映射的servlet,即是servlet的名称。
3、启动容器时,读取 web.xml,将所有的 filter-mapping 元素按顺序添加进映射列表,当发生请求时,从映射列表中筛选出与请求地址对应的过滤器,然后执行过滤器对应的运行类(可以有多个对应的过滤器,按顺序执行)。
Filter servlet:
过滤器可截取和修改进入一个servlet或JSP页面的请求或从一个servlet或JSP页面发出的相应。在执行一个servlet或JSP页面之前,必须执行第一个相关的过滤器的doFilter方法。在该过滤器对其FilterChain对象调用doFilter时,执行链中的下一个过滤器。如果没有其他过滤器,servlet或JSP页面被执行。过滤器具有对到来的ServletRequest对象的全部访问权,因此,它们可以查看客户机名、查找到来的cookie等。为了访问servlet或JSP页面的输出,过滤器可将响应对象包裹在一个替身对象(stand-in object)中,比如说把输出累加到一个缓冲区。在调用FilterChain对象的doFilter方法之后,过滤器可检查缓冲区,如有必要,就对它进行修改,然后传送到客户机。
一般通过实现 Filter 接口来创建过滤器,Filter接口方法:
1、public void init(FilterConfig filterConfig) throws ServletException;
当过滤器初始化时,容器调用该方法。FilterConfig 对象包含了与Web应用程序上下文相关的信息。
2、public void doFilter ( ServletRequest request, ServletResponse response, FilterChain chain ) throws IOException, ServletException;
当收到使用过滤器的请求时,容器会调用 doFilter 方法,该方法先完成各种预处理逻辑,然后使用FilterChain.doChain()方法将请求转发给链表中的下一个过滤器(如果是最后一个过滤器则将请求转发到最终的目标)
3、public void destroy();
过滤器销毁之前,调用该方法
建立了一个过滤器后,可以在web.xml中利用filter元素来声明它,注意,所有filter元素必须出现在任意filter-mapping元素之前, filter-mapping元素又必须出现在所有servlet或servlet-mapping元素之前。
命名了一个过滤器后,可利用filter-mapping元素把它与一个或多个servlet或JSP页面相关联。关于此项工作有两种选择:
1、可使用filter-name和servlet-name子元素把此过滤器与一个特定的servlet名(此servlet名必须稍后在相同的 web.xml文件中使用servlet元素声明)关联。例如,下面的程序片断指示系统只要利用一个定制的URL访问名为webworkServlet 的servlet或JSP页面,就运行名为webworkFilter的过滤器。
<filter-name>webwork</filter-name>
<filter-class>com.webwork.dispatcher.WebworkFilterDispatcher</filter-class>
2、可利用filter-name和url-pattern子元素将过滤器与一组servlet、JSP页面或静态内容相关联。例如,相同的程序片段指示系统只要访问Web应用中的任意URL,就运行名为 webwork 的过滤器。
<filter-name>webwork</filter-name>
<url-pattern>/*</url-pattern>
例子:
import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class WebworkFilterDispatcher extends HttpServlet implements Filter { private FilterConfig config; public void init(FilterConfig config) { this.config = config; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) { doFilter((HttpServletRequest)request, (HttpServletResponse)response, filterChain); } public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) { try { //获取用户的信息; String username = config.getInitParameter("username"); if(username == null || "".equals(username)){ System.out.println("用户名不能为空!"); filterChain.doFilter(request, response); } else{ System.out.println("获取用户的信息: " + username); //response.sendRedirect("/FilterAction.do"); filterChain.doFilter(request, response); System.out.println("过滤结束"); } } catch(ServletException sx) { config.getServletContext().log(sx.getMessage()); } catch(IOException iox) { config.getServletContext().log(iox.getMessage()); } } public void destroy() { config = null; } }
import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class WebServlet extends HttpServlet { public void init() throws ServletException {} public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("跳转到WebServlet..."); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } public void destroy(){} }
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <filter> <filter-name>webwork</filter-name> <filter-class>com.webwork.dispatcher.WebworkFilterDispatcher</filter-class> <init-param> <param-name>username</param-name> <param-value>yefei</param-value> </init-param> </filter> <filter-mapping> <filter-name>webwork</filter-name> <servlet-name>webServlet</servlet-name> </filter-mapping> <filter-mapping> <filter-name>webwork</filter-name> <url-pattern>/*.do</url-pattern> </filter-mapping> <servlet> <servlet-name>webServlet</servlet-name> <servlet-class>WebServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>webServlet</servlet-name> <url-pattern>/webServlet</url-pattern> </servlet-mapping> </web-app>
调用:
<a href="/webServlet">实现过滤的入口</a>
结果:
获取用户的信息: yefei
跳转到WebServlet...
过滤结束
[listener 元素]
参考例子:http://elderheart.blog.sohu.com/85833792.html
发表评论
-
Can’t find bundle for base name xxx, locale en_US
2012-01-11 13:27 2028当报这个错误的时候Can’t find bundle f ... -
使用SchemaSpy逆向工程生成数据库依赖关系
2011-07-27 15:10 1496使用SchemaSpy工具可 ... -
Eclips 中生成SerialVersionUID
2011-06-23 16:17 831如何生成一个SerialVersionUID: 1.在I ... -
使用java获取汉字的全拼和简拼
2011-03-28 17:10 1443转自: http://mhqawjh.iteye.com/bl ... -
js里面object对象
2011-03-07 17:22 837对象的存取方式有2种如下 meberA.name ; meb ... -
java http 认证方式
2011-03-03 14:34 1299<%@ page language="java ... -
要实现SSO需要三个功能
2011-03-03 12:57 892概述 单点登录(Single Sign On), ... -
单点登录Single Sign-on
2011-03-03 11:27 1251转自:http://blog.csdn.net/j ... -
<login-config><auth-method>BASIC</auth-method></login-config>
2011-03-01 13:45 2380web实现basic与FORM验证 在web应用中,要经常对 ... -
Error 500: Cannot get a Ldap Connection: bluegroups.ibm.com:389
2011-02-12 13:32 1148在websphere 中部署好应用程序后,登录操作需要通过Ld ... -
Error 404: SRVE0190E: File not found: /login.action
2011-02-12 13:21 6579发生这样问题有两种情况。 (1)第一种,我的was是6.1, ...
相关推荐
Web.xml 配置详解 Web.xml 是一个部署描述符文件,用于描述 Web 应用程序的配置信息。该文件是基于 XML 语法的,所有的元素都是大小写敏感的。下面是 web.xml 配置文件的详细解释: 定义头和根元素 在 web.xml ...
二、web.xml的基本结构 `web.xml`通常包含以下几部分: 1. `<!DOCTYPE>`声明:指明文档类型和版本。 2. `<web-app>`元素:作为整个配置的根元素,包含其他所有配置元素。 3. `<display-name>`:设置Web应用的显示...
Web 应用程序部署描述符文件 `web.xml` 是配置 Java Web 应用的核心文件,它定义了应用程序的行为和结构。文件的正确配置对于确保应用的正常运行至关重要。以下是 `web.xml` 中主要元素的详细解释: 1. **定义头和...
### web.xml配置文件详解 #### 一、概述 `web.xml`是Java Web应用程序的核心配置文件之一,主要用于定义Web应用程序的结构与行为。它是Servlet容器(如Tomcat)读取Web应用程序配置信息的主要来源,因此深入理解其...
#### 二、`web.xml`的基本结构 `web.xml`文件以XML格式编写,主要包括以下几个部分: 1. **XML声明**:指定了XML文档的版本及字符编码方式。 ```xml <?xml version="1.0" encoding="ISO-8859-1"?> ``` 2. **...
**web.xml 文件详解** 在Java Web应用程序中,`web.xml`文件是部署描述符(Deployment Descriptor),它是配置应用核心行为的重要文件。它定义了Servlet、过滤器、监听器、会话超时、错误页面等关键组件,使得...
### Web.xml配置详解 #### 一、Web.xml概述 `web.xml` 文件是Java Web应用程序的核心配置文件之一,主要用于配置应用程序级别的各种初始化...理解`web.xml`的基本结构和各元素的作用是掌握Java Web开发的关键一步。
Web.xml 中的 listener、filter、servlet 加载顺序及其详解 在 Web 应用程序中,web.xml 文件扮演着非常重要的角色,它定义了 Web 应用的结构和配置。其中,listener、filter、servlet 是三个非常重要的概念,它们...
WEB.xml详解主要涉及了Java EE Web应用程序的标准配置文件web.xml的详细使用说明,这是Servlet规范中定义的一个配置文件,用于配置web应用的初始化参数、servlet和filter、监听器等组件。 首先,web.xml文件在Web...
### web.xml元素详解 在Java Web开发中,`web.xml`是部署描述符的核心组成部分,它定义了Web应用程序的配置信息。此文件位于WEB-INF目录下,被服务器用来解析Web应用的各种设置,如Servlet映射、过滤器配置、监听器...
### Web.xml 详解 #### 1. 定义头和根元素 在开始解析`web.xml`文件前,我们先了解其基本结构。部署描述符文件即`web.xml`文件,像所有XML文件一样,必须以一个XML头开始。这个头声明指定了可用的XML版本及文件的...
web.xml 配置详解 Web.xml 是一个用于配置 Java Web 应用程序的 XML 文件,它提供了站台的配置设定。web.xml 文件位于每个站点的 WEB-INF 目录下,用于定义站台的名称、环境参数、Servlet 的名称和映射、Session 的...
`web.xml`是Web应用的配置中心,它定义了应用的行为和结构,对于理解和调试应用非常重要。正确配置`web.xml`可以确保应用按照预期运行,并提供必要的功能和性能优化。在实际开发中,开发者需要根据项目需求来调整和...
#### 二、web.xml结构与元素 `web.xml`文件位于`WEB-INF`目录下,是每个Java Web项目不可或缺的一部分。该文件主要包含以下几部分: 1. **部署描述符(Deployment Descriptor)**:这是`web.xml`文件的根元素,它...
#### 二、web.xml结构概述 `web.xml`文件遵循XML的标准格式,其根元素为`<web-app>`,并引用了DTD(Document Type Definition)来定义文档的结构。本文将详细介绍`web.xml`文件中的关键元素及其作用。 #### 三、`...
**web.xml配置详解** 在Java Web开发中,`web.xml`是部署描述符(Deployment Descriptor)的核心文件,它定义了应用程序的行为和结构。这个CHM文件深入解析了`web.xml`的各种配置元素,帮助开发者更好地理解和控制...