Struts笔记

1、在下载的Structs2包中,解压一个含有blank的示例程序,这是最基本的示例程序,里面的lib包中有两个是可以不需要的:junit-3.8.1.jar、spring-test-2.5.6.jar这两个用于单位测试。

2、当改了struts.xml文件之后总是要重启服务器才能生效,只要在struts.xml设置常量<constant name="struts.devMode" value="true"/>就可以不用重启服务器,可以马上有反馈。

3、struts2作用:将请求和显示分开

4、struts.xml中的package是为了让不同的包下相同名字的Action不冲突但是可以重名。namespace用“/”开头,默认是"",访问Action的时候前面也要加上namespace的内容。

5、当namespace为空的时候,访问的时候前面加上多少前缀也是能够访问到,如:/kjeiojfoiej/jdeoij/index.acton;一般先找对应的namespace有没有,没有再到namespace为空里面找。

6、struts2每次访问Action的时候都会new一个。

7、当你在struts.xml中配置Action的时候没有指定class。默认执行ActionSupport类,而且这个时候默认返回success。

8、当在同一个Action中,可以指定不同的执行方法,只需要使用DMI(动态方法调用),如在要访问的XXX的Action后面加上"XXX!add()"即可访问XXXAction指定class中的Action的add()方法。

9、struts.xml中如果写成<action="student*" class="com.xuan.action.XXXAction" method="{1}">
<result>/student{1}_success.jsp</result>
</action>
 这里使用了通配符的做法,当前面有多个星的时候,后面用{1}、{2}、、、表示第几个星,同样,result中的{1}也是这个意思。
当struts.xml中还有其他更精确的,如StudentAdd,则用最精确的,但是有几个Action是多个*匹配的情况,那么谁放在前面谁先匹配。

10、当在表单传递参数给Action中的属性时,如果包含中文,在struts.xml中配置常量<constant name="struts.i18n.encoding" value="GBK">即可,但是在struts2.1.6中存在bug,配了也不行,改wGBKxml中的struts的filter为旧的filter即可,但是官方建议使用新的filter,因此不知道会存在什么问题。

11、当在Action中处理用户登录的时候,如果用户登陆不成功,怎么返回前台页面登录不成功的信息呢?用this.addFieldError("属性名","错误提示信息"),而且可以同时用多个;

12、当用<s:debug></s:debug>时,查看里面的value stack中的值,则在页面中用<s:property value="name">即可取出值,<s:property value="name">也可以取stack context的值。

13、debug标签中的显示的值栈和堆栈,用<s:property value="name">取出来的时候,如果取值栈则直接写,如果取堆栈则需要需要在前面加#。

14、strust2的result默认类型是dispatcher,即服务器跳转,跳转到另一个视图,但是不能是Action。此外还有chain(跳转到另一个Action)

15、当在某个包中配置了<global-result>这个视图,但是我想在其他包中也是使用这个<global-result>,所以可以在extends中写上继承那个包,于是里面的配置都继承过来了。

16、一次request只有一个值栈,所以当一次请求执行后,当一个Action forward到另一Action的时候共享同一个值栈,不用传值。

17、原型--》迭代式开发

18、OGNL表达式中在Action中有个对象,此时如果想在前台页面中用标签获取这个对像中的某个值,也就是想初始化Domain Model,可以自己new,也可以传参数值(不用自己new,Struts会帮我们new),但是这时候都必须保留空的构造方法,否则出错。

19、<s:set name="" value="">设置的值会保存在request和ActionContext中(前提是不设置scope范围)

20、struts标签中的%{}表示将{}里面内容不要当成字符串,要当成ognl表达式,将里面的字符串解析成ognl表达式。

你可能感兴趣的:(Struts笔记)