1. 加载struts2的dtd文件,使struts.xml不用联网就能验证,并在eclipse中有提示 在src下创建struts.xml: ? xml version = 1.0 encoding = UTF-8 ? ! DOCTYPE struts PUBLIC -//Apache Software Foundation//DTD Struts Configuration 2.3//EN http://struts
1. 加载struts2的dtd文件,使struts.xml不用联网就能验证,并在eclipse中有提示
在src下创建struts.xml:
/p>
"-//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. 中的元素为:
常用的常量constant:
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 直接跳转
/WEB-INF/test.jsp
访问地址:http://.../appName/forward.action .action可以省略
4.2 根据action-class的返回值进行跳转
/WEB-INF/test.jsp
访问地址:http://.../appName/TestAction 执行com.stone.action.MyAction的
execute方法,返回值为success则跳转到相应页面
4.3 指明action-class的method
/WEB-INF/test2.jsp
访问地址:http://.../appName/methodAction
执行com.stone.action.MyAction的testMethod或者是doTestMethod方法,其返回值与result-name匹配
4.4 不指明action-class的method,根据访问的形式进行Action的动态方法调用
需要先开启动态方法调用,即配置相关常量。
/WEB-INF/edit_add.jsp
/WEB-INF/edit_delete.jsp
访问地址:http://.../appName/testDynamic!add 执行com.stone.action.EditAction的add方法
若访问地址为 .../testDynamic!delete 则执行EditAction的delete方法。
4.5 通配符和占位符匹配
4.5.1 通配符* 表示任意字符
http://www.baidu.com
访问地址:http://.../appName/edit后接任意字符
执行com.stone.action.EditAction的add方法
方法返回add时,重定向到baidu
4.5.2 通配符和占位符一起使用,class中有占位符
/WEB-INF/jsp/News_{1}.jsp
{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中有占位符
/WEB-INF/jsp/book_{1}.jsp
访问地址:http://.../appName/book_add 执行com.stone.action.BookAction的add方法
方法返回add时,跳转到/WEB-INF/jsp/book_add.jsp
注:该action,如果访问的是以book_开头,但是method访问不到, 则适用action中出异常这种情况,可以由struts捕获处理