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

本文介绍了一个用于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" class="cn.thszirs.common.util.IllegalInterceptor" />
   <interceptor-stack name="illegal">
    <interceptor-ref name="illegalInterceptor" />
    <interceptor-ref name="defaultStack" />
   </interceptor-stack>
  </interceptors>
  <default-interceptor-ref name="illegal" />
 </package>

 

 

拦截类代码

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

 

该项目基于注解

 

 

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值