`

spring 整合Filter

阅读更多
一、使用spring提供的代理类(DelegatingFilterProxy)整合Filter

1.编写类并实现Filter接口
package com.test;

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 javax.servlet.http.HttpServletResponse;

import com.test.service.TestService;

public class AuthenticationFilter implements Filter {

	// 验证码接口
	private TestService testService;

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

		HttpServletRequest httpRequest = (HttpServletRequest) request;
		HttpServletResponse httpResponse = (HttpServletResponse) response;

		String path = httpRequest.getServletPath();
                String tag = httpRequest.getParameter("tag");

                // 拦截登录action
		if ("/login".equals(path) && null != tag) {
                        testService.saveTest();
			httpResponse.sendRedirect(httpRequest.getContextPath() + "/login");
			return;
		}

		chain.doFilter(request, response);
	}

	@Override
	public void init(FilterConfig config) throws ServletException {
	}

	@Override
	public void destroy() {
	}

	public TestService getTestService() {
		return testService;
	}

	public void setTestService(TestService testService) {
		this.testService = testService;
	}

}



2.在spring配置文件中声明此类
	<bean id="authenticationFilter" class="com.test.AuthenticationFilter">
		<property name="testService" ref="testService" />
	</bean>


3.修改web.xml如下:

   <filter> 
        <filter-name>authenticationFilter</filter-name> 
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
        <init-param> 
            <param-name>targetFilterLifecycle</param-name> 
            <param-value>true</param-value> 
        </init-param> 
    </filter> 
    <filter-mapping> 
        <filter-name>authenticationFilter</filter-name> 
        <url-pattern>/*</url-pattern> 
    </filter-mapping>



通过上述3步骤实现spring整合Filter。


二、通过获取spring的上下文整合Filter
1.编写一个类实现Filter接口
package com.test;

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 javax.servlet.http.HttpServletResponse;

import com.test.service.TestService;

public class AuthenticationFilter implements Filter {

	// 验证码接口
	private TestService testService;

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

		HttpServletRequest httpRequest = (HttpServletRequest) request;
		HttpServletResponse httpResponse = (HttpServletResponse) response;

		String path = httpRequest.getServletPath();
                String tag = httpRequest.getParameter("tag");

                // 拦截登录action
		if ("/login".equals(path) && null != tag) {
                        testService.saveTest();
			httpResponse.sendRedirect(httpRequest.getContextPath() + "/login");
			return;
		}

		chain.doFilter(request, response);
	}

	@Override
	public void init(FilterConfig config) throws ServletException {
		captchaService = (CaptchaService) getBean("captchaService", config);
	}

	@Override
	public void destroy() {
	}

	/**
	 * 通过spring工具类获取,spring接管的实体bean
	 * 
	 * @param beanName
	 *            bean名称
	 * @param config
	 *            FilterConfig对象
	 * 
	 * @return 实体bean
	 */
	private Object getBean(String beanName, FilterConfig config) {
		WebApplicationContext wac = WebApplicationContextUtils
				.getRequiredWebApplicationContext(config.getServletContext());
		return wac.getBean(beanName);
	}

	public TestService getTestService() {
		return testService;
	}

	public void setTestService(TestService testService) {
		this.testService = testService;
	}

}



2.修改web.xml如下:
    <filter>
        <filter-name>authenticationFilter</filter-name>
        <filter-class>com.test.AuthenticationFilter</filter-class>
    </filter>
    <filter-mapping> 
        <filter-name>authenticationFilter</filter-name> 
        <url-pattern>/*</url-pattern> 
    </filter-mapping>


分享到:
评论

相关推荐

    Spring 管理filter 和servlet

    特别是在Java EE环境中,如何有效地整合Spring与Servlet、Filter等核心组件,对于构建高性能、高灵活性的应用系统至关重要。本文将深入探讨Spring管理Filter和Servlet的机制与实践步骤,帮助开发者更好地理解和运用...

    Shiro和Spring整合 这个资源真的可运行

    提供的资源“Shiro和Spring整合完全可运行”应该是一个包含完整配置和示例代码的项目。通过这个实例,你可以了解如何设置 Realm,定义权限和角色,以及如何在控制器和视图层实现登录、权限控制等功能。通过实际运行...

    Mybatis与Spring整合创建Web项目

    以下是对"Mybatis与Spring整合创建Web项目"这一主题的详细说明: 一、Mybatis简介 Mybatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。Mybatis避免了几乎所有的JDBC代码和手动设置参数以及...

    Spring Cloud Gateway 整合 Spring Security 统一登录认证鉴权

    3. **定制Filter**:在Spring Cloud Gateway中,我们可以自定义WebFlux Filter,利用Spring Security提供的API进行认证和鉴权。这通常涉及到`@PreAuthorize`和`@Secured`等注解的使用,以控制对特定路由的访问权限。...

    spring整合shiro

    - **Web 集成**:在 Spring MVC 应用中,通过 Filter 方式整合 Shiro,处理请求过滤和权限控制。 - **配置文件**:通常在 Spring 的配置文件中声明 Shiro 的相关 Bean,如定义 SecurityManager 和 Realm。 3. **...

    Spring整合Jetty开发web应用的例程

    通过以上知识点,我们可以理解如何使用Spring整合Jetty来开发Web应用,从而实现更高效、更灵活的开发流程。实际项目中,开发者可以根据具体需求调整配置,如添加过滤器、监听器,或者配置更多的Servlet和Filter,以...

    shiro和spring整合

    在本文中,我们将深入探讨Shiro与Spring整合的关键知识点,包括整合的目的、核心组件、配置过程以及实际应用。 **一、整合目的** Shiro是一款轻量级的安全框架,提供了认证、授权、会话管理和加密等核心功能。...

    struts2和Spring整合需要的jar包

    下面将详细介绍整合Struts2和Spring所需的关键知识点。 首先,我们需要理解整合的目的。Struts2提供了强大的Action层处理,而Spring则擅长于业务逻辑管理和数据访问。整合这两者,我们可以将Struts2的动作控制与...

    spring springmvc mybatis框架整合需要的jar包

    最后,应用的启动入口通常是一个Servlet或Filter,例如Spring的ContextLoaderListener或DelegatingFilterProxy,它们负责初始化Spring容器,并在Web应用启动时加载配置。 总结起来,整合Spring、SpringMVC和MyBatis...

    spring shiro整合

    - Filter配置,将Shiro的过滤器链加入到Spring MVC的Filter链中,实现请求的拦截和处理。 通过学习和实践"spring-shiro整合",开发者不仅可以掌握Web安全框架的使用,还能深入理解Spring MVC和MyBatis的集成,提升...

    Struts整合Spring步骤

    以下是一个简单的整合Struts 2和Spring的步骤详解: **1. 创建Web项目** 首先,你需要创建一个新的Web项目,例如名为`Struts2Spring1.1`。项目结构应包含标准的Web应用目录,如`WEB-INF`,`src/main/java`,`src/...

    Spring MVC整合shiro

    **Spring MVC 整合 Shiro 知识点详解** Spring MVC 是一款强大的MVC框架,用于构建企业级的Web应用程序,而Apache Shiro则是一款安全框架,负责处理身份验证、授权(权限控制)、会话管理和安全性相关的其他功能。...

    Spring与Struts2整合

    Spring以其强大的依赖注入(DI)和面向切面编程(AOP)能力,而Struts2则以其优秀的MVC设计模式著称,两者整合可以构建出高效、可维护的Web应用。下面将详细介绍Spring与Struts2整合的相关知识点。 **一、整合背景*...

    Spring Seucrity整合CAS

    在本文中,我们将深入探讨如何将Spring Security与CAS(Central Authentication Service)整合,以便实现单点登录(Single Sign-On, SSO)功能。首先,我们需要了解Spring Security和CAS的基本概念。 **Spring ...

    hibernate struts2 和spring的整合项目

    - 集成Hibernate:通过Spring的SessionFactoryBean配置,将Hibernate与Spring整合,使得数据库操作可以通过Spring的依赖注入来完成。 - 配置Struts2:在struts.xml中定义Action,通过Spring插件实现Action的依赖...

    struts2+hibernate3.3+spring3.0整合实例

    1. 配置项目结构:确保各框架的jar包在类路径下,设置web.xml以启动Spring的DispatcherServlet和Struts2的Filter。 2. 创建数据库表users:使用SQL Server 2008创建users表,包括用户ID、用户名、密码等字段。 3. ...

    mybatis与spring整合全部jar包.rar

    标题 "mybatis与spring整合全部jar包.rar" 描述的内容涉及到的是将MyBatis与Spring进行集成时所需的一系列依赖库。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,而Spring是一个全面的...

    hessian与spring整合的jar包

    4. **Spring Web模块**(spring-web-3.2.0.RELEASE.jar和spring-webmvc-3.2.0.RELEASE.jar):这些模块为构建Web应用程序提供了支持,包括HTTP多部分请求处理、servlet监听器、filter配置等。在整合Hessian时,可能...

Global site tag (gtag.js) - Google Analytics