博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts2开发时通过interceptor拦截器实现输入数据过滤前后空格的功能
阅读量:4125 次
发布时间:2019-05-25

本文共 2238 字,大约阅读时间需要 7 分钟。

        因为做的项目管理项目居多,有很多查询列表页面,少不了名称查询等功能,但是如果每个逻辑中都验证过滤前后空格会比较麻烦,就像用struts的拦截器实现全部输入的字符串过滤来实现,效果不错,但是在实现过程中有几个地方耽误了点时间,也温故知新了些知识,这里总结一下,互相学习一下

        介绍下结构,项目采用SSH框架

        首先在拦截器注册文件interceptorContext.xml中声明拦截器:

 

        然后配置struts.xml文件,加入拦截队列

 

/index.jsp?url=${url}

        这里注意一下,在拦截器栈中,trimInterceptor的位置要在defaultStack之上,否则不会生效甚至报错

        下一步就是实现拦截器代码了

        这里在开发中犯了一次二,就是在取参数值的时候,一开始得到value后直接.toString(),然后trim()了,再塞回去,可是报错,参数违法什么的;之后输出了class类型:

System.out.println(value.getClass());

输出为:

class [Ljava.lang.String;class [Ljava.lang.String;class [Ljava.lang.String;class [Ljava.lang.String;class [Ljava.lang.String;

         当时看成了String类型了,一看没错啊,怎么不对呢,找了会问题,才哗然大悟,form里面的参数其实是数组的,相同name提交后得到是参数是数组的数据,而且显示的class显示为String[]的,然后修改输出一看OK了

System.out.println(value.getClass()+"--"+JsonUtil.toJson(value));
class [Ljava.lang.String;--["22222"]class [Ljava.lang.String;--[""]class [Ljava.lang.String;--[""]class [Ljava.lang.String;--["11111"]class [Ljava.lang.String;--["3333"]

下面是详细代码,也可以在这里下载:

 

package main.com.eca.interceptor;import java.util.Iterator;import java.util.Map;import java.util.Set;import org.apache.commons.lang.StringUtils;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.Interceptor;public class TrimInterceptor implements Interceptor {	private static final long serialVersionUID = -2578561479301489061L;	public void destroy() {	}	/* 	 * @Description:拦截所有参数,去掉参数空格	 * @see com.opensymphony.xwork2.interceptor.Interceptor#intercept(com.opensymphony.xwork2.ActionInvocation)	 */	public String intercept(ActionInvocation invocation) throws Exception {				Map map=invocation.getInvocationContext().getParameters();		Set keys = map.keySet();                  Iterator iters = keys.iterator();        		while(iters.hasNext()){        			Object key = iters.next();        			Object value = map.get(key);        			map.put(key, transfer((String[])value));        		}		return invocation.invoke();	}		/**	 * @Description: 遍历参数数组里面的数据,取出空格	 * @param params	 * @return	 */	private String[] transfer(String[] params){		for(int i=0;i

 

转载地址:http://lvlpi.baihongyu.com/

你可能感兴趣的文章
并发编程实战14-LongAdder统计加法器-计数器jdk8
查看>>
并发编程实战15-重排序、happens-before
查看>>
集体智慧编程5-优化算法-爬山法、模拟退火、遗传算法
查看>>
遗传算法求解TSP问题
查看>>
路径搜索算法-A星算法
查看>>
Hadoop的HA高可靠性集群搭建(Hadoop+High availability+Zookeeper)
查看>>
hadoop集群-单词计数wordcount
查看>>
Hadoop的HA集群HDFS搭建-错误记录
查看>>
图算法-Prim、Kruskal、Dijkstra、Floyd、Bellman
查看>>
智能优化算法-粒子群算法
查看>>
MapReduce开发环境搭建
查看>>
hadoop计算框架shuffle-计算每个月最高三个温度出现的时间
查看>>
微信公众号平台搭建连接javaweb
查看>>
推荐系统-计算用户关联度fof(hadoop计算)
查看>>
hadoop-hive初始化
查看>>
基于深度循环神经网络的单通道人声与音乐的分离-论文翻译
查看>>
hadoop-mapreduce基于物品的协同推荐算法ItemCF
查看>>
Hadoop-HBase集群搭建
查看>>
hadoop-hbase几个错误记录
查看>>
hadoop集群简化安装-CDH的安装和使用
查看>>