重点研究:struts2-core-2.x.x.jar\org.apache.struts2\defautl.properties文件。 重写default.properties文件中的内容。 在src目录下创建名为struts.properties文件。主要是设置一些常量。 struts-default.xml文件也一样很重要 1、重写默认struts.i18n.encoding=UTF-8这一行为: struts.i18n.encoding=gbk。也可以改变提交中文是乱码的问题。与在struts.xml文件中写上<constant></constant>标签 的效果是一样的。 2、改写提交的时候action的后缀名 默认:struts.action.extension=action 可以改成自己想要的后缀名:struts.action.extension=do 3、自动被struts2加载的默认配置文件名: 默认:struts.configuration.files=struts-default.xml,struts-plugin.xml,struts.xml 当然也可以自己改变它。
研究struts.xml文件.需要先重点研究struts2-core-2.x.x.jar\struts-default.xml文件。 1、struts.xml中的<package namespace=”/hello”></package>标签对中的namespace属性命名空间概念。它主要是用来将不同的路径分隔开。还需要在jsp页面的form表单的action属性值加上 /hello/xxx.action . 2、struts.xml文件宜采用模块化的方式来创建多个struts*.xml文件,然后在struts.xml文件中通过<include file=”struts*.xml”></include>方式来加载其它的struts.xml文件。在大型的项目中,这种情况是很常用的。
总结:struts2中的MVC模型中,C指的是控制器层,即web.xml中的FilterDispatcher,也称核心控制器;M指的是模型层(业务逻辑层),即是action的类进行调用业务罗辑的dao;V指的是表现层,即Jsp页面展现组用户的视图。
下面研究一下模型驱动情况:以前表单的属性字段都是直接写在action类中的(也叫属性驱动)。现在改变一下模型,将属性字段全部写在一个类(javaBean)中(模型驱动),然后在整个mvc的流程中,始终由该类的对象来进行传递。步骤如下: 1、 先创建一个Bean,用来封装表单的字段。User.java public class User{ private String username; private String password; private int age; private Date birthday; private Date graduation; //生成set(),get()方法,在此略 } 2、 创建一个action,继承ActionSupport并且实现ModelDriver<User>.泛型。 public class RegisterAction extends ActionSupport implements ModelDriver<User> { //创建一个javaBean对象 private User user = new User(); //需要实现ModelDriver接口中的方法 public User getModel(){ //返回user对象 return user; } //重写ActionSupport中的方法 public String execute() throws Exception{
return SUCCESS; } } 3、 在struts.xml中配置action.这与之前的配置方法一样
但是更多的程序员,还是更喜欢使用属性驱动的方式来进行开发。
struts2中防止表单重复提交(即提交后,点刷新时,应该返回到最初页面):用struts2标签 1、需要在<form></form>标签对中加入: <s:form> <s:token></s:token> </s:form> 2、需要在struts.xml中的相应的action中配置相应的拦截器。并且需要把默认的拦截器也写上。 <action name=”…” class=”…”> <result name=”success”>/success.jsp</result> <result name=”input”>/register.jsp</result> //当出现重复提交时,反回到的页面 <result name=”invalid.token”>/register.jsp</result> //配置对表单重复提交的拦截器 <interceptor-ref name=”token”></interceptor-ref> //既然手动配置了一个重复提交的拦截器,就需要配置一个默认的拦截器 <interceptor-ref name=”defaultStack”></interceptor-ref> </action>
如果需要在页面上提示用记重复提交表单的相关信息,需要在含有表单的jsp页面里加上 <s:actionerror/> 即可。这是struts2内部定义好的信息,如果想显示息定义的提示信息,需要在资源文件中添加相应的内容。 struts.messages.invalid.token=\u8bf7\u4e0d\u8981\u91cd\u590d\u63d0\u4ea4\u8868\u5355 上面一串unicode是“请不要重复提交表单”通过native2ascii转换过去的。
struts2与servlet进行耦合 |
|