第10讲部署描述符文件

it2024-07-19  39

文章目录

部署描述符文件的作用常用元素的声明与配置icondisplay-namedescriptioncontext-paramfilterfilter-mappinglistenerservletservlet-mappingsession-configmime-mappingwelcome-file-listerror-pagejsp-config提供安全性login-configsecurity-constraintsecurity-role JavaEE元素distributableresource-env-ref


本讲教学目标:熟悉部署描述符文件中各个元素的作用与使用方法

部署描述符文件的作用

web.xml叫做部署描述符文件,是在Servlet规范中定义的,是web应用的配置文件。

作用:描述了容器运行程序所需要的信息,提供站点的配置设定

web.xml文件是XML文档

必须以XML声明开头,指出XML版本及字符编码顶层(根)元素为,元素名大小写敏感 web-App和WEB-APP都是不合法的,web-app必须用小写 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> </web-app>

各元素对出现在其他元素中的次序敏感

可省略某些可选元素,但不能将其放在不正确的位置

xsd文档的作用是定义XML文档的合法构建模块,类似dtd

学习XML Schema(.xsd)教程

http://www.w3school.com.cn/schema/index.asphttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd

常用元素的声明与配置

icon

包含small-icon和large-icon元素,为大型和小型GIF或JPEG图标图片指定文件名

用于在GUI工具中表示父元素。

<icon> <small-icon>/images/small.gif</small-icon> <large-icon>/images/large.gif</large-icon> </icon>

display-name

定义应用的名称

<display-name>myFirstApp</display-name>

description

对应用做出描述

<description>测试应用V1.0</description>

context-param

context-param 应用范围内初始化参数

- <param-name>参数名称</param-name> - <param-value></param-value> 范例 <context-param> <param-name>param_name</param-name> <param-value> param_value</param-value> </context-param>

filter

声明了Web应用程序中的过滤器

– filter-name元素是过滤器的逻辑名称。 – filter-class是过滤器的完全限定类名。 – init-param元素包含的名-值对作为此过滤器的初始化参数。 – 当指定可选的async-supported元素时,表示该过滤器支持异步请求处理。

<filter> <filter-name>authorizefilter</filter-name> <filter-class>onest.web.filter.AuthorizeFilter</filter-class> </filter>

filter-mapping

容器使用filter-mapping决定哪个过滤器以什么样的顺序应用到请求。

– filter-name的值必须是部署描述符中声明过的一个过滤器中。 – 匹配的请求可以被指定为url-pattern或servlet-name。

