分模块开发
所有配置信息都放在struts.xml中会使其变得不便维护,可采用分模块开发,如
分为struts1.xml,struts2.xml
只须在struts1.xml中添加<include file="struts2.xml"></include>即可
模型驱动
struts1中有一个form bean来关联jsp与action之间的关系,struts2中直接在action中定义属性来解决,这种称为属性驱动。
模型驱动是采用一个bean来实现,bean中定义了页面中的元素,并get set。模型驱动类似于struts1中的formBean。如定义一个User
action必须实现ModelDriven接口。ModelDriven有泛型,泛型就是User。
实现ModelDriven后,必须重写getModel()方法,返回的就是这个泛型。事先要先定义一外此泛型的属性,并new出一个实例。如:
private User user = new User();
public User getModel() {
return user;
}
Preparable接口
action可实现Preparable接口并重写prepare方法,这样在执行任何action中方法之前都会先执行此方法。
防止表单重复提交
在<s:form>中添加<s:token name="helo"></s:token>
还要在相应的action中添加token拦截器
<action ....>
...
<result name="invalid.token"></result> //发生表单重复提交后返回的页面
<interceptor-ref name="token"></...>
<interceptor-ref name="defaultStack"></...>
</action>
在国际化文件中可配置它的错误信息,如:不可重复提交
国际化的key为struts.messages.invalid.token
页面上用actionError显示即可。