struts2_03 自定义类型转换器 拦截器
来源:互联网 发布:中国空巢老人数据 编辑:程序博客网 时间:2024/06/03 12:28
一、自定义类型转换器
1、编写一个类,继承com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter
2、覆盖掉其中的public Object convertValue(Map<String, Object> context, Object value,Class toType)
context: OGNL表达式的上下文
value: 实际的值。用户输入的都是字符串,但他是一个String数组。
toType: 目标类型
-------------------------------------------------------------------------------------------------------------
public class DateConvertor extends DefaultTypeConverter {
@Override
public Object convertValue(Map<String, Object> context, Object value,Class toType) {
DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
if(toType==Date.class){
//2013/05/31----->java.util.Date 保存数据时
String strValue = ((String[])value)[0];
try {
return df.parse(strValue);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}else{
//java.util.Date----->2013/05/31 获取数据时
Date dValue = (Date)value;
return df.format(dValue);
}
}
}
-------------------------------------------------------------------------------------------------------------
3、注册类型转换器
3.1局部类型转换器:只对当前的Action有效
具体做法:在动作类相同的包中,建立一个名称是“动作类名-conversion.properties”的配置文件,
文件中增加以下内容:要验证的字段=验证转换器的类全名
如: birthday=cn.itcast.convertor.DateConvertor
3.2全局类型转换器:对所有的Action都有效
具体做法:在WEB-INF/classes目录(src)下,建立一个名称为"xwork-conversion.properties"的配置文件,
文件中增加以下内容:目标类型全名=验证转换器类全名
java.util.Date=cn.itcast.convertor.DateConvertor
注意:如果转换失败,Struts2框架会寻找name=input的结果页面
注: JDK必须为7 若JDK为8则有问题
二、自定义拦截器
1、编写一个类,实现com.opensymphony.xwork2.interceptor.Interceptor
2、主要实现public String intercept(ActionInvocation invocation) throws Exception{}方法
该方法的返回值就相当于动作的返回值
如果调用了String result = invocation.invoke();得到了动作类的返回的值。
public String intercept(ActionInvocation invocation) throws Exception {
//判断用户是否登录
HttpSession session = ServletActionContext.getRequest().getSession();
Object obj = session.getAttribute("user");
if(obj==null){
return "login";
}else{
return invocation.invoke();//调用动作方法
}
}
3、拦截器定义好后,一定要在配置文件中进行注册:该步只是定义拦截器,并没有起作用
<interceptors>
<interceptor name="permissionInterceptor" class="cn.itcast.interceptor.PermissionInterceptor"></interceptor>
</interceptors>
4、配置文件中的动作,要通过<interceptor-ref name="permissionInterceptor"></interceptor-ref>使用该拦截器
注意:一旦动作中使用了自定义的拦截器,那么默认的就不起作用了。
一般将默认的拦截器声明在最前面,自定义的拦截器放在最后
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="permissionInterceptor"></interceptor-ref>
5、全局拦截器
注: 多个动作类都要使用的话,可以通过package来进行组合。
拆分struts.xml时,在子配置文件中调用全局的拦截器如下:
---------------------------------------------------------------------------------------------------------------------------
struts2.xml配置如下:
<struts>
<package name="mypackage" extends="struts-default">
<!-- 配置全局的权限拦截器 -->
<interceptors>
<interceptor name="permissonInterceptor" class="cn.itcast.interceptor.PermissonInterceptor"></interceptor>
<interceptor-stack name="mydefaultstack">
<interceptor-ref name="defaultstack"></interceptor-ref>
<interceptor-ref name="permissonInterceptor"></interceptor-ref>
</interceptor-stack>
</interceptors>
</package>
<include file="interceptor.xml"></include>
</struts>
interceptor.xml配置如下:
<struts>
<package name="interceptor" extends="mypackage">
<action name="visitIndex" class="cn.itcast.action.VisitAction" method="execute">
<!-- 调用struts.xml中全局的拦截器 -->
<interceptor-ref name="mydefaultstack"></interceptor-ref>
</action>
</package>
</struts>
---------------------------------------------------------------------------------------------------------------------------
0 0
- struts2_03 自定义类型转换器 拦截器
- Struts2自定义类型转换器、自定义拦截器和用户输入数据的验证
- Struts2类型转换器与拦截器
- 自定义类型转换器
- Struts2自定义类型转换器
- struts2 自定义类型转换器
- 自定义类型转换器
- struts2自定义类型转换器
- Struts2自定义类型转换器
- 自定义类型转换器实例:
- 自定义类型转换器
- 自定义类型转换器
- Struts2自定义类型转换器
- 自定义Struts2类型转换器
- struts2自定义类型转换器
- 自定义类型转换器
- struts2 自定义类型转换器
- struts2 自定义类型转换器
- Tomcat7 Websocket入门贴
- 计算机属性打不开修复
- RHCS + Mysql安装配置
- Java中使用Jedis操作Redis
- wireshark 过滤规则
- struts2_03 自定义类型转换器 拦截器
- jquery 只能输入数字和小数
- 正则表达式—叠词
- C++ 获取变量名称 & 获取类型的名称
- zend studio 8 提示和代码字体如何修改
- struts2_04 常见servlet对象的获取,文件上传
- 【NOI2015】BZOJ4195程序自动分析(并查集+离散化)
- 最短路径算法介绍(转载)floyd+dijkstra
- Handler