struts框架

1.struts框架主要是将请求和结果分离,避免了写原生的httpRequest,简化了开发难度。

2.原理是通过在web.xml中配置过滤器filter,将url拦截到struts.xml中进行解析,通过package,action的名字组合,找到对应的action和method来处理。最后result根据return来跳转。

redirectAction为跳到另一个action。

3.action必须实现execute方法,建议继承自ActionSupport类,该类实现了execute方法返回SUCCESS

SUCCESS是struts中一个常量,值为"success",除此还有NONE,ERROR,INPUT,LOGIN,定义位于Action接口,该接口除此外包含execute方法。

为什么继承ActionSupport比较好呢,因为有一些现成的方法可以用,哪些方法呢,比如数据校验setFieldErrors,ActionSupport实现了一堆接口,Action, Validateable, ValidationAware, TextProvider, LocaleProvider, Serializable。

4.struts核心包中需要关注的:

(1)org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter 该文件是url被拦截后的处理文件,如何处理的

(2)struts默认的配置文件/struts-default.xml,配置了基本的包struts-default,里面包含一堆,版本2.5中为了增强安全性,通配符允许匹配的关键词在这里面。

<global-allowed-methods>execute,input,back,cancel,browse,save,delete,list,index</global-allowed-methods>

(3)struts默认属性文件/org/apache/struts2/default.properties包含action允许的后缀,默认的编码,开发者模式,如需修改可在struts.xml中进行。

<constant name="struts.devMode" value="true"></constant>

(4)struts标签库文件/META-INF/struts-tags.tld,使用时在页面引入<%@taglib uri="/struts-tags" prefix="s"%>,这里uri的名称是在标签库文件中配置的。

5.接收参数有三种方式(1)变量接收:action中写变量,变量的getset方法;(2)domainModel接收:页面输入框名称为user.name,action中声明model对象,对象的getset方法,获取值用user.getName()。(3)实现modelDriven接口:action中声明对象并new,不需要getset,实现接口的getModel方法,返回对象,获取用user.getName(),个人认为这种方式最优雅。

6.数据校验,在action的方法中this.addFieldError("errorMsg","用户名或密码错误!");然后在页面用<s:property value="fieldErrors.errorMsg[0]"/>

<s:debug></s:debug>用来查看值栈

7.获取session两种方式:(1)session = ActionContext.getContext().getSession();(2)实现sessionAware接口

8.result的类型:(1)如果不指定type,默认是dispatcher,dispatcher是服务器跳转到结果页面上去,服务器端跳转页面,url不变;(2)redirect,客户端跳转到页面;

(3)chain,forward到另一个action;(4)redirectAction,客户端跳到action

posted on 2017-05-31 10:04  泽口靖子  阅读(321)  评论(0编辑  收藏  举报

导航