首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

struts2兑现自定义拦截器对数据进行转码

2012-11-12 
struts2实现自定义拦截器对数据进行转码先上代码:?????? package cn.thszirs.common.utilimport java.uti

struts2实现自定义拦截器对数据进行转码

先上代码:

?????? package cn.thszirs.common.util;

import java.util.Date;

import javax.servlet.http.HttpServletRequest;

import org.springside.modules.web.struts2.Struts2Utils;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

/**
?* 对数据进行安全管理
?*
?* @author 张祺麟
?*
?*/
public class IllegalInterceptor extends AbstractInterceptor {

?@Override
?public String intercept(ActionInvocation invocation) throws Exception {
??HttpServletRequest request = Struts2Utils.getRequest();
??String param = "";
??String paramValue = "";
??java.util.Enumeration params = request.getParameterNames();
??// 循环读取参数
??while (params.hasMoreElements()) {

???param = (String) params.nextElement(); // 获取请求中的参数
???String[] values = request.getParameterValues(param);// 获得每个参数对应的值

???for (int i = 0; i < values.length; i++) {

????paramValue = values[i];

????// 转换目标字符变成对象字符,可以多个。后期扩展特殊字符库用于管理
????paramValue = new String(paramValue.getBytes("iso-8859-1"),
??????("UTF-8"));
????// 这里还可以增加,如领导人 自动转义成****,可以从数据库中读取非法关键字。
????values[i] = paramValue;

???}
???// 把转义后的参数重新放回request中
???request.setAttribute(param, paramValue);
??}
??return invocation.invoke();

?}
}

?

?

?

?

struts.xml

?

<!-- 实现数据转码 -->
?<package name="conver" extends="struts-default">
??<interceptors>
???<interceptor name="illegalInterceptor" />
???<interceptor-stack name="illegal">
????<interceptor-ref name="illegalInterceptor" />
????<interceptor-ref name="defaultStack" />
???</interceptor-stack>
??</interceptors>
??<default-interceptor-ref name="illegal" />
?</package>

?

?

拦截类代码

@ParentPackage("conver")加上这个代码就好了

?

该项目基于注解

?

?

实现数据转码所遇到的问题,自定拦截器配置在默认的拦截器后面,导致数据装配完成后才做转码,并没有实现数据转码的效果。后面把自定义拦截器放在默认拦截器的前面,先转码再转配数据,实现转码成功。

?

热点排行