JavaEE SSH框架整合(二) struts2 加载本地dtd文件,action配置
2015-03-13 19:15
459 查看
1. 加载struts2的dtd文件,使struts.xml不用联网就能验证,并在eclipse中有提示
在src下创建struts.xml:
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPE strutsPUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
解压struts2/lib下的core.jar。找到struts-2.3.dtd,解压出来。
eclipse > 首选项 > xml > xml catalog > user specified entries> add
location 选择本地dtd文件;key type为选uri;uri为 http://struts.apache.org/dtds/struts-2.3.dtd
2. <struts></struts>中的元素为:
<beans /> <constant /> <include /> <package /> <unknown-handler-stack />
常用的常量constant:
<!-- 开发模式为true时,即时生效,修改struts配置文件时不用重新部署 -->
<constant name="struts.devMode" value="true"/>
<!-- 动态方法调用 默认关闭的 听说不安全 调用时匹配规则:actionName!methodName.action 后缀.action可省略-->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
package的使用:
<!--
在struts-default.xml中定义了一个package名为 struts-default
extends继承自struts-default
namespace:表示访问时的url地址前缀 即访问路径为:/appName/abc/xxx.action .action可以省略
-->
<package name="test1" extends="struts-default" namespace="/abc">
<action/></package>
3. package中的元素顺序为:
result-types
interceptors
default-interceptor-ref
default-action-ref
default-class-ref
global-results
global-exception-mappings
action*(所有action放到最后)
不遵循该顺序会xml验证会报错
4. action配置
4.1 直接跳转
访问地址:http://.../appName/forward.action .action可以省略
4.2 根据action-class的返回值进行跳转
访问地址:http://.../appName/TestAction 执行com.stone.action.MyAction的
execute方法,返回值为success则跳转到相应页面
4.3 指明action-class的method
访问地址:http://.../appName/methodAction
执行com.stone.action.MyAction的testMethod或者是doTestMethod方法,其返回值与result-name匹配
4.4 不指明action-class的method,根据访问的形式进行Action的动态方法调用
需要先开启动态方法调用,即配置相关常量。
访问地址:http://.../appName/testDynamic!add 执行com.stone.action.EditAction的add方法
若访问地址为 .../testDynamic!delete 则执行EditAction的delete方法。
4.5 通配符和占位符匹配
4.5.1 通配符* 表示任意字符
<action name="edit*" class="com.stone.action.EditAction" method="add">
<result name="add" type="redirect">http://www.baidu.com</result>
</action> 访问地址:http://.../appName/edit后接任意字符
执行com.stone.action.EditAction的add方法
方法返回add时,重定向到baidu
4.5.2 通配符和占位符一起使用,class中有占位符
<action name="news*" class="com.stone.action.News{1}Action">
<result name="{1}" type="dispatcher">/WEB-INF/jsp/News_{1}.jsp</result>
</action>{1}即表示第1个通配符*所代表的字符串
如有多个通配符 即 {1} {2} {3} ...
访问地址:http://.../appName/newsAdd 执行com.stone.action.NewsAddAction的execute方法
方法返回Add时,跳转到/WEB-INF/jsp/News_Add.jsp
注意:当前占位符放在class中时,可能会出现找不到class定义的情况,这时通过定义struts的全局异常处理
也是没有作用的。因为全局异常处理,只是处理action 中的异常。
所以一般不要在class中使用占位符进行匹配
4.5.3 通配符和占位符一起使用 method中有占位符
方法返回add时,跳转到/WEB-INF/jsp/book_add.jsp
注:该action,如果访问的是以book_开头,但是method访问不到, 则适用action中出异常这种情况,可以由struts捕获处理
在src下创建struts.xml:
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPE strutsPUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
解压struts2/lib下的core.jar。找到struts-2.3.dtd,解压出来。
eclipse > 首选项 > xml > xml catalog > user specified entries> add
location 选择本地dtd文件;key type为选uri;uri为 http://struts.apache.org/dtds/struts-2.3.dtd
2. <struts></struts>中的元素为:
<beans /> <constant /> <include /> <package /> <unknown-handler-stack />
常用的常量constant:
<!-- 开发模式为true时,即时生效,修改struts配置文件时不用重新部署 -->
<constant name="struts.devMode" value="true"/>
<!-- 动态方法调用 默认关闭的 听说不安全 调用时匹配规则:actionName!methodName.action 后缀.action可省略-->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
package的使用:
<!--
在struts-default.xml中定义了一个package名为 struts-default
extends继承自struts-default
namespace:表示访问时的url地址前缀 即访问路径为:/appName/abc/xxx.action .action可以省略
-->
<package name="test1" extends="struts-default" namespace="/abc">
<action/></package>
3. package中的元素顺序为:
result-types
interceptors
default-interceptor-ref
default-action-ref
default-class-ref
global-results
global-exception-mappings
action*(所有action放到最后)
不遵循该顺序会xml验证会报错
4. action配置
4.1 直接跳转
<action name="forward"> <result>/WEB-INF/test.jsp</result> </action>
访问地址:http://.../appName/forward.action .action可以省略
4.2 根据action-class的返回值进行跳转
<!-- class 是一个含有具体action方法的类,未指明method属性时,默认调用execute方法 --> <action name="TestAction" class="com.stone.action.MyAction"> <!-- result 为方法的返回值 --> <result name="success">/WEB-INF/test.jsp</result> </action>
访问地址:http://.../appName/TestAction 执行com.stone.action.MyAction的
execute方法,返回值为success则跳转到相应页面
4.3 指明action-class的method
<!-- class 是一个含有具体action方法的类, 指定了方法 Struts2在根据action元素的method属性查找方法时有两种途径: 1.查找与method属性值完全一致的方法. 方法名为methodAction 2.查找doMethod()形式的方法 或方法名为doMethodAction --> <action name="methodAction"class="com.stone.action.MyAction" method="testMethod"> <result name="test2">/WEB-INF/test2.jsp</result> </action>
访问地址:http://.../appName/methodAction
执行com.stone.action.MyAction的testMethod或者是doTestMethod方法,其返回值与result-name匹配
4.4 不指明action-class的method,根据访问的形式进行Action的动态方法调用
需要先开启动态方法调用,即配置相关常量。
<action name="testDynamic" class="com.stone.action.EditAction"> <result name="add">/WEB-INF/edit_add.jsp</result> <result name="delete">/WEB-INF/edit_delete.jsp</result> </action>
访问地址:http://.../appName/testDynamic!add 执行com.stone.action.EditAction的add方法
若访问地址为 .../testDynamic!delete 则执行EditAction的delete方法。
4.5 通配符和占位符匹配
4.5.1 通配符* 表示任意字符
<action name="edit*" class="com.stone.action.EditAction" method="add">
<result name="add" type="redirect">http://www.baidu.com</result>
</action> 访问地址:http://.../appName/edit后接任意字符
执行com.stone.action.EditAction的add方法
方法返回add时,重定向到baidu
4.5.2 通配符和占位符一起使用,class中有占位符
<action name="news*" class="com.stone.action.News{1}Action">
<result name="{1}" type="dispatcher">/WEB-INF/jsp/News_{1}.jsp</result>
</action>{1}即表示第1个通配符*所代表的字符串
如有多个通配符 即 {1} {2} {3} ...
访问地址:http://.../appName/newsAdd 执行com.stone.action.NewsAddAction的execute方法
方法返回Add时,跳转到/WEB-INF/jsp/News_Add.jsp
注意:当前占位符放在class中时,可能会出现找不到class定义的情况,这时通过定义struts的全局异常处理
也是没有作用的。因为全局异常处理,只是处理action 中的异常。
所以一般不要在class中使用占位符进行匹配
4.5.3 通配符和占位符一起使用 method中有占位符
<action name="book_*" class="com.stone.action.BookAction" method="{1}"> <result name="{1}" type="dispatcher">/WEB-INF/jsp/book_{1}.jsp</result> </action>访问地址:http://.../appName/book_add 执行com.stone.action.BookAction的add方法
方法返回add时,跳转到/WEB-INF/jsp/book_add.jsp
注:该action,如果访问的是以book_开头,但是method访问不到, 则适用action中出异常这种情况,可以由struts捕获处理
相关文章推荐
- JavaEE SSH集成框架(两) struts2 本地加载dtd文件,action组态
- ssh整合思想初步 struts2与Spring的整合 struts2-spring-plugin-2.3.4.1.jar下载地址 自动加载Spring中的XML配置文件 Struts2下载地址
- Struts2配置,本地加载DTD,不依赖联网
- 整合Struts2和spring3的时候,sturts2配置文件没问题,能找到action,但页面空白
- spring整合struts2后,struts2的action中调用服务层时,不需要在spring配置文件中去注入
- struts2配置文件中Action中的各属性的含义
- struts2如何加载配置文件(总结)
- struts2之Action配置的各项默认值、result配置的各种试图转发类型及为应用指定多个struts配置文件
- struts2配置Action范围的国际化资源文件
- windows不能加载本地存储的配置文件
- ssh框架整合实例子1-配置文件
- 开机提示“Windows不能加载本地存储的配置文件”
- struts2——为Action配置Method属性,实现同一文件,多个Action
- Spring3.0、Hibernate3.0、Struts2整合文件配置
- struts2配置Action范围的国际化资源文件
- struts2 的配置文件DTD
- Struts2中如何加载多个struts.xml配置文件
- Struts2常量配置文件加载顺序
- struts2 action 配置方法 &&struts2的配置文件
- struts2 ibatis spring 框架整合配置文件的设置