一、使用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>
分享到:
相关推荐
特别是在Java EE环境中,如何有效地整合Spring与Servlet、Filter等核心组件,对于构建高性能、高灵活性的应用系统至关重要。本文将深入探讨Spring管理Filter和Servlet的机制与实践步骤,帮助开发者更好地理解和运用...
提供的资源“Shiro和Spring整合完全可运行”应该是一个包含完整配置和示例代码的项目。通过这个实例,你可以了解如何设置 Realm,定义权限和角色,以及如何在控制器和视图层实现登录、权限控制等功能。通过实际运行...
以下是对"Mybatis与Spring整合创建Web项目"这一主题的详细说明: 一、Mybatis简介 Mybatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。Mybatis避免了几乎所有的JDBC代码和手动设置参数以及...
3. **定制Filter**:在Spring Cloud Gateway中,我们可以自定义WebFlux Filter,利用Spring Security提供的API进行认证和鉴权。这通常涉及到`@PreAuthorize`和`@Secured`等注解的使用,以控制对特定路由的访问权限。...
- **Web 集成**:在 Spring MVC 应用中,通过 Filter 方式整合 Shiro,处理请求过滤和权限控制。 - **配置文件**:通常在 Spring 的配置文件中声明 Shiro 的相关 Bean,如定义 SecurityManager 和 Realm。 3. **...
通过以上知识点,我们可以理解如何使用Spring整合Jetty来开发Web应用,从而实现更高效、更灵活的开发流程。实际项目中,开发者可以根据具体需求调整配置,如添加过滤器、监听器,或者配置更多的Servlet和Filter,以...
在本文中,我们将深入探讨Shiro与Spring整合的关键知识点,包括整合的目的、核心组件、配置过程以及实际应用。 **一、整合目的** Shiro是一款轻量级的安全框架,提供了认证、授权、会话管理和加密等核心功能。...
下面将详细介绍整合Struts2和Spring所需的关键知识点。 首先,我们需要理解整合的目的。Struts2提供了强大的Action层处理,而Spring则擅长于业务逻辑管理和数据访问。整合这两者,我们可以将Struts2的动作控制与...
最后,应用的启动入口通常是一个Servlet或Filter,例如Spring的ContextLoaderListener或DelegatingFilterProxy,它们负责初始化Spring容器,并在Web应用启动时加载配置。 总结起来,整合Spring、SpringMVC和MyBatis...
- Filter配置,将Shiro的过滤器链加入到Spring MVC的Filter链中,实现请求的拦截和处理。 通过学习和实践"spring-shiro整合",开发者不仅可以掌握Web安全框架的使用,还能深入理解Spring MVC和MyBatis的集成,提升...
以下是一个简单的整合Struts 2和Spring的步骤详解: **1. 创建Web项目** 首先,你需要创建一个新的Web项目,例如名为`Struts2Spring1.1`。项目结构应包含标准的Web应用目录,如`WEB-INF`,`src/main/java`,`src/...
**Spring MVC 整合 Shiro 知识点详解** Spring MVC 是一款强大的MVC框架,用于构建企业级的Web应用程序,而Apache Shiro则是一款安全框架,负责处理身份验证、授权(权限控制)、会话管理和安全性相关的其他功能。...
Spring以其强大的依赖注入(DI)和面向切面编程(AOP)能力,而Struts2则以其优秀的MVC设计模式著称,两者整合可以构建出高效、可维护的Web应用。下面将详细介绍Spring与Struts2整合的相关知识点。 **一、整合背景*...
在本文中,我们将深入探讨如何将Spring Security与CAS(Central Authentication Service)整合,以便实现单点登录(Single Sign-On, SSO)功能。首先,我们需要了解Spring Security和CAS的基本概念。 **Spring ...
- 集成Hibernate:通过Spring的SessionFactoryBean配置,将Hibernate与Spring整合,使得数据库操作可以通过Spring的依赖注入来完成。 - 配置Struts2:在struts.xml中定义Action,通过Spring插件实现Action的依赖...
1. 配置项目结构:确保各框架的jar包在类路径下,设置web.xml以启动Spring的DispatcherServlet和Struts2的Filter。 2. 创建数据库表users:使用SQL Server 2008创建users表,包括用户ID、用户名、密码等字段。 3. ...
标题 "mybatis与spring整合全部jar包.rar" 描述的内容涉及到的是将MyBatis与Spring进行集成时所需的一系列依赖库。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,而Spring是一个全面的...
4. **Spring Web模块**(spring-web-3.2.0.RELEASE.jar和spring-webmvc-3.2.0.RELEASE.jar):这些模块为构建Web应用程序提供了支持,包括HTTP多部分请求处理、servlet监听器、filter配置等。在整合Hessian时,可能...