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样例:
3、app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "
元素标签详解:
元素1:
icon元素包含small-icon和large-icon两个子元素. 出IDE和GUI工具用来表示Web应用的一个和两个图像文件的位置。/路径/smallicon.gif
small-icon元素应指向web站台中某个小图标的路径,大小为16 X 16 pixel,但是图象文件必须为GIF或JPEG
4、格式,扩展名必须为:.gif或.jpg.
/路径/largeicon-jpg
large-icon元素应指向web站台中某个大图表路径,大小为32 X 32 pixel,但是图象文件必须为GIF或JPEG的格式,扩展名必须为; gif或jpg.
范例
/images/small.gif
/images/large.gif
元素2、3:,
5、
定义访问web项目应用的名称。ip:端口/应用名/service/
应用描述 对应用做出描述。
范例
test
测试应用V1.0
元素4:
context-param元素用来设定web应用的环境参数(例如设定spring配置文件名称)包含两个子元素:param-name和param-value。
参数
6、名称 设定Context名称
值 设定Context名称的值
范例
param_name
param_value
此所设定的参数,在JSP网页中可以使用下列方法来取得:${initParam.param_name}
若在Servlet可以使用下列方法来获得:
String param_name=getServletC
7、ontext().getInitParamter("param_name");
元素5,6:,
filter元素用来设定web应用的过滤器,它的两个主要子元素filter-name、filter-class、init-param
用来定义Filter所对应的class和过滤器(filter)中的初始化方法(init)的参数
Filter的名称 定义Filter的名称
Filter的类名称 定义Filter的类路径和名称
8、
encoding
GBK
参数名称 参数值
filter-mapping 元素的两个主要子元素filter-name和url-pattern.用来定义Filter所对应的URL.
Filter的名称 定义Filter的名称.
URL Fil
9、ter所对应的RUL.例如:/Filter/*
范例
Encoding
ghjf.test.filter.SetCharacterEncodingFilter
encoding
GBK
10、
Encoding
/*
元素7:
在web应用启动时启动监听
listener元素用来定义Listener接口,它的主要子元素为
Listener的类名称
定义Listener的类名称
范例
11、s>org.springframework.web.context.ContextLoaderListener
元素8、9:、
servlet元素的两个主要子元:servlet-name和servlet-class用来定义servlet所对应的java类
servlet的名称 定义servlet的名称
servlet的类名称 定义servlet的类名称和路
12、径
servlet-mapping元素包含两个子元素servlet-name和url-pattern.用来定义servlet所对应URL.
Servlet的名称定义Servlet的名称.
Servlet URL定义Servlet所对应的RUL.例如:/Servlet/*
范例
dwr-invoker
DWR
13、Servlet
Direct Web Remoter Servlet
uk.ltd.getahead.dwr.DWRServlet
debug
true
dwr-
14、invoker
/dwr/*
元素10:
session-config包含一个子元素session-timeout.定义web应用中的session参数.
分钟
定义这个web站台所有session的有效期限.单位为分钟.
范例
30
15、ssion-config>
??元素11:
mime-mapping包含两个子元素extension和mime-type.定义某一个扩展名和某一MIME Type做对映.
扩展名名称 扩展名称
MIME格式 MIME格式.
范例
doc
application/vnd.ms-word
16、
xls
application/vnd.ms-excel
ppt
application/vnd.ms-powerpoint
元素12:
welcome-file-list包含一个子元素welcome-file.
17、用来定义首页列单.
用来指定首页文件名称
welcome-file用来指定首页文件名称.我们可以用指定几个首页,而服务器会依照设定的顺序来找首页.
index.jsp
index.htm
元素13:
error-page元素包含三个子元素error-code,
18、exception-type和location.将错误代码(Error Code)或异常(Exception)的种类对应到web应用资源路径.
错误代码 :HTTP Error code,例如: 404、403
Exception:一个完整名称的Java异常类型
/路径 在web应用内的相关资源路径,一般是静态页面路径
范例
404
19、ocation>/error404.jsp
java.lang.Exception
/exception.jsp
元素14:
jsp-config元素主要用来设定JSP的相关配置,包括和两个子元素.其中元素在JSP 1.2时就已经存在了;而<
20、jsp-property-group>是JSP 2.0新增的元素.
taglib元素包含两个子元素taglib-uri和taglib-location.用来设定JSP网页用到的Tag Library路径.:URI taglib-uri定义TLD文件的URI,JSP网页的taglib指令可以经由这个URI存取到TLD文件.
/WEB-INF/lib/xxx.tld TLD文件对应Web站台的存放位置.
21、ty-group>
jsp-property-group元素包含8个元素,分别为:
Description此设定的说明
Name此设定的名称
URL 设定值所影响的范围,如:/CH2 或者/*.jsp
true|false 若为true,表示不支持EL语法.
true|false若为true表示
22、不支持<%scription%>语法.
encoding设定JSP网页的编码
.jspf设置JSP网页的抬头,扩展名为.jspf
.jspf设置JSP网页的结尾,扩展名为.jspf
范例
Taglib
23、ib-location>/WEB-INF/tlds/MyTaglib.tld
Special property group for JSP Configuration JSP example.
JSPConfiguration
/*
true24、ignored>
GB2312
true
??元素15:
resource-env-ref有两个子元素:
资源名 资源的名称 相对java:comp/env
25、ce-env-ref-type>当web应用查找该资源的时候,返回的Java类名的全称
范例
jdbc/mssql
javax.sql.DataSource
??元素16:
resource-ref元素包括五个子元素description,res-ref-name,
26、res-type,res-auth,res-sharing-scope.利用JNDI取得应用可利用资源.
说明资源说明
资源名称资源名称
资源种类资源种类
Application|Container资源由Application或Container来许可
Shareable|Unshareable资源是否可以共享.默
27、认值为 Shareable
范例
JNDI JDBC DataSource
jdbc/data
javax.sql.DataSoruce
Container
其他:
struts2和sitemesh整合:
Sitemesh和Struts2结合时要特别注意它们各自Filter的顺序,否则会导致双方都
28、不能正常工作。而又由于Struts2在2.1.3之前使用的是FilterDispatcher,2.1.3之后推荐使用StrutsPrepareFilter和StrutsExecuteFilter替代FilterDispatcher,因此配制上又会有所不同。2.1.3之前的版本,sitemesh的filter要介于StrutsPrepareFilter和FilterDispatcher之间,配制如下:
struts-cleanup
org.apache.s
29、truts2.dispatcher.ActionContextCleanUp
struts-cleanup
/*
sitemesh
com.o
30、pensymphony.module.sitemesh.filter.PageFilter
sitemesh
/*
struts
org.a
31、pache.struts2.dispatcher.FilterDispatcher
struts
/*
2.1.3之后的版本,sitemesh的filter要介于StrutsPrepareFilter和StrutsExecuteFilter之间,配制如下:
32、 struts-cleanup
org.apache.struts2.dispatcher.ActionContextCleanUp
struts-cleanup
/*
<
33、filter>
struts-prepare
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter
struts-prepare
/*
34、r-mapping>
sitemesh
com.opensymphony.module.sitemesh.filter.PageFilter
sitemesh
/*
35、ing>
struts-execute
org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter
struts-execute
/*36、>
Sturts:
详情还可参考struts.dtd文件解析:参考链接
struts.xml中的constant配置及其含义:
元素1::
利用include标签,可以将一个struts.xml配置文件分割成多个配置文件,然后在struts.xml中使用标签引入其他配置文件。
37、ile="struts-book.xml"/>
元素2:
Struts2框架有两个核心配置文件,其中struts.xml文件主要负责管理应用中的Action映射, 及Action处理结果和物理资源之间的映射关系。除此之外,Struts2框架还包含了一个struts.properties文件,该文件主义了Struts2框架的大量常量属性。但通常推荐也是在struts.xml文件中来配置这些常量属性。
如:后面会讲到Struts2的国际化,它的资源文
38、件位置就用常量属性来指定:
......
元素3:
Struts2框架中核心组件就是Action、拦截器等,Struts2框架使用包来管理Action和拦截器等。每个包就是多个Action、多个拦截器、多个拦截器引用的集合。
在struts.xml文件中package元素用于定义包配置,每个package元素定义了一个包配置。它的常用属性有:
name:必填属性,用来指定包的名
39、字。
extends:可选属性,用来指定该包继承其他包。继承其它包,可以继承其它包中的Action定义、拦截器定义等。
namespace:可选属性,用来指定该包的命名空间。
abstact:可选属性,设置为抽象包
/success.jsp
41、 /error.jsp
42、 定义处理结果字符串和资源之间的映射关系 -->
/success.jsp
/error.jsp
如上配置了两个包:default和my,配置my包时指定了该包的命名空间为/manage。
对于包default:没有指定namespace属性。如果某个包没有指定namespace属性,即该包使用默认的命名空间,默认的命名空间总是
43、""。
对于包my:指定了命名空间/manage,则该包下所有的Action处理的URL应该是“命名空间/Action名”。如上名为backLogin的Action,它处理的URL为:
http://localhost:8080/userlogin_struts2/manage/backLogin.action
元素4:
如果没有指定method则默认执行Action中的execute方法。
子标签:
type类型: action返回结果对应name是自定义的
wildcard mappings:
在struts.
44、xml文件中配置元素时,它的name、class、method属性都可支持通配符,这种通配符的方式是另一种形式的动态方法调用。
当我们使用通配符定义Action的name属性时,相当于用一个元素action定义了多个逻辑Action:
/success.jsp
45、rror">/error.jsp
如上,定义一系列请求URL是user_*.action模式的逻辑Action。同时method属性值为一个表达式{1},表示它的值是name属性值中第一个*的值。例如:用户请求URL为user_login.action时,将调用到UserAction类的login方法;用户请求URL为user_regist.action时,将调用到UserAction类的regist方法。
动态方法调用:
DMI:Dynamic Method Invocation 动态
46、方法调用。
动态方法调用是指:表单元素的action不直接等于某个Action的名字,而是以如下形式来指定对应的动作名:
47、MethodInvocation常量来完成,该常量属性的默认值是true。
元素5:与
这两个标签都是用来配置发生异常时对应的视图信息的,只不过一个是Action范围的,一个是包范围的,当同一类型异常在两个范围都被配置时,Action范围的优先级要高于包范围的优先级.这两个标签包含的属性也是一样的
48、 "http://struts.apache.org/dtds/struts-2.0.dtd">
/exception.jsp
<
49、/global-results>
/success.jsp
/error.jsp
元素6:
该标签