`

代理实现过滤器例子

阅读更多
package cn.itcast.proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

import javax.servlet.http.HttpServletRequest;

public class NameProxy implements InvocationHandler{
	private HttpServletRequest request;
	
	public NameProxy(HttpServletRequest request) {
		super();
		this.request = request;
	}
	public HttpServletRequest getNameProxy(){
		
		HttpServletRequest proxy = (HttpServletRequest) Proxy.newProxyInstance(
								request.getClass().getClassLoader(),
								request.getClass().getInterfaces(),
								this
								);
		return proxy;
	}

	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		
			if("getParameter".equals(method.getName())){
				String value = request.getParameter(args[0].toString());
				value = filterHtml(value);
				return value;
			}
		return method.invoke(request, args);
	}
	 public static String filterHtml(String message) {

	        if (message == null)
	            return (null);

	        char content[] = new char[message.length()];
	        message.getChars(0, message.length(), content, 0);
	        StringBuffer result = new StringBuffer(content.length + 50);
	        for (int i = 0; i < content.length; i++) {
	            switch (content[i]) {
	            case '<':
	                result.append("&lt;");
	                break;
	            case '>':
	                result.append("&gt;");
	                break;
	            case '&':
	                result.append("&amp;");
	                break;
	            case '"':
	                result.append("&quot;");
	                break;
	            default:
	                result.append(content[i]);
	            }
	        }
	        return (result.toString());

	    }
}
package cn.itcast.filter;

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;

import cn.itcast.proxy.NameProxy;


public class NameFilter implements Filter {

	public void doFilter(ServletRequest req, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		//在放行之前要对提交过来的文本进行转意操作
		HttpServletRequest request =(HttpServletRequest) req;
		NameProxy  p = new NameProxy(request);
		HttpServletRequest requestp = p.getNameProxy();
		chain.doFilter(requestp, response);
	}
	public void destroy() {
		// TODO Auto-generated method stub
		
	}


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

}

 

分享到:
评论

相关推荐

    tcp_proxyfilter:使用 elixir 的 tcp 代理过滤器示例

    对于您的过滤器,您应该实现以下版本: def send_server (socket, &lt;&lt; 27&gt;&gt; ) do :gen_tcp . send (socket, " |****f5_PC****| " ) send_server (socket, rest)end 在这个例子中,它将发送字符串|****f5_PC****| ...

    Sosoo 1.0网络爬虫程序.doc

    用户可以把自己过滤器加入FilterChain中。 你可以实现DocumentFilter接口定制自己的功能,系统实现提供了一个LinkLocalizer实现,用于替换相对连接。 FilterChain filters=new FilterChain(); DocumentFilter ...

    Spring拦截器

    Spring Interceptor依赖于 IOC容器, 基于 Java反射机制动态代理实现的 使用场景 拦截器常用于权限验证等场景, 但由于依赖 IOC容器, 因此比起过滤器更灵活, 且控制的更细 常用拦截器接口 名称 类型 – ...

    Spring中文帮助文档

    3.12.3. 使用过滤器自定义扫描 3.12.4. 自动检测组件的命名 3.12.5. 为自动检测的组件提供一个作用域 3.12.6. 用注解提供限定符元数据 3.13. 注册一个LoadTimeWeaver 4. 资源 4.1. 简介 4.2. Resource接口 ...

    Spring API

    3.12.3. 使用过滤器自定义扫描 3.12.4. 自动检测组件的命名 3.12.5. 为自动检测的组件提供一个作用域 3.12.6. 用注解提供限定符元数据 3.13. 注册一个LoadTimeWeaver 4. 资源 4.1. 简介 4.2. Resource接口 ...

    TCPIP详解--共三卷

    TCP/IP详解 卷1:协议 ...=================================== TCP/IP详解 卷2:实现 ================ 第一章 概述 1.1 引言 1.2 源代码表示 1.3 历史 1.4 应用编程接口 1.5 程序示例 1.6 系统调用和库函数 1.7 ...

    h_JAVA 2应用编程150例.rar

    实例43 文件过滤器 122 实例44 获取文件信息 123 第4章 Java网络编程 125 实例45 选择字体 126 实例46 UDP与TCP/IP的简单应用 129 实例47 聊天室 131 实例48 浏览FTP 136 实例49 局域网广播 147 实例50 建立HTTP连接...

    Java EE常用框架.xmind

    使用过滤器实现登录和退出功能 步骤 当用户没有认证时,请求loginurl进行认证【上边我们已经配置了】,用户身份和用户密码提交数据到loginurl FormAuthenticationFilter拦截住取出request中的username...

    TCP_IP详解卷1

    作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作。 本书适合作为计算机专业学生学习网络的教材和教师参考书。也...

    TCPIP详解卷[1].part04

    作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作。 本书适合作为计算机专业学生学习网络的教材和教师参考书。也...

    TCPIP详解卷[1].part09

    作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作。 本书适合作为计算机专业学生学习网络的教材和教师参考书。也...

    TCPIP详解卷[1].part05

    作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作。 本书适合作为计算机专业学生学习网络的教材和教师参考书。也...

    TCPIP详解卷[1].part03

    作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作。 本书适合作为计算机专业学生学习网络的教材和教师参考书。也...

    TCPIP详解卷[1].part06

    作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作。 本书适合作为计算机专业学生学习网络的教材和教师参考书。也...

    TCP/IP详解part_2

    作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作。 本书适合作为计算机专业学生学习网络的教材和教师参考书。也...

    TCPIP详解卷[1].part08

    作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作。 本书适合作为计算机专业学生学习网络的教材和教师参考书。也...

Global site tag (gtag.js) - Google Analytics