Servlet2.4中web.xml配置及说明
contextloaderlistener 使用

contextloaderlistener 使用ContextLoaderListener是Spring框架中的一个监听器,它用于在Web应用程序启动时加载应用程序上下文(ApplicationContext)。
它是Servlet 2.4规范的一部分,通过在web.xml文件中配置ContextLoaderListener,可以在Web应用程序启动时自动加载Spring 配置文件,从而初始化Spring容器和其中的Bean。
ContextLoaderListener的主要作用是将Spring的ApplicationContext加载到ServletContext中,这样在整个Web应用程序中都可以访问到这个ApplicationContext。
通过ServletContext,我们可以获取到Spring容器中的Bean,从而实现依赖注入和面向切面编程等功能。
使用ContextLoaderListener需要进行以下步骤:在web.xml文件中配置ContextLoaderListener。
可以通过添加<listener>标签来实现,其中class属性指定为org.springframework.web.context.ContextLoaderListener。
在web.xml文件中指定Spring配置文件的路径。
可以通过<context-param>标签来实现,其中param-name指定为contextConfigLocation,param-value指定Spring配置文件的路径。
在Spring配置文件中定义Bean和相关的依赖关系。
通过以上步骤,当Web应用程序启动时,ContextLoaderListener会自动加载Spring 配置文件,并将ApplicationContext存储到ServletContext中。
在后续的代码中,我们可以通过ServletContext获取到ApplicationContext,从而获取到需要的Bean并进行相关操作。
struts2下载(使用配置文件)

struts2下载(使用配置文件)1.第一步web.xml2.<?xml version="1.0" encoding="UTF-8"?>3.<web-app version="2.4"4.xmlns="/xml/ns/j2ee"5.xmlns:xsi="/2001/XMLSchema-instance"6.xsi:schemaLocation="/xml/ns/j2ee7./xml/ns/j2ee/web-app_2_4.xsd">8.<welcome-file-list>9.<welcome-file>index.jsp</welcome-file>10.</welcome-file-list>11.12.<filter>13.<filter-name>struts2</filter-name>14.<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>15.</filter>16.<filter-mapping>17.<filter-name>struts2</filter-name>18.<url-pattern>/*</url-pattern>19.</filter-mapping>20.21.</web-app>第二步:struts.xml1.<!DOCTYPE struts PUBLIC2."-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"3."/dtds/struts-2.0.dtd">4.<struts>5.<package name="default" extends="struts-default">6.<action name="download" class="action.DownloadAction">7.<result type="stream">8.<param name="contentType">application/octet-stream</param>9.<param name="inputName">inputStream</param>10.<param name="contentDisposition">attachment;filename="${fileName}"</param>11.<param name="bufferSize">4096</param>12.</result>13.</action>14.</package>15.</struts>当result为stream类型时,struts2会自动根据你配置好的参数下载文件。
Java从服务器下载文件到本地(页面、后台、配置都有)

Java从服务器下载⽂件到本地(页⾯、后台、配置都有)先来看实现效果:有⼀个链接如下:点击链接下载⽂件:第⼀种⽅法:Servlet实现⼀、HTML页⾯部分:1、HTML页⾯中的⼀个链接<a id="downloadTemplate" style="color:blue" onclick="download();">下载导⼊模板</a>2、引⼊JSfunction download(){downloadTemplate('downloadExel.downloadexcel', 'filename', 'project');}/*** ⽤于下载导⼊模板时的影藏form表单的提交,采⽤post⽅式提交* @param action action映射地址* @param type parameter的名称* @param value parameter的值,这⾥为file的filename*/function downloadTemplate(action, type, value){var form = document.createElement('form');document.body.appendChild(form);form.style.display = "none";form.action = action;form.id = 'excel';form.method = 'post';var newElement = document.createElement("input");newElement.setAttribute("type","hidden"); = type;newElement.value = value;form.appendChild(newElement);form.submit();}3、解释上⾯JS(不是正是代码)相当于提交⼀个form,⾥⾯如下:<input type=hidden name="filename" value = "project">后台可以通过下⾯代码获得⽂件名:projectString filename = request.getParameter("filename");(这段是上⾯js的翻译,不是正式的哦)配置前台页⾯和后台交互1、web.xml配置<?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp_ID" version="2.4"xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee /xml/ns/j2ee/web-app_2_4.xsd"><servlet><servlet-name>downloadServlet</servlet-name><servlet-class>com.zit.rfid.app.prms.business.service.servlet.DownloadTemplateServlet</servlet-class><load-on-startup>3</load-on-startup></servlet><servlet-mapping><servlet-name>downloadServlet</servlet-name><url-pattern>*.downloadexcel</url-pattern></servlet-mapping></web-app>我这个web.xml不是整个⼯程的web.xml,只是⼀个模块的,在你的web.xml加⼊上⾯servlet和servlet-mapping⾥的内容即可如上:(1)接受 *.downloadexcel 的Action(2)HTML的JS⾥的Action,交给com.test.DownloadTemplateServlet这个类去处理2、WebContent⽬录下新建file⽂件夹,存放project.xls⽂件(Eclipse的Web⼯程有WebContent,MyEclipse好像是WebRoot)三、后台部分1、新建⼀个servlet: DownloadTemplateServlet.javapackage com.test;import java.io.DataInputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.OutputStream;import java.io.OutputStreamWriter;import .URLEncoder;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/*** @author 022******** 主要⽤于下载导⼊模板,页⾯上传⼊的request中parameter中,filename代表了要下载的模板的名称*/public class DownloadTemplateServlet extends HttpServlet {/**private static final long serialVersionUID = -4541729035831587727L;private final static String HOME_PATH = DownloadTemplateServlet.class.getResource("/").getPath();private final static String DOWNLOAD_TEMP_FILE = HOME_PATH.subSequence(0, HOME_PATH.indexOf("WEB-INF")) + "file/"; @Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {String filename = req.getParameter("filename");try{resp.reset();// 清空输出流String resultFileName = filename + System.currentTimeMillis() + ".xls";resultFileName = URLEncoder.encode(resultFileName,"UTF-8");resp.setCharacterEncoding("UTF-8");resp.setHeader("Content-disposition", "attachment; filename=" + resultFileName);// 设定输出⽂件头resp.setContentType("application/msexcel");// 定义输出类型//输⼊流:本地⽂件路径DataInputStream in = new DataInputStream(new FileInputStream(new File(DOWNLOAD_TEMP_FILE + filename + ".xls")));//输出流OutputStream out = resp.getOutputStream();//输出⽂件int bytes = 0;byte[] bufferOut = new byte[1024];while ((bytes = in.read(bufferOut)) != -1) {out.write(bufferOut, 0, bytes);}out.close();in.close();} catch(Exception e){e.printStackTrace();resp.reset();try {OutputStreamWriter writer = new OutputStreamWriter(resp.getOutputStream(), "UTF-8");String data = "<script language='javascript'>alert(\"\\u64cd\\u4f5c\\u5f02\\u5e38\\uff01\");</script>";writer.write(data);writer.close();} catch (IOException e1) {e1.printStackTrace();}}}}⼤致步骤:1. 获取服务器⽂件所在路径2. 输⼊服务器⽂件3. 输出⽂件到本地第⼆种⽅法:SpringMVC实现这种⽅法⽐较简单⼀、JSP页⾯部分<a id="downloadTemplate" style="color:blue" onclick="download();">下载导⼊模板</a>//导出模板下载function download(){//后台⽅法、⽂件类型、⽂件名downloadTemplate('${pageContext.request.contextPath}/cardIssueVehicleInfo/exportVehicleInfo', 'filename', 'test'); }/*** ⽤于下载导⼊模板时的影藏form表单的提交,采⽤post⽅式提交* @param action 请求后台⽅法* @param type ⽂件类型* @param value ⽂件名*/function downloadTemplate(action, type, value){var form = document.createElement('form');document.body.appendChild(form);form.style.display = "none";form.action = action;form.id = 'excel';form.method = 'post';var newElement = document.createElement("input");newElement.setAttribute("type","hidden"); = type;newElement.value = value;form.appendChild(newElement);form.submit();}⼆、后台部分@RequestMapping("exportVehicleInfo")public void exportVehicleInfo(HttpServletRequest req, HttpServletResponse resp) {String filename = req.getParameter("filename");DataInputStream in = null;OutputStream out = null;try{resp.reset();// 清空输出流String resultFileName = filename + System.currentTimeMillis() + ".xls";resultFileName = URLEncoder.encode(resultFileName,"UTF-8");resp.setCharacterEncoding("UTF-8");resp.setHeader("Content-disposition", "attachment; filename=" + resultFileName);// 设定输出⽂件头resp.setContentType("application/msexcel");// 定义输出类型//输⼊流:本地⽂件路径in = new DataInputStream(new FileInputStream(new File(downloadPath + "test.xls")));//输出流out = resp.getOutputStream();//输出⽂件int bytes = 0;byte[] bufferOut = new byte[1024];while ((bytes = in.read(bufferOut)) != -1) {out.write(bufferOut, 0, bytes);}} catch(Exception e){e.printStackTrace();resp.reset();try {OutputStreamWriter writer = new OutputStreamWriter(resp.getOutputStream(), "UTF-8");String data = "<script language='javascript'>alert(\"\\u64cd\\u4f5c\\u5f02\\u5e38\\uff01\");</script>";writer.write(data);writer.close();} catch (IOException e1) {e1.printStackTrace();}}finally {if(null != in) {try {in.close();} catch (IOException e) {e.printStackTrace();}if(null != out) {try {out.close();} catch (IOException e) { e.printStackTrace(); }}}}。
《Servlet组件》-第03章- 监听器与过滤器-题目

知识点01-监听器:011203001题目1:当Web应用程序被关闭时,Servlet容器会调用Servlet Context“监听器”的哪个方法?( B ) 易A contextInitialized()B contextDestroyed()C contextFinialized()D contextShutdown()题目2:监听事件和处理事件(A )易A 都由Listener完成B 都由相应事件Listener处登记过的构件完成C 由Listener和构件分别完成D 由Listener和窗口分别完成题目3:察看下面这个类( C )易public class IfAttributsChanged implements ServletContextAttributeListener{public void attributeAdded(ServletContextAttributeEvent scab){System.out.println(“加入一个属性”);}public void attributeRemoved(ServletContextAttributeEvent scab){System.out.println(“删除一个属性”);}}关于IfAttributsChanged类的叙述,下列哪一个为真?A 此类可以成功编译B 此类无法成功编译,原因是缺少attributeChanged()方法。
C 此类无法成功编译,原因是缺少attributeReplaced()方法。
D 此类无法成功编译,原因是缺少attributeUpdated()方法。
题目4:实现下列哪一种接口的对象,并不需要在web.xml文件内进行额外的设定,Servlet 容器就能够回应该对象加入HTTP会话所发生的事件?(D )易A ServletContextListenerB HttpSessionListenerC HttpSessionAttributeListenerD HttpSessionBindingListener题目5:上下文相关的监听器(B C)(选择两项)易A HttpSessionListenerB ServletContextListenerC ServletContextAttributeListenerD ServletRequestAttributeListener题目6:Servlet2.4 以后提供了哪几种对象的事件监听。
servlet的基本运行流程

Servlet的基本运行流程Servlet是Java Web中的一种技术,能够处理来自客户端的请求并生成响应。
它是在Web服务器上运行的Java类,可以与容器进行交互。
下面将详细描述Servlet的基本运行流程的步骤和流程。
1. Servlet的生命周期Servlet的生命周期包括以下三个阶段: - 初始化阶段(Initialization) - 服务阶段(Service) - 销毁阶段(Destroy)1.1 初始化阶段在Servlet类被加载到容器中时,(通常在Web应用程序启动时),容器会实例化Servlet对象,并调用其init()方法来进行初始化。
该方法只会在Servlet生命周期中被调用一次。
1.2 服务阶段一旦Servlet被初始化后,在其生命周期内,任何对Servlet的请求都会被容器处理。
当接收到一个客户端请求时,容器会创建一个新的线程,并调用Servlet的service()方法来处理该请求。
service()方法会根据请求的类型(GET、POST等)来调用相应的方法(如doGet()、doPost()等)进行处理。
1.3 销毁阶段当Web应用程序被关闭或Servlet容器被关闭时,容器会调用Servlet的destroy()方法来清除资源、释放内存和进行最后的操作,以完成Servlet的销毁过程。
2. Servlet运行流程Servlet的运行流程包括以下几个步骤:2.1 客户端发送请求当客户端(如浏览器)向Web服务器发送一个HTTP请求时,请求首先会到达Web容器。
2.2 容器寻找匹配的ServletWeb容器根据请求的URL来确定匹配的Servlet。
容器会维护一个Servlet映射表,将URL与对应的Servlet进行关联。
2.3 容器创建或获取Servlet实例如果Servlet实例不存在,则容器会创建一个新的Servlet实例,并调用其init()方法来进行初始化。
Bean的作用域介绍(Singleton与prototype)

Bean的作用域介绍(Singleton与prototype)Spring Bean作用域介绍:singleton:Spring Ioc容器只会创建该Bean的唯一实例,所有的请求和引用都只使用这个实例Property: 每次请求都创建一个新实例request: 在一次Http请求中,容器会返回该Bean的同一个实例,而对于不同的用户请求,会返回不同的实例。
需要注意的是,该作用域仅在基于Web的Spring ApplicationContext情形下有效,以下的session 和global Session也是如此session:同上,唯一的区别是请求的作用域变为了sessionglobal session:全局的HttpSession中,容器会返回该bean的同一个实例,典型为在是使用portlet context 的时候有效(这个概念本人也不懂)注意:如果要用到request,session,global session时需要配置servlet2.4及以上:在web.xml中添加:<listener><listener-class>org.springframework.web.context.scope.RequestContextListener /></listener>servlet2.4以下:需要配置一个过滤器<filter><filter-name>XXXX</filter-name><filter-class>org.springframework.web.filter.RequestContextFilter</filter-class><filter-mapping><filter-name>XXXX</filter-name><url-pattern>/*</url-pattern></filter-mapping>另外,从2.0开始,可以自己定义作用域,但需要实现scope,并重写get和remove方法特别要引起注意的是:一般情况下前面两种作用域是够用的,但如果有这样一种情况:singleton类型的bean引用一个prototype的bean时会出现问题,因为singleton只初始化一次,但prototype每请求一次都会有一个新的对象,但prototype类型的bean是singleton类型bean的一个属性,理所当然不可能有新prototpye的bean 产生,与我们的要求不符解决方法:1.放弃Ioc,这与设计初衷不符,并代码间会有耦合2,Lookup方法注入,推荐但在用Lookup方法注入时也需要注意一点:需要在引用的Bean中定一个一个抽象地返回被引用对象的方法package com.huyong.lookup;import java.util.Calendar;/*** @author HuY ong Email:yate7571@*/public class CurrentTime {private Calendar now = Calendar.getInstance();public void printCurrentTime() {System.out.println("Current Time:" + now.getTime());}}package com.huyong.lookup;/*** @author HuY ong Email:yate7571@*/public abstract class LookupBean {private CurrentTime currentTime;public CurrentTime getCurrentTime() {return currentTime;}public void setCurrentTime(CurrentTime currentTime) {this.currentTime = currentTime;}public abstract CurrentTime createCurrentTime();}<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-2.0.xsd"><bean id="currentTime" class="com.huyong.lookup.CurrentTime"scope="prototype"></bean><bean id="lookupBean" class="com.huyong.lookup.LookupBean"scope="singleton"><lookup-method name="createCurrentTime" bean="currentTime" /><property name="currentTime" ref="currentTime"></property></bean></beans>Main Test:package com.huyong.lookup;import org.springframework.beans.factory.BeanFactory;import org.springframework.beans.factory.xml.XmlBeanFactory;import org.springframework.core.io.ClassPathResource;/*** @author HuY ong Email:yate7571@*/public class LookupMain {/*** @param args* @throws Exception*/public static void main(String[] args) throws Exception { ClassPathResource resource = new ClassPathResource( "applicationContext.xml");BeanFactory factory = new XmlBeanFactory(resource);LookupBean lookupBean = (LookupBean) factory.getBean("lookupBean"); System.out.println("----------first time---------");System.out.println("getCurrentTime:");lookupBean.getCurrentTime().printCurrentTime();System.out.println("createCurrentTime:");lookupBean.createCurrentTime().printCurrentTime();Thread.sleep(12345);System.out.println("---------second time---------");System.out.println("getCurrentTime:");LookupBean lookupBean02 = (LookupBean) factory.getBean("lookupBean"); lookupBean02.getCurrentTime().printCurrentTime();System.out.println("createCurrentTime:");lookupBean02.createCurrentTime().printCurrentTime();}}感觉Spring的东西比较杂,学好spring一定要明白反射和代理是怎么回事!渐渐的也挺会到了Spring的好处!简单就是美!!。
JSTL中的TLD配置和使用。

JSTL中的TLD配置和使⽤。
⼀,JSTL介绍: JSTL标签库,是⽇常开发经常使⽤的,也是众多标签中性能最好的。
把常⽤的内容,放在这⾥备份⼀份,随⽤随查。
尽量做到不⽤查,就可以随⼿就可以写出来。
这算是Java程序员的基本功吧,⼀定要扎实。
JSTL全名为JavaServer Pages Standard Tag Library。
JSTL是由JCP(Java Community Process)所制定的标准规范,它主要提供给Java Web开发⼈员⼀个标准通⽤的标签函数库。
Web程序员能够利⽤JSTL和EL来开发Web程序,取代传统直接在页⾯上嵌⼊Java程序(Scripting)的做法,以提⾼程序的阅读性、维护性和⽅便性。
⼆,JSTL配置: 主要牵涉到两个jar包 standward.jar和jstl.jar包(两个包1.0和1.2版本的下载以及TLD下载路径如下:) 加载⽅式包括两种 1,⾮⾃动加载 a,将tld⽂件copy到WEB-INFO下的tld⽬录下,没有就创建之 b,修改web.xml⽂件配置,添加配置如下 1<jsp-config>2<taglib>3<taglib-uri>/jstl/core</taglib-uri>4<taglib-location>/WEB-INF/tld/c.tld</taglib-location>5</taglib>6<taglib>7<taglib-uri>/jstl/fmt</taglib-uri>8<taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>9</taglib>10<taglib>11<taglib-uri>/jstl/fn</taglib-uri>12<taglib-location>/WEB-INF/tld/fn.tld</taglib-location>13</taglib>14</jsp-config>View Code c,jsp中引⽤taglib 2,⾃动加载Servlet2.4规范提供了对tld⽂件的⾃动加载,tld⽂件在standard.jar的META-INF⽂件夹中。
T09 Web监听与过滤

HttpSessionListener接口 接口
其中HttpSessionEvent是会话事件类,其声明如下: 是会话事件类,其声明如下: 其中 是会话事件类
ServletContext getServletContext()方法: 方法: 方法 该方法返回事件的Servlet上下文,即产生事件的当前应用程序。 上下文, 该方法返回事件的 上下文 即产生事件的当前应用程序。
ServletContextAttributeListener接口
ServletContextAttributeEvent是Servlet上下文中的属性事件,声明如下 是 上下文中的属性事件, 上下文中的属性事件
Servlet上下文监听 上下文监听
在Web应用中可以通过创建监听程序来监听 应用中可以通过创建监听程序来监听 ServletContext的信息: 的信息: 的信息
比如监听ServletContext的创建和删除 的创建和删除 比如监听 属性的增加、 对ServletContext属性的增加、删除和修改等操 属性的增加 作进行监听。 作进行监听。
Filter -- 运作方式
Servlet Container doFilter() FilterChain#doFilt er() FilterChain#doFilt er() Service() 传回内容 Filter 1 Filter 2 Servlet/Jsp/静态文件 静态文件
doFilter()
包含方法: 包含方法:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Servlet2.4中web.xml配置及说明<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/xml/ns/j2ee /xml/ns/j2ee/web-app_2_4.xsd" version="2.4"><!-- icon元素指出IDE和GUI工具用来表示Web应用的一个和两个图像文件的位置--><icon><small-icon>/images/small.gif</small-icon><!-- 16*16 --><large-icon>/images/large.jpg</large-icon><!-- 32*32 --></icon><!-- display-name元素提供GUI工具可能会用来标记这个特定的Web应用的一个名称--><display-name>The applicaitonname</display-name><!-- description元素给出与此有关的说明性文本--> <description>A longer description of the application</description><!-- 用于告知Web容器: 应用设计为在分布式Web容器中运行. --><distributable /><!-- context-param元素声明应用范围内的所有组件(servlet和JSP页面)都可用的上下文参数--><context-param><!-- 参数名称--><param-name>Support</param-name><!-- 参数值--><param-value>xihaikun@</param-value&g t;</context-param><!-- 注册一个过滤器组件--><filter><!-- 描述--><description></description><!-- 名称--><display-name></display-name><icon></icon><!-- 过滤器名称--><filter-name>filtername</filter-name><!-- 具体类--><filter-class>com.ebuilds.Filter</filter-class> <!-- 初始化参数--><init-param><param-name></param-name><param-value></param-value></init-param></filter><!-- 将过滤器映像至一个URI模式, 或者映像至一个Servlet. --><filter-mapping><filter-name>filtername</filter-name><url-pattern></url-pattern></filter-mapping><filter-mapping><filter-name>filtername</filter-name><servlet-name>servletName</servlet-name> </filter-mapping><!-- 注册一个监听器--><listener><listener-class>com.ebuilds.ajax.TaskListener</list ener-class></listener><!-- 定义了Servlet或JSP页面的细节. 最常见的情况是, 此元素仅把一个Servlet或JSP页面与一个短名相关联, 并指定初始化参数: --><servlet><!-- servlet-name元素用来定义servlet的名称,该名称在整个应用中必须是惟一的--><servlet-name>TimeServlet</servlet-name><!-- 用来指定servlet的完全限定的名称--><servlet-class>com.ebuilds.ajax.TimeServlet</servl et-class><!-- 元素用来指定应用中JSP文件的完整路径。
这个完整路径必须由/开始,不能和<servlet-class>元素同时出现--><!-- <jsp-file>/index.jsp</jsp-file> --><init-param><param-name>count</param-name><param-value>1</param-value></init-param><!--当启动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 --><load-on-startup>1</load-on-startup><!-- 如果定义了run-as元素,它会重写用于调用Web 应用中servlet所设定的Enterprise JavaBean(EJB)的安全身份。
--><run-as><!-- Role-name是为当前Web应用定义的一个安全角色的名称--><role-name></role-name></run-as><!-- security-role-ref元素定义一个映射,该映射在servlet中用isUserInRole (String name)调用的角色名与为Web应用定义的安全角色名之间进行--><security-role-ref><role-name></role-name><!-- role-link元素用来将安全角色引用链接到已定义的安全角色。
role-link元素必须含有已经在security-role元素中定义的一个安全角色的名称--><role-link></role-link></security-role-ref></servlet><!-- 元素将一个Servlet或JSP页面映像至一个URL模式. --><!-- 路径前缀模式: --><servlet-mapping><servlet-name>purchase</servlet-name><url-pattern>/po/*</url-pattern></servlet-mapping><!-- 完全匹模模工: --><servlet-mapping><servlet-name>sales-report</servlet-name><url-pattern>/report</url-pattern></servlet-mapping><!-- 扩展名映像模式: --><servlet-mapping><servlet-name>XMLProcessor</servlet-name> <url-pattern>*.xml</url-pattern></servlet-mapping><!-- 定制会话处理属性.在一个部署描述文件中只能使用一个此类元素--><session-config><!--设置会话过期时间--><session-timeout>180</session-timeout></session-config><!-- 如果Web应用具有想到特殊的文件,希望能保证给他们分配特定的MIME类型,则mime-mapping元素提供这种保证--><mime-mapping><extension></extension><mime-type></mime-type></mime-mapping><!--定义要在目录中查找并提供索引文件的有序表.如果使用了多个此类元素, 容器会将其合并. --><welcome-file-list><welcome-file>index.jsp</welcome-file><welcome-file>index.html</welcome-file></welcome-file-list><!--指定错误的页面--><error-page><!-- 指出在给定的HTTP错误代码出现时使用的URL --><error-code>404</error-code><location>/NotFound.jsp</location></error-page><error-page><!-- 指出在出现某个给定的Java异常但未捕捉到时使用的URL --><exception-type>exception.ServletNotFound</exce ption-type><location>/sorry.jsp</location></error-page><jsp-config><jsp-property-group><!-- 设定的说明--><description>Special property group for JSP Configuration JSPexample.</description><!-- 设定名称--><display-name>JSPConfiguration</display-name&g t;<!-- 设定值所影响的范围--><url-pattern>/jsp/*</url-pattern><!--允许或者禁止EL语言若为true,表示不支持EL 语法--><el-ignored>true</el-ignored><!-- 设定JSP 网页的编码--><page-encoding>GB2312</page-encoding><!-- 若为true,表示不支持<% scripting %>语法--><scripting-invalid>true</scripting-invalid><!-- 设置JSP 网页的头,扩展名为.jspf --><include-prelude>/include/prelude.jspf</include-prel ude><!-- 设置JSP 网页的结尾,扩展名为.jspf --><include-coda>/include/coda.jspf</include-coda> </jsp-property-group></jsp-config><!-- 声明对于受保护资源使用何种鉴别方法.在一个部署描述文件中只能使用一个此类元素--><login-config><auth-method>FORM</auth-method><form-login-config><form-login-page>/login/login.html</form-login-page ><form-error-page>/login/error.html</form-error-page ></form-login-config></login-config><!-- resource-env-ref元素声明与资源相关的一个管理对象。