struts.xml配置详解
来源:互联网 发布:淘宝打假赚钱 编辑:程序博客网 时间:2024/05/21 22:57
一:<constant>
<constant>标签主要定义Struts2的一些常量。
如:
<constant name="struts.action.extension" value="do" />上述定义表示以.do结尾的请求,ActionMapper决定它是一个action请求
当然,struts的常量也可以定义在struts.properties配置文件中,形如:
#这个是注释#修改struts2的action判定标准struts.action.extension=do
当然struts.properties配置文件应和struts.xml一样,位于src目录下。
二:<package>
在Struts2框架中是通过包<package>来管理action、result、interceptor、interceptor-stack等配置信息的,可以把<package>理解为一个文件夹。
包<package>属性如下:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>属性 是否必需 描述name 是 包名,作为其它包应用本包的标记extends否设置本包继承其它包namespace否设置包的命名空间abstact否设置为抽象包>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
name属性详解:
name属性被用作包名。作用在于区分不同的包。一个<package>必须有name属性,并且其name必须为唯一值。
extends属性详解:
1.通常配置struts.xml的时候,都继承一个名为“struts-default.xml”的包,这是struts2中内置的包。
2.如果需要继承其他包,由于包信息的获取是按照配置文件的先后顺序进行的,所以父包必须在子包之前被定义。
3.当一个包通过配置extends属性继承了另一个包的时候,该包将会继承父包中所有的配置,包括action、result、interceptor等。
namespace属性详解:
1.命名空间的作用:namespace主要是针对大型项目中Action的管理,更重要的是解决Action重名问题,因为不在同一个命名空间的Action可以使用相同的Action名的。
2.命名空间体现:使用命名空间后,访问的url必须包含命名空间。
例如:<package> 的namespace=“/student” <action> 的name="text"
那么url地址就应为:ip:端口/项目名/student/text.action
3.命名空间可以为一级目录形式,也可以为多级目录形式。
例如:<package> 的namespace=“/student/a/” <action> 的name="text"
那么url地址就应为:ip:端口/项目名/student/a/text.action是可以运行的
4:默认命名空间:Struts2中如果没有为某个包指定命名空间,该包使用默认的命名空间,默认的命名空间总是""。
5:指定根命名空间:当设置了命名空间为“/”,即指定了包的命名空间为根命名空间时,此时所有根路径下的Action请求都会去这个包中查找对应的资源信息。
url地址:ip:端口/项目名/*.action 都是可以运行
<package>使用范例:
<package name="student" namespace="/" extends="struts-default"></package>
三:<action>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>属性名称是否必须功能描述name是请求的Action名称class否Action处理类对应具体路径method否指定Action中的方法名converter否指定Action使用的类型转换器>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
name属性详解:
name属性被用作<action>名称。作用在于区分不同的<action>。<action>必须定义name属性,并且在一个<package>内。
class属性详解:
class属性表示调用这个<action>时,程序需要执行的action类。该属性值由包名加类名构成。
method属性详解:
method属性表示在调用action类时,需要调用的方法。该属性值为方法名。当没有设置该属性时,默认调用execute方法。
<action>使用范例:
<action name="test" class="com.Demo.StrutsDemo" method="execute"></action>
因为method属性默认调用execute方法。所以上述事例中,method属性可以省略。
<action name="test" class="com.Demo.StrutsDemo" ></action>
四:<result>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>属性名称是否必须功能描述name否对应Action返回值,默认为successtype否返回结果类型,默认为dispatcher>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
name属性详解:
<result>标签的name属性表示action类返回的值。默认为successname属性的值可以是自定义的,也可以选取系统默认的值
当使用系统默认的值时,action类中实现validate方法。例如:
struts.xml
<package name="user" namespace="/" extends="struts-default"><!-- 解决struts2.5 通配符调用无效的问题 --><global-allowed-methods>regex:.*</global-allowed-methods><action name="*_*" class="com.lhb.StrutsText.{1}" method="{2}"><result name="success">/success.jsp</result><result name="input">/user_login.jsp</result></action></package>
action类:
public String check() {if (!"admin".equals(user.getUseName())) {this.addFieldError("userName", "用户名不正确!");return INPUT;} else if (!"123".equals(user.getPassword())) {this.addFieldError("password", "用户名不正确!");return INPUT;} else {return SUCCESS;}}上述代码等价于
public String check() {return SUCCESS;}@Overridepublic void validate() {if(!"admin".equals(user.getUseName())){this.addFieldError("userName", "用户名不正确!");}else if(!"123".equals(user.getPassword())){this.addFieldError("passWord","密码不正确!");}}
当使用系统默认值时,调用validate方法,系统会判定addFieldError方法是否运行,如果运行,直接返回INPUT;
type属性详解:
<result>使用范例:
<result name="success">/test.jsp</result>因为name属性默认为success,所以上述事例中,name属性可以省略。
<result>/test.jsp</result>
五:<default-action-ref>
如果在请求一个没有定义过的Action资源时,系统就会抛出404错误。这种错误不可避免,但这样的页面并不友好。我们可以使用<default-action-ref>来指定一个默认的Action,如果系统没有找到指定的Action,就会指定来调用这个默认的 Action。
代码如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="demo" extends="struts-default"> <default-action-ref name="acctionError"></default-action-ref> <action name="acctionError"> <result>/actionError.jsp</result> </action> </package> </struts>
六:<default-class-ref>
在配置Action的时候,如果没有为某个Action指定具体的class值时,系统将自动引用<default-class- ref>标签中所指定的类。在Struts2框架中,系统默认的class为ActionSupport,该配置在xwork的核心包下的 xwork-default.xml文件中找到。有特殊需要时,可以手动指定默认的class。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="text" extends="struts-default"> <!-- 为Test指定默认class --> <default-class-ref class="default.action.DefaultClassRef"/> <action name="test"> <result>/index.jsp</result> </action> </package> </struts>
七:<include>
struts_user.xml:
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"><struts><package name="user" namespace="/" extends="struts-default"><action name="test" class="com.Demo.StrutsDemo"><result>/test.jsp</result></action></package></strutstruts.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <include file="struts_user.xml"/> </struts>
0 0
- struts.xml配置详解
- struts.xml配置详解
- struts.xml配置详解
- Struts.xml配置详解
- struts.xml配置详解
- struts.xml配置详解
- struts.xml配置详解
- struts.xml配置详解
- struts.xml配置详解
- struts.xml配置详解
- struts.xml配置详解
- struts.xml配置详解
- struts.xml配置详解
- Struts.xml配置详解
- struts.xml配置详解
- struts.xml配置详解
- struts.xml配置详解
- struts.xml配置详解
- Redis/Sentinel各配置项详细说明
- 欢迎使用CSDN-markdown编辑器
- C#基础:Equals()与运算符==的区别分析
- lua的包库
- 神奇的Annotation
- struts.xml配置详解
- https连接都发生了什么
- MySql Workbench的E-R图设计小技巧
- 解决 ajax请求 跨域问题
- 嵌入式学习笔记之gcc编译
- screen capture using CGDisplayStreamCreateWithDispatchQueue
- Redis数据库的备份与恢复
- layer中type=2的一些使用方法(添加成功后才关闭路由、刷新页面列表)
- removeInvalidParentheses