`
mushme
  • 浏览: 779409 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

通过filter修改提交过来的数据

 
阅读更多
request.getParameter可以获取到前台提交到的数据。
如果想对数据处理,进行一些安全方面的转义,这样可以通过较少的代码修改来实现。
在实现的时候,发现request对象并没有提供setParameter方法让我们来修改参数内容。
我们可以通过以下方式来实现。
1.新建立一个项目,项目名称webProject
2.index.jsp里代码如下,打印接收到的参数内容
<%
String name=request.getParameter("username");
System.out.println("name:"+name);
%>

3.访问http://localhost:8080/webProject/index.jsp?username=123<a><input>,结果为
name:123<a><input>

4.在web.xml里添加一个filter
   <filter>
   <filter-name>securityFilter</filter-name>
   <filter-class>info.frady.SecurityFilter</filter-class>

  </filter>
  <filter-mapping>
    <filter-name>securityFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

5.SecurityFilter的代码如下
package info.frady;


import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

public class SecurityFilter implements Filter {
    private FilterConfig filterConfig;
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // TODO Auto-generated method stub
        this.filterConfig = filterConfig;

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        // TODO Auto-generated method stub
    	SecirityHttpServletRequestWrapper requestwrapper = new SecirityHttpServletRequestWrapper((HttpServletRequest)request);

    //对自定义装饰器初始化后,继续发关原先的请求,不过将ServletRequest request  改为自定义装饰器的对像requestwrapper
    chain.doFilter(requestwrapper, response);
    }

    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

}

6.SecirityHttpServletRequestWrapper为自定义的类,继承自HttpServletRequestWrapper
代码如下:
package info.frady;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

public class SecirityHttpServletRequestWrapper extends HttpServletRequestWrapper {

	public SecirityHttpServletRequestWrapper(HttpServletRequest request) {
		super(request);
	}
	//覆写getParameter方法
    @Override
    public String getParameter(String name) {
    	String postValue=super.getParameter(name);
    	postValue=postValue.replace("<", "&lt;").replace(">", "&gt;");
        return postValue;
    }

}


7.访问http://localhost:8080/webProject/index.jsp?username=123<a><input>,结果为
name:123&lt;a&gt;&lt;input&gt;
分享到:
评论

相关推荐

    JSP 开发中过滤器filter设置编码格式的实现方法

    我们知道为了避免提交数据的乱码问题,需要在每次使用请求之前设置编码格式。在你复制粘贴了无数次request.setCharacterEncoding(“gb2312”);后,有没有想要一劳永逸的方法呢?能不能一次性修改所有请求的编码呢?...

    Log Explorer4.2帮助文档

    你可以浏览日志、导出数据、恢复被修改或者删除的数据(包括执行过update,delete,drop和truncate语句的表格)。一旦由于系统故障或者人为因素导致数据丢失,它能够提供在线快速的数据恢复,最大程度上保证恢复期间的...

    华奥汽车销售集团网源码

    客户管理:该网站支持客户注册、登录和信息修改,客户可以根据不同的车型进行浏览和搜索,同时还可以在线提交购车需求和预约试驾等服务。 订单管理:该网站支持客户进行在线下单和支付,客户可以根据自己的需求选择...

    zTree(JQuery Tree) v3.1.rar

    * 【增加】ajax 的参数 setting.async.contentType ,让提交参数适用于 json 数据提交 (主要适用于 .Net 的开发)。 * 【增加】setting.edit.editNameSelectAll, 用于设定编辑节点名称时初次显示 input 后 text ...

    sql2000 Log Explorer4.2(含注册码)+汉化

    你可以浏览日志、导出数据、恢复被修改或者删除的数据(包括执行过update,delete,drop和truncate语句的表格)。一旦由于系统故障或者人为因素导致数据丢失,它能够提供在线快速的数据恢复,最大程度上保证恢复期间的...

    Log Explorer for SQL Server v4.22 含注册机

    你可以浏览日志、导出数据、恢复被修改或者删除的数据(包括执行过update,delete,drop和truncate语句的表格)。一旦由于系统故障或者人为因素导致数据丢失,它能够提供在线快速的数据恢复,最大程度上保证恢复期间的...

    Log Explorer for SQL Server v4.22

    你可以浏览日志、导出数据、恢复被修改或者删除的数据(包括执行过update,delete,drop和truncate语句的表格)。一旦由于系统故障或者人为因素导致数据丢失,它能够提供在线快速的数据恢复,最大程度上保证恢复期间的...

    ASP.NET.4揭秘

    2.3 提交表单数据60 2.3.1 使用button控件61 2.3.2 使用linkbutton控件62 2.3.3 使用imagebutton控件65 2.3.4 button控件使用客户端脚本68 2.3.5 执行跨页面发送70 2.3.6 指定默认按钮73 2.3.7 处理command事件74 ...

    日志记录组件log4web.js.zip

    使用者可以通过在console控制台通过log4web.config({tagFilter:"usersmodule"})配置值输出"usersmodule"tag的日志。默认值:"".log4web.config({tagFilter:"usersmodule"});post当发生异常是是否post到服务器。此处...

    Nginx安装包

    启动tomcat1,在浏览器中输入localhost:8080,进入我们的登录页面,登录页面代码就不贴出了,就是ajax提交而已。输入我们的用户名和密码。登录。看到我们登录成功了,用户个人中心能成功显示我们的用户名。 再看看...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    3.10.1 表单提交中文数据乱码 3.10.2 如何在超链接中传递多个参数 3.10.3 重定向后出现404错误 3.11 精彩回顾 第4章 体验面向对象 1IavaBean技术 4.1 本章学习任务 4.1.1 本章知识体系 4.1.2 实例开发任务 4.2 ...

    Gaussian Mixture Probability Hypothesis Density Filter (GM-PHD):高斯混合概率假设密度滤波器GM-PHD的实现。-matlab开发

    提交的内容包括由 Vo & Ma 描述的线性卡尔曼滤波器 GM-PHD 滤波器和扩展卡尔曼滤波器 GM-PHD 滤波器算法的 Matlab 实现,以及他们论文中描述的模拟问题之一。 Vo & Ma 的算法做了一些修改,但它们是出于技术原因,...

    civism-sso:基于springmvc+redis+shiro 实现的分布式单点登录系统

    * 鉴权:在子项目中,filter拦截所有数据请求转发到sso的/authorize路径,根据sso返回值来判断是否有权限访问 * 跨域:sso支持不同域名的访问,采用了jsonp请求方式,返回可执行代码来达到跨域 * 前后端分离:sso...

    《MyEclipse 6 Java 开发中文教程》前10章

    8.7 创建Filter(过滤器) 152 8.8 创建数据库访问层(DAO) 155 8.9 修改Servlet调用后台类 158 8.10 发布,重新发布,运行和测试应用 159 8.11 调试JSP应用 160 8.12 向现有Web项目添加Web开发功能 161 8.13高级设置 ...

    Ext Js权威指南(.zip.001

    7.3.4 格式化提交数据:ext.data.writer.writer、ext.data.writer.json和ext.data. writer.xml / 322 7.3.5 writer对象的配置项 / 325 7.4 数据模型 / 326 7.4.1 概述 / 326 7.4.2 数据类型及排序类型:ext....

    Java EE常用框架.xmind

    当用户没有认证时,请求loginurl进行认证【上边我们已经配置了】,用户身份和用户密码提交数据到loginurl FormAuthenticationFilter拦截住取出request中的username和password(两个参数名称是可以配置的) ...

    测试培训教材

    修改数据库中的数据: 修改后可以登陆 但是还需要修改以前Project的数据库连接属性 否则会提示错误 然后还要修改 C:\Program Files\Mercury\Quality Center\repository\qc中的dbcon.txt: qcsiteadmin_...

    asp.net知识库

    SubmitOncePage:解决刷新页面造成的数据重复提交问题 SharpRewriter:javascript + xml技术利用#实现url重定向 采用XHTML和CSS设计可重用可换肤的WEB站点 asp.net的网址重定向方法的比较:面向搜索引擎友好 也谈 ...

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料

    Dom提交表单及其他 Dom事件操作 Dom事件操作补充 Dom绑定时间的另外一种方式 JavaScript 词法分析解析 前端学习方法分享 Sublime Text工具使用介绍 谢幕 第17周 今日内容概要 jQuery 和Dom关系及jQuery版本 jQuery...

Global site tag (gtag.js) - Google Analytics