Struts2总结

来源:互联网 发布:淘宝产品短连接 编辑:程序博客网 时间:2024/06/05 05:54

1,Struts2框架体现出了MVC模式。

参见设计模式的MVC模式

 

2,Struts2,原理,访问流程图与拦截器为重点,拦截器的访问为间接递归。(动态代理,类似springAOP

Struts2总结 - Garfield - 张广辉的博客
 
Struts2总结 - Garfield - 张广辉的博客
 

http://blog.csdn.net/g_beginner/article/details/6791106

 

3,Struts2为每个请求产生一个action实例,不存在线程安全问题。每个anction继承actionSupport类,actionSupport是个实现类,实现了许多有用的接口,如数据校验。默认执行excute方法,返回SUCCESS。而Struts1必须继承一个抽象类,而且线程不安全。

actionSupport源码http://blog.csdn.net/dingbuoyi/article/details/6020729

1)web.xml负责加载核心过滤器,拦截所有用户请求。

2)struts.xml负责配置action。

 <package name="front" namespace="/" extends="struts-default">
        <action name="index" class=“。。。”  method=“。。。”>
            <result name="success">/Namespace.jsp</result>
        </action>
    </package>

3)namespace表示访问action的路径。

4)动态方法调用:不需要method,在请求的url最后加上!和方法名。

5)通配符:

<action name="Network-*" class="action.NetworkAction" method="{1}">
          <result>/admin/content/network/Network-{1}.jsp</result>          
</action>

6)action接受参数:action中的属性设定好get和set方法。url?name=“tom”&user.name="tom";前台访问值栈读取这些参数。

7)访问session等:实现sessionAware接口,属性里设定private Map<String,Object> session;  实现setSession方法。

然后用session.put就可以往session中写值了。这些值存在stackContext中,通过访问这个栈就可得到session。普通的属性存在值栈中。

8) ActionSupport是个工具类,他实现了Action, Validatable等接口, Validatable提供validate()方法进行所有其他方法的验证;validateXXX()是进行某个方法的验证。Action只要继承ActionSupport类,重写validate()或validateXXX()方法就可以进行数据验证。通过addFieldError("userName""username is empty")添加错误信息。在前台通过值栈取出。

9)结果类型:dispatcher(forword)和redirect只能跳转到jsp,不能跳到action。chain和

redirectAction跳到action。

10)ognl表达式:
访问非根对象属性stackContext,例如#session.msg表达式,需要加#前缀。实际上,#相当于ActionContext. getContext();#session.msg表达式相当于ActionContext.getContext().getSession(). getAttribute("msg") 。

访问值栈时直接访问value中的值就可以了。

0 0