`

代理实现过滤器例子

阅读更多
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
		
	}

}

 

分享到:
评论

相关推荐

    spring security 4 小例子带自定义过滤器

    在提供的压缩包文件"security4"中,可能包含了实现这个小例子的代码文件,包括配置类、过滤器类以及相关的测试用例。通过阅读这些文件,你可以更深入地了解自定义过滤器的实现细节。学习和实践这个例子,有助于提升...

    关于ip的过滤器 spring security例子

    本文将深入探讨如何在Spring Security中实现IP过滤器,以便控制访问应用的客户端IP地址。 首先,我们需要理解Spring Security的基本架构。它是一个多层次的组件模型,其中包括认证、授权和会话管理等核心功能。在...

    Struts2拦截器实现权限控制demo

    拦截器是基于Java的动态代理模式实现的,它们按照配置的顺序在Action执行之前和之后执行。通过实现`Interceptor`接口或继承`AbstractInterceptor`类,我们可以创建自定义拦截器。在Struts2的核心配置文件`struts.xml...

    使用Spring Cloud Netflix Zuul代理网关访问后台REST服务例子

    接着,你可以创建Zuul过滤器,通过实现`ZuulFilter`接口并覆盖`run()`方法来实现自定义逻辑。例如,创建一个简单的认证过滤器: ```java public class AuthFilter extends ZuulFilter { @Override public String ...

    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****| ...

    springcloud 例子

    SpringCloud 是一个基于 Spring Boot 实现的云应用开发工具集,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)...

    AIDL的一个例子

    - AndroidManifest.xml中注册对服务的绑定权限和意图过滤器。 - Activity或Service中使用bindService()方法连接服务。 - 使用IMyService.Stub.asInterface()获取服务的代理对象并调用其方法。 服务端项目则会有: -...

    Spring Cloud(zuul)使用例子.zip

    这里的代码可能包括了Zuul过滤器的实现以及服务路由的配置。 学习这个例子,你可以了解如何设置Zuul的路由规则,创建自定义过滤器,以及如何与其他Spring Cloud组件(如Eureka和Hystrix)集成。通过实际操作,你会...

    cxf入门例子(安全认证)

    CXF 的 Spring 容器,添加相关的拦截器或过滤器,比如 `org.apache.cxf.security.authentication.BasicAuthenticationInInterceptor` 或 `org.apache.cxf.security.transport.TLSClientParameters`,以实现 HTTPS ...

    spring-cloud 例子

    5. 在 Zuul 配置中,可以添加过滤器实现特定的功能,如安全验证、请求日志记录等。 6. 测试:通过 Zuul 网关访问服务,查看服务是否正常工作,同时检查 Eureka 控制台确认服务注册和发现的正确性。 在 `spring-...

    springcloud的小例子

    2. **Zuul边缘服务与路由**:Zuul是SpringCloud的API网关,它负责处理所有外部请求,进行路由转发,同时可以实现过滤器功能,比如认证、限流等。在“demo”中,可能会有一个Zuul实例设置,将请求路由到不同的服务...

    Spring Cloud 学习例子工程合集

    在示例中,学习者可以了解如何设置路由规则,实现 API 网关的功能,以及添加自定义过滤器来处理认证、限流等需求。 3. **Hystrix**:Hystrix 是一个用于处理延迟和故障的库,通过断路器模式防止服务雪崩。在示例中...

    shiro-se例子代码

    在`web.xml`中配置这些过滤器,可以实现Web应用的安全控制。 6. **测试** `shiro-se`例子可能包含了单元测试或集成测试,以验证Shiro的配置和逻辑是否正确。通过测试,开发者可以确保安全策略在实际应用中能够按...

    Spring Cloud学习例子

    Spring Cloud Gateway 是 Spring Cloud 的新一代 API 网关,它基于 Spring Framework 5、Project Reactor 和 Spring Boot 2 构建,提供了更强大的路由策略和过滤器功能。 这些例子将涵盖以上各个组件的使用,通过...

    spring security maven 例子

    2. **过滤器链**:Spring Security通过一系列过滤器处理HTTP请求,这些过滤器在Web应用的Servlet容器中被配置和执行。 - `DelegatingFilterProxy`:这是Spring Security与Servlet容器交互的关键,它代理到Spring ...

    demo-redis-bloom.zip

    - `BloomFilterServiceImpl`:实现了`BloomFilterRepository`接口的类,具体实现了布隆过滤器的业务逻辑。 - 测试类:测试布隆过滤器功能的单元测试或集成测试。 **6. 布隆过滤器的实现** 布隆过滤器的实现通常包括...

    23种设计模式的Java实现

    9. **过滤器模式(Filter)**:也称为Criteria模式,提供了一种方法来根据多个标准对一组对象进行筛选。在Java中,可以使用迭代器和接口实现过滤逻辑。 10. **组合模式(Composite)**:将对象组合成树形结构以表示...

    springcloud搭建的小例子

    4. **Zuul或Feign**: Zuul是SpringCloud的API网关服务,用于路由转发和过滤器处理。Feign则是一个声明式Web服务客户端,简化了服务间的调用。在这个例子中,可能使用了其中的一种,作为服务间通信的代理。 5. **...

    ios-Swift简单的实现分页选择效果.zip

    这个视图将包含实际的分段选择器,并实现代理协议中的方法。 ```swift class CustomSegmentedControl: UIView { var delegate: PageSelectDelegate? // 添加分段选择器和其他视图的代码 func ...

    基于spring-cloud2.X的Demo例子

    `Zuul` 是Spring Cloud 的边缘服务和API网关,它提供动态路由、过滤器、监控等功能,是系统对外的统一入口。`server-zuul` 应该是实现了Zuul功能的服务,负责路由转发和过滤,保护内部系统,提供统一的权限验证和...

Global site tag (gtag.js) - Google Analytics