<filter> <filter-name>authorizefilter</filter-name> <filter-class>onest.web.filter.AuthorizeFilter</filter-class> </filter> <filter-mapping> <filter-name>authorizefilter</filter-name> <url-pattern>/admin/*</url-pattern> </filter-mapping>

listener

指定事件监听程序

listener-class声明应用程序中的一个类必须注册为Web应用程序监听器bean。它的值是监听器类的完全限定类名。

<listener> <listener-class> onest.dev.ServletcontextListenerDemo </listener-class> </listener>

String框架以后就要用

servlet

servlet元素用于声明一个servlet

jsp-file元素命名JSP页面,包含到以“/”开头的Web应用程序中一个JSP文件的完全路径。

所指的JSP文件可存放于WEB-INF目录

– servlet-name元素包含了servlet的规范名称。 – servlet-class包含了servlet的完全限定类名。 – load-on-startup元素表示该servlet应该在Web应用程序启动时加载。,参数是整数

<servlet> <servlet-name>HelloServlet</servlet-name> <jsp-file>/hello.jsp</jsp-file> 这行标签类似于ServletClass <load-on-startup>1</load-on-startup> </servlet> -------------------------------------------------------------- <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>onest.HelloServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>

servlet-mapping

定义servlet和URL模式之间的映射。

servlet-name:定义Servlet的名称

url-pattern:使用servlet-mapping元素将定制的URL与刚分配的名称相关联

<servlet> <load-on-startup>1</load-on-startup> <servlet-name>HelloServlet</servlet-name> <servlet-class>onest.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>

session-config

控制会话超时

如果某个会话在一定的时间内未被访问,服务器可以把它扔掉以节约内存。

session-config和session-timeout元素给出一个适用于所有服务器的明确的超时 session-timeout元素的值的单位为 分钟

Session是存储在服务器内存的,不适宜时间太长。

<session-config> <session-timeout> 3 </session-timeout> </session-config>

mime-mapping

关联文件与MIME类型,一般用于多媒体文件关联。

服务器一般都具有一种让Web站点管理员将文件扩展名与媒体相关联的方法。如:自动给予名为mom.jpg的文件一个image/jpeg的MIME类型

如果希望将特殊的文件发送到客户机时分配为某种MIME类型,使用mime-mepping元素

<mime-mapping> <extension>foo</extension> <mime-type>application/x-fubar</mime-type> </mime-mapping>

welcome-file-list

指定欢迎页

如果一个URL给出了一个目录名但未给出文件名,服务器应该使用指定的欢迎页面

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

error-page

error-page元素来指定错误页面

包含一个错误代码或异常类型到Web应用程序中资源的路径之间的映射 – error-code错误代码 – exception-type包含了一个Java异常类型的完全限定类名称。 – location包含了web应用程序中相对于web应用程序根目录的资源位置。location的值必须以’/'开头。

<error-page> <error-code>500</error-code> <location>/500.jsp</location> </error-page> <error-page> <error-code>404</error-code> <location>/404.jsp</location> </error-page> <error-page> <exception-type>java.io.IOException</exception-type> <location>/error.jsp</location> </error-page>

jsp-config

jsp-config用来提供Web应用程序中的JSP文件的全局配置信息。 – taglib元素可用来为Web应用程序中的JSP页面使用的标签库提供信息。使用<taglib>给TLD文件起一个别名 – jsp-property-group:给一定范围类的JSP文件设置一些特性

<jsp-config> <taglib> <taglib-uri>mytag</taglib-uri> <taglib-location>/WEB-INF/mytag.tld</taglib-location> </taglib> </jsp-config>

提供安全性

利用web.xml中相关元素为服务器内建功能提供安全性:

- 指定验证的方法:<login-config> - 限制对web资源的访问:<security-constraint> - 分配角色名:<security-role>

login-config

配置认证方法

auth-method为Web应用程序配置认证机制 - 该元素的内容必须是BASIC、DIGEST、FORM、CLIENT-CERT、或提供商指定的认证模式

realm-name表示为Web应用程序选择用于认证模式的领域名。

form-login-config指定应该用于基于表单登录的登录和错误页面

<login-config> <auth-method>BASIC</auth-method> </login-config>

security-constraint

使用<security-constraint>元素配置安全约束 <display-name>:可选,指定安全约束名称 <web-resource-collection>:指定安全约束应用的资源集合 <auth-constraint>:指定可访问受保护资源的角色 <user-data-constraint>:指定数据通讯的方式 <security-constraint> <web-resource-collection> <web-resource-name>test2</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>tomcat1</role-name> </auth-constraint> </security-constraint>

security-role

定义了一个安全角色。子元素role-name指定安全角色的名称。

<security-constraint> <web-resource-collection> <web-resource-name>test2</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>tomcat1</role-name> </auth-constraint> </security-constraint> <security-role> <role-name>tomcat1</role-name> </security-role>

JavaEE元素

- <distributable/>:支持集群的服务器可安全的在多个服务器上分布Web应用 - <resource-env-ref>:声明一个与某个资源有关的管理对象 - <resource-ref>:声明一个资源引用

distributable

在应用的web.xml加<distributable/> 即可

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <distributable/> </web-app>

resource-env-ref

resource-env-ref有两个子元素:

resource-env-ref-name定义资源名,资源的名称相对于java:comp/envresource-env-ref-type查找资源时返回的资源类型,当web应用查找该资源的时候,返回的Java类名的全称 <resource-env-ref> <resource-env-ref-name>jdbc/mssql</resource-env-ref-name> <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type> </resource-env-ref>

resource-ref

resource-ref元素包括五个子元素,利用JNDI取得应用可利用资源.

description:资源说明rec-ref-name:资源名称res-type:资源种类res-auth:资源由Application或Container来许可res-sharing-scope:资源是否可以共享.默认值为Shareable <resource-ref> <description>JNDI JDBC DataSource</description> <res-ref-name>jdbc/data</res-ref-name> <res-type>javax.sql.DataSoruce</res-type> <res-auth>Container</res-auth> </resource-ref>
最新回复(0)