如果使用Servlet的Filter过滤数据库中非法字符?

cs78799662 2010-07-31 05:24:16
我的数据库已经被插入了若干条存在非法字符的数据,请问如果使用Filter来过滤数据库中读取的每个字段?
只剩下这些分了,有些不好意思
以下是我通过文档写的代码但不知如何修改,如下:

package com.xjdnw.utility;


import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
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.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;

public class Response2Filter implements Filter {

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

}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {

HttpServletResponseWrapper2 response2 = new HttpServletResponseWrapper2((HttpServletResponse) response);
chain.doFilter(request, response2);

PrintWriter out = response.getWriter();
out.println(response2.toString());

response2.setHeader("Cache-Control", "no-cache");
response2.setHeader("Pragma", "no-cache");
response2.setHeader("X-UA-Compatible", "IE=EmulateIE7");
response2.setHeader("Content-Type", "text/html; charset=UTF-8");
response2.setDateHeader("Expires", -1);
}

public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub

}

private class HttpServletResponseWrapper2 extends HttpServletResponseWrapper {
private StringWriter stringWriter;

public HttpServletResponseWrapper2(HttpServletResponse response) {
super(response);

// TODO Auto-generated constructor stub
stringWriter = new StringWriter();
}

public PrintWriter getWriter() {

return new PrintWriter(stringWriter);
}

public String toString() {

return stringWriter.toString();
}
}


}

...全文
247 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xie668 2010-08-01
  • 打赏
  • 举报
回复
我来帮你了
jeky_zhang2013 2010-07-31
  • 打赏
  • 举报
回复
加个response.setCharacterEncoding("utf-8");
在web.xml中将这个过滤器配置下,会随着服务器的启动而启动
- <filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>edu.whut.ieb.sys.SetCharacterEncodingFilter</filter-class>
</filter>
- <filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- <filter>


将里面的路径换成你的路径
tuo_bing 2010-07-31
  • 打赏
  • 举报
回复
写一个公共的方法,在读取数据的时候进行判断 ,如果有非法数据,则屏蔽 。。。。
bb12152205gg 2010-07-31
  • 打赏
  • 举报
回复
没看懂LZ的意思
licip 2010-07-31
  • 打赏
  • 举报
回复
数据库中的非法字符你是如何插入的。你可以在servlet中对数据中的非法字符过虑。
cs78799662 2010-07-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tuo_bing 的回复:]
写一个公共的方法,在读取数据的时候进行判断 ,如果有非法数据,则屏蔽 。。。。
[/Quote]
我这里有上千条字段,我一个个的添加方法?痛苦。。。。。
cs78799662 2010-07-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jeky198306 的回复:]
加个response.setCharacterEncoding("utf-8");
在web.xml中将这个过滤器配置下,会随着服务器的启动而启动
- <filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>edu.whut.ieb.sys.SetCharacterEncodingFilte……
[/Quote]
不是解决编码问题
cs78799662 2010-07-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 licip 的回复:]
数据库中的非法字符你是如何插入的。你可以在servlet中对数据中的非法字符过虑。
[/Quote]
之前没有过滤,数据可以知道写入到数据库
我现在的想法是能够在读出数据的时候,能把一些敏感字符过滤掉

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