`
mushme
  • 浏览: 790107 次
  • 性别: 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;
分享到:
评论

相关推荐

    使用HttpServletRequestWrapper在filter修改request参数

    标题“使用HttpServletRequestWrapper在filter修改request参数”揭示了主要知识点,即如何在过滤器中通过自定义`HttpServletRequestWrapper` 子类来动态改变请求参数。这通常用于处理如数据验证、安全过滤、参数转换...

    C#利用数据绑定控件修改数据

    5. **保存修改**:当用户完成所有修改后,可以通过`BindingSource`保存到原始数据源。如果是数据库,通常需要将`DataTable`中的更改提交回数据库。 ```csharp if (bindingSource1.IsCurrentRowDirty) { binding...

    js表格操作,DOM实现数据动态增删查改

    - 当用户提交修改时,更新选定行在数据数组中的记录。 - 同步更新DOM中的对应单元格内容。 7. **事件委托** - 避免为每个按钮或单元格添加单独的事件监听器,而是可以使用事件委托。 - 在表格容器元素上添加一...

    Delphi通过SQLLite数据库进行简单的增加删除修改之类的操作

    在本文中,我们将深入探讨如何使用Delphi编程环境与SQLite数据库进行交互,实现基本的数据操作,包括增加、删除和修改。SQLite是一个轻量级、自包含的数据库引擎,广泛应用于各种桌面、移动以及嵌入式系统。Delphi,...

    java修改请求参数

    总的来说,虽然Java中的请求参数默认是只读的,但通过`HttpServletRequestWrapper`和`Filter`,我们可以实现动态修改请求参数。同时,为了保证应用的安全性,必须严格验证和过滤输入,防止参数被篡改。在实际开发中...

    Java登录注册列表小项目和Filter测试代码

    在Java编程领域,"Java登录注册列表小项目和Filter测试代码"是一个常见的实践项目,它涵盖了Web应用程序开发中的基础功能,如用户身份验证、权限控制以及数据操作。在这个项目中,开发者通常会创建一个简单的用户...

    9.filter.doc

    `FilterServlet`是Java Servlet技术中的一个重要组成部分,它允许开发者在请求到达目标Servlet或JSP之前以及之后进行...在这个案例中,我们看到了如何通过`Filter`来实现敏感内容的过滤,确保了用户提交信息的安全性。

    PowerBuilder DataWindow的数据更新技术及应用.doc

    总结起来,PowerBuilder DataWindow的数据更新技术通过数据缓冲机制提供了高效、灵活的数据管理方式,使得开发者能够更好地控制数据的编辑、验证和提交,尤其适用于需要实时更新关联数据的复杂业务场景。理解并熟练...

    git修改和删除

    4. **提交首次修改**:使用`git commit`命令将暂存区中的修改提交到仓库。 ```bash $ git commit -m "Git tracks changes" [master d4f25b6] Git tracks changes 1 file changed, 1 insertion(+) ``` 5. **...

    VC对数据库的操作实现数据的增加,删除,查找,修改

    对于已有数据的修改,先通过查询找到需要更新的记录,然后修改`Recordset`中的相应字段,最后调用`Update`方法保存更改。SQL形式为`UPDATE 表名 SET 字段 = 新值 WHERE 条件`。 5. **连接管理** 数据库连接的建立...

    修改tomcat的编码为utf-8

    - **提交测试数据:** 构造一个包含中文字符的POST或GET请求,观察返回结果是否正常显示。 - **查看日志文件:** 查看Tomcat的日志文件(如`catalina.out`),确认是否有乱码或异常信息。 - **使用工具检测:** 使用...

    jsp防止跨域提交数据的具体实现.docx

    通过上述分析可以看出,`ArgsIsValidFilter`过滤器有效地实现了对跨域提交数据的防护。它通过检查HTTP请求的`Referer`头部信息,并结合预设的白名单来判断请求的有效性,从而确保了系统的安全性。此外,该过滤器还...

    学生信息管理系统(jsp,Junit,servlet,filter,sql)

    在本系统中,Servlet充当了后台服务的角色,接收JSP提交的数据,执行业务逻辑,如添加、删除、修改和查询学生信息。Servlet还可以调用数据库接口,通过SQL语句操作数据库,完成数据的增删改查。 JUnit是Java编程...

    Ajax请求和Filter配合案例解析

    通过使用JavaScript,开发者可以在用户交互时提交数据,这样用户无需等待整个页面刷新,提升了用户体验。常见的JavaScript库,例如jQuery,提供了一种简化的方式调用Ajax,如下所示的jQuery Ajax代码片段: ```...

    PB9.0数据窗口技术

    - 编辑(Edit):用户可以直接在数据窗口中编辑数据,更改后的数据会自动提交到数据库。 - 排序(Sort):支持对数据进行升序或降序排列。 - 分组(Group):根据一个或多个字段对数据进行分组,便于聚合计算。 ...

    本节课Lesson_servlet增删改查_理解filter

    3. **更新**:用户修改数据并提交,Servlet捕获更新请求,更新数据库中的相应记录。 4. **删除**:用户选择删除某条数据,Servlet处理删除请求,从数据库中移除该记录。 在这个过程中,Filter可以用来确保只有已...

    java用户密码修改

    表单提交后,后台JavaServlet或Filter会接收到请求,执行上述逻辑。同时,可以使用AJAX技术实现异步更新,提供更好的用户体验。 以下是一个简单的JSP表单示例: ```jsp ; charset=UTF-8" pageEncoding="UTF-8"%&gt; ...

    PowerBuilder9数据窗口技术

    数据窗口包含多个对象,如Item(项)表示单个数据字段,Column(列)定义字段的显示属性,Filter(过滤器)用于筛选数据,Group(分组)用于数据分组,Summary(汇总)则用于计算总计或平均值等统计信息。...

    layui添加修改删除

    在“layui添加修改删除”这个主题中,我们将深入探讨如何使用layui实现数据表格的基本操作,包括添加、修改和删除功能。 首先,layui的数据表格(layui table)是其核心组件之一,用于展示数据并进行交互。要创建一...

Global site tag (gtag.js) - Google Analytics