Struts2(传智播客笔记5)
来源:互联网 发布:c语言怎么ab之间求素数 编辑:程序博客网 时间:2024/06/06 12:51
自定义拦截器
步骤一:创建拦截器package cn.jbit.struts2.interceptor;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.Interceptor;public class PermissionInterceptor implements Interceptor {private static final long serialVersionUID = -3438354731949594098L;public void destroy() {}public void init() {}public String intercept(ActionInvocation actioninvocation) throws Exception {String loginUser = (String) ActionContext.getContext().getSession().get("loginUser");if (null != loginUser && "jbit".equals(loginUser)) {return actioninvocation.invoke();}ActionContext.getContext().put("message", "你没有权限访问!");return "message";}}步骤二:配置拦截器
<!-- 拦截器定义 --><interceptors> <interceptor name="permission" class="cn.jbit.struts2.interceptor.PermissionInterceptor"/> <interceptor-stack name="myPermission"> <interceptor-ref name="defaultStack"/> <interceptor-ref name="permission"/> </interceptor-stack></interceptors>
输入校验
在struts2中,我们可以实现对action中所有方法进行检验或者对action的指定方法进行检验。对于输入校验struts2提供了两种实现方法:
1、采用手工编写代码实现。
2、基于XML配置方式实现。
手工编写代码实现对action中所有方法输入校验
1、通过重写validate()方法实现,validate()方法会校验action中所有与execute方法签名相同的方法。当某个数据校验失败时,我们应该调用addFieldError()方法往系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action可以继承ActionSupport),如果系统的fieldErrors包含失败信息,struts2会将请求转发到名为input的result。在input视图中可以通过<s:fielderror/>显示失败信息。2、配置input视图,供验证失败后,请求转发失败页面
3、在input视图中使用<s:fielderror/>显示失败信息
手工编写代码实现对action指定方法输入校验
1、通过validateXxx()方法实现,validateXxx()方法只会校验action中方法名为Xxx的方法。其中Xxx的第一个字母要大写。当某个数据校验失败时,我们应该调用addFieldError()方法往系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action可以继承ActionSupport),如果系统的fieldErrors包含失败信息,struts2会将请求转发到名为input的result。在input视图中可以通过<s:fielderror/>显示失败信息。2、配置input视图,供验证失败后,请求转发失败页面
3、在input视图中使用<s:fielderror/>显示失败信息
输入校验的流程
1、类型转换器对请求参数执行类型转换,并把转换后的值赋给action中的属性。2、如果在执行类型转换的过程中出现异常,系统会将异常信息保存到ActionContext,conversionError拦截器将异常信息添加到fieldErrors里。不管类型转换是否出现异常,都会进入第3步。
3、系统通过反射技术先调用action中的validateXxx()方法,Xxx为方法名。
4、再调用action中的validate()方法。
5、经过上面4步,如果系统中的fieldErrors存在错误信息(即存放错误信息的集合的size大于0),系统自动将请求转发至名称为input的视图。如果系统中的fieldErrors没有任何错误信息,系统将执行action中的处理方法。
0 0
- Struts2(传智播客笔记5)
- Struts2(传智播客笔记1)
- Struts2(传智播客笔记2)
- Struts2(传智播客笔记3)
- Struts2(传智播客笔记4)
- Struts2(传智播客笔记6)
- Struts2(传智播客笔记7)
- Struts2学习笔记(5)
- struts2学习笔记(5)----------配置result
- struts2学习笔记5
- Struts2 初学笔记 5
- Struts2笔记(一)
- struts2笔记(一)
- struts2笔记(二)
- Struts2笔记(三)
- Struts2笔记(四)
- struts2笔记(2)
- struts2笔记(一)
- C++11之for 新解(2)
- 推荐动漫-漫画家与助手
- GUI初探--列出指定目录的内容
- Verilog学习笔记(1)-流水灯大PK
- QQ空间顶部折页撕开效果
- Struts2(传智播客笔记5)
- vcxvxcvcx
- 【iOS知识学习】_协议(delegate)和类别(category)
- CodeForces 407A Triangle
- C++ Primer Plus学习笔记之const修饰指针
- 变为回文串
- angularjs的事件 $broadcast and $emit and $on
- 自己动手写操作系统 降入ring3特权级
- day01_Servlet_ServletContext_ServletConfig