Struts2笔记2
1.为Action属性注入值,在action中定义属性,get和set方法,在xml中配置如下,在页面上用${message}及可以得到注入的值
<action name="list" class="cn.itcast.action.helloworld" method="execute"> <param name="message">123456</param> <result name="SUCCESS">/WEB-INF/pages/helloworld.jsp</result> </action>
2.默认情况下用.action后缀访问action,可以通过变量进行修改,如下:只处理.do和.action后缀的请求
<struts> <constant name="struts.action.extension" value="do,action"></constant> <package name="itcast" namespace="/test" extends="struts-default" > </package> </struts>
常量可以配置在好多文件中,如:struts.properties,加载的顺序是:
struts-default.xml
struts-plugin.xml
struts.xml
struts.properties
web.xml
多个文件中配置了同一个常量,则后一个文件中配置的常量会覆盖前面文件中配置的常量
3.struts2的处理流程:
用户请求----->StrutsPrepareAndExecuteFilter----->Interceptor----->Action---->Result------->Jsp/html
与struts1不同,struts2对用户的每一次请求都会创建一个Action,所以struts2中的Action是线程安全的。
4.为了不让struts.xml配置文件太臃肿,把它分模块写到不同的xml文件中,然后再struts.xmlZ中用include包含进来
<struts> <constant name="struts.action.extension" value="do,action"></constant> <include file="struts-user.xml"></include> </struts>
5.如何在请求路径中动态指定action调用的方法:
1)动态方法调用:在路径中的action后面加“!”+方法名+后缀
如:http://localhost:8080/struts2/test/list!add.do
2)利用通配符定义action,method为{1}代表“*”的内容,class里也可以使用,jsp路径也可以使用
<package name="itcast" namespace="/test" extends="struts-default" > <action name="list_*" class="cn.itcast.action.helloworld" method="{1}"> <result name="SUCCESS">/WEB-INF/pages/helloworld.jsp</result> </action> </package>
我要青春像陈孝正一样,不能有一毫米的误差!
我要青春像合伙人一样,为了自尊而战!