1、web.xml:1、web.xml学名叫部署描述符文件,是在Servlet规范中定义的,是web应用的配置文件。2、部署描述符文件就像所有XML文件一样,必须以一个XML头开始。这个头声明可以使用的XML版本并给出文件的字符编码。DOCYTPE声明必须立即出现在此头之后。这个声明告诉服务器适用的servlet规范的版本(如2.2或2.3)并指定管理此文件其余部分内容的语法的DTD(Document Type Definition,文档类型定义)。所有部署描述符文件的顶层(根)元素为web-app。请注意,XML元素不像HTML,他们是大小写敏感的。因此,web-App和WEB-APP都是不合法
2、的,web-app必须用小写。3、web.xml中XML 元素不仅是大小写敏感的,而且它们还对出现在其他元素中的次序敏感。例如,XML头必须是文件中的第一项,DOCTYPE声明必须是第二项,而web- app元素必须是第三项。在web-app元素内,元素的次序也很重要。服务器不一定强制要求这种次序,但它们允许(实际上有些服务器就是这样做的)完全拒绝执行含有次序不正确的元素的Web应用。这表示使用非标准元素次序的web.xml文件是不可移植的。web.xml样例:!DOCTYPEweb-appPUBLIC-/SunMicrosystems,Inc./DTDWebApplication2.3/EN
3、元素标签详解:元素1:icon元素包含small-icon和large-icon两个子元素. 出IDE和GUI工具用来表示Web应用的一个和两个图像文件的位置。/路径/smallicon.gifsmall-icon元素应指向web站台中某个小图标的路径,大小为16 X 16 pixel,但是图象文件必须为GIF或JPEG格式,扩展名必须为:.gif或.jpg./路径/largeicon-jpglarge-icon元素应指向web站台中某个大图表路径,大小为32 X 32 pixel,但是图象文件必须为GIF或JPEG的格式,扩展名必须为; gif或jpg.范例 /images/small.gi
4、f /images/large.gif元素2、3:,定义访问web项目应用的名称。ip:端口/应用名/service/应用描述 对应用做出描述。范例test测试应用V1.0元素4:context-param元素用来设定web应用的环境参数(例如设定spring配置文件名称)包含两个子元素:param-name和param-value。参数名称 设定Context名称值 设定Context名称的值范例 param_name param_value此所设定的参数,在JSP网页中可以使用下列方法来取得:$initParam.param_name若在Servlet可以使用下列方法来获得:String
5、param_name=getServletContext().getInitParamter(param_name);元素5,6:,filter元素用来设定web应用的过滤器,它的两个主要子元素filter-name、filter-class、init-param用来定义Filter所对应的class和过滤器(filter)中的初始化方法(init)的参数Filter的名称 定义Filter的名称Filter的类名称 定义Filter的类路径和名称 encoding GBK 参数名称 参数值filter-mapping 元素的两个主要子元素filter-name和url-pattern.用来定
6、义Filter所对应的URL.Filter的名称 定义Filter的名称.URL Filter所对应的RUL.例如:/Filter/*范例 Encoding ghjf.test.filter.SetCharacterEncodingFilter encoding GBK Encoding /*元素7:在web应用启动时启动监听listener元素用来定义Listener接口,它的主要子元素为Listener的类名称定义Listener的类名称范例 org.springframework.web.context.ContextLoaderListener元素8、9:、servlet元素的两个主要
7、子元:servlet-name和servlet-class用来定义servlet所对应的java类servlet的名称 定义servlet的名称servlet的类名称 定义servlet的类名称和路径servlet-mapping元素包含两个子元素servlet-name和url-pattern.用来定义servlet所对应URL.Servlet的名称定义Servlet的名称.Servlet URL定义Servlet所对应的RUL.例如:/Servlet/*范例dwr-invokerDWR ServletDirect Web Remoter Servletuk.ltd.getahead.dwr
8、.DWRServlet debug truedwr-invoker/dwr/*元素10:session-config包含一个子元素session-timeout.定义web应用中的session参数.分钟定义这个web站台所有session的有效期限.单位为分钟.范例 30?元素11: mime-mapping包含两个子元素extension和mime-type.定义某一个扩展名和某一MIME Type做对映.扩展名名称 扩展名称MIME格式 MIME格式.范例 doc application/vnd.ms-word xls application/vnd.ms-excel ppt appli
9、cation/vnd.ms-powerpoint元素12:welcome-file-list包含一个子元素welcome-file.用来定义首页列单.用来指定首页文件名称welcome-file用来指定首页文件名称.我们可以用指定几个首页,而服务器会依照设定的顺序来找首页. index.jsp index.htm元素13:error-page元素包含三个子元素error-code,exception-type和location.将错误代码(Error Code)或异常(Exception)的种类对应到web应用资源路径.错误代码 :HTTP Error code,例如: 404、403Exce
10、ption:一个完整名称的Java异常类型/路径 在web应用内的相关资源路径,一般是静态页面路径范例 404 /error404.jsp java.lang.Exception /exception.jsp元素14:jsp-config元素主要用来设定JSP的相关配置,包括和两个子元素.其中元素在JSP 1.2时就已经存在了;而是JSP 2.0新增的元素.taglib元素包含两个子元素taglib-uri和taglib-location.用来设定JSP网页用到的Tag Library路径.:URItaglib-uri定义TLD文件的URI,JSP网页的taglib指令可以经由这个URI存取到
11、TLD文件./WEB-INF/lib/xxx.tld TLD文件对应Web站台的存放位置.jsp-property-group元素包含8个元素,分别为:Description此设定的说明Name此设定的名称URL 设定值所影响的范围,如:/CH2 或者/*.jsptrue|false 若为true,表示不支持EL语法.true|false若为true表示不支持语法.encoding设定JSP网页的编码.jspf设置JSP网页的抬头,扩展名为.jspf.jspf设置JSP网页的结尾,扩展名为.jspf范例 Taglib /WEB-INF/tlds/MyTaglib.tld Special pro
12、perty group for JSP Configuration JSP example. JSPConfiguration /* true GB2312 true?元素15:resource-env-ref有两个子元素:资源名资源的名称 相对java:comp/env 当web应用查找该资源的时候,返回的Java类名的全称范例 jdbc/mssql javax.sql.DataSource?元素16:resource-ref元素包括五个子元素description,res-ref-name,res-type,res-auth,res-sharing-scope.利用JNDI取得应用可利用资
13、源.说明资源说明资源名称资源名称资源种类资源种类Application|Container资源由Application或Container来许可Shareable|Unshareable资源是否可以共享.默认值为 Shareable范例 JNDI JDBC DataSource jdbc/data javax.sql.DataSoruce Container其他:struts2和sitemesh整合:Sitemesh和Struts2结合时要特别注意它们各自Filter的顺序,否则会导致双方都不能正常工作。而又由于Struts2在2.1.3之前使用的是FilterDispatcher,2.1.3
14、之后推荐使用StrutsPrepareFilter和StrutsExecuteFilter替代FilterDispatcher,因此配制上又会有所不同。2.1.3之前的版本,sitemesh的filter要介于StrutsPrepareFilter和FilterDispatcher之间,配制如下: struts-cleanup org.apache.struts2.dispatcher.ActionContextCleanUp struts-cleanup /* sitemesh com.opensymphony.module.sitemesh.filter.PageFilter siteme
15、sh /* struts org.apache.struts2.dispatcher.FilterDispatcher struts /* 2.1.3之后的版本,sitemesh的filter要介于StrutsPrepareFilter和StrutsExecuteFilter之间,配制如下: struts-cleanup org.apache.struts2.dispatcher.ActionContextCleanUp struts-cleanup /* struts-prepare org.apache.struts2.dispatcher.ng.filter.StrutsPrepareF
16、ilter struts-prepare /* sitemesh com.opensymphony.module.sitemesh.filter.PageFilter sitemesh /* struts-execute org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter struts-execute /* Sturts:详情还可参考struts.dtd文件解析:参考链接 struts.xml中的constant配置及其含义:元素1:利用include标签,可以将一个struts.xml配置文件分割成多个配置文件,然后在str
17、uts.xml中使用标签引入其他配置文件。元素2:Struts2框架有两个核心配置文件,其中struts.xml文件主要负责管理应用中的Action映射, 及Action处理结果和物理资源之间的映射关系。除此之外,Struts2框架还包含了一个struts.properties文件,该文件主义了Struts2框架的大量常量属性。但通常推荐也是在struts.xml文件中来配置这些常量属性。如:后面会讲到Struts2的国际化,它的资源文件位置就用常量属性来指定: .元素3:Struts2框架中核心组件就是Action、拦截器等,Struts2框架使用包来管理Action和拦截器等。每个包就是多
18、个Action、多个拦截器、多个拦截器引用的集合。在struts.xml文件中package元素用于定义包配置,每个package元素定义了一个包配置。它的常用属性有:name:必填属性,用来指定包的名字。extends:可选属性,用来指定该包继承其他包。继承其它包,可以继承其它包中的Action定义、拦截器定义等。namespace:可选属性,用来指定该包的命名空间。abstact:可选属性,设置为抽象包/success.jsp/error.jsp/success.jsp/error.jsp如上配置了两个包:default和my,配置my包时指定了该包的命名空间为/manage。对于包def
19、ault:没有指定namespace属性。如果某个包没有指定namespace属性,即该包使用默认的命名空间,默认的命名空间总是。对于包my:指定了命名空间/manage,则该包下所有的Action处理的URL应该是“命名空间/Action名”。如上名为backLogin的Action,它处理的URL为:http:/localhost:8080/userlogin_struts2/manage/backLogin.action元素4:如果没有指定method则默认执行Action中的execute方法。子标签: type类型: action返回结果对应name是自定义的 wildcard ma
20、ppings:在struts.xml文件中配置元素时,它的name、class、method属性都可支持通配符,这种通配符的方式是另一种形式的动态方法调用。当我们使用通配符定义Action的name属性时,相当于用一个元素action定义了多个逻辑Action:/success.jsp/error.jsp如上,定义一系列请求URL是user_*.action模式的逻辑Action。同时method属性值为一个表达式1,表示它的值是name属性值中第一个*的值。例如:用户请求URL为user_login.action时,将调用到UserAction类的login方法;用户请求URL为user_r
21、egist.action时,将调用到UserAction类的regist方法。动态方法调用:DMI:Dynamic Method Invocation 动态方法调用。动态方法调用是指:表单元素的action不直接等于某个Action的名字,而是以如下形式来指定对应的动作名:则用户的请求将提交到名为”userOpt”的Action实例,Action实例将调用名为”login”方法来处理请求。同时login方法的签名也是跟execute()一样,即为public String login() throws Exception。注意:要使用动态方法调用,必须设置Struts2允许动态方法调用,通过设置struts.enable.DynamicMethodInvocation常量来完成,该常量属性的默认值是true。元素5:与这两个标签都是用来配置发生异常时对应的视图信息的,只不过一个是Action范围的,一个是包范围的,当同一类型异常在两个范围都被配置时,Action范围的优先级要高于包范围的优先级.这两个标签包含的属性也是一样的/exception.jsp/success.jsp/error.jsp元素6: 该标签