看下面的代码一起来学习Java中应用Filter对权限和Session控制
在请求/app时,request.getRequestURI()
在tomcat下取得是 /app/
在websphere下取得是 /app,差一个/
package com.urt.module.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 javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class AuthFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { /** * 1,doFilter方法的第一个参数为ServletRequest对象。此对象给过滤器提供了对进入的信息(包括 * * 表单数据、cookie和HTTP请求头)的完全访问。第二个参数为ServletResponse,通常在简单的过 * * 滤器中忽略此参数。最后一个参数为FilterChain,此参数用来调用servlet或JSP页。 */ HttpServletRequest request = (HttpServletRequest) servletRequest; /** * 如果处理HTTP请求,并且需要访问诸如getHeader或getCookies等在ServletRequest中 * 无法得到的方法,就要把此request对象构造成HttpServletRequest */ HttpServletResponse response = (HttpServletResponse) servletResponse; String currentURL = request.getRequestURI(); // 取得根目录所对应的绝对路径: //String targetURL = currentURL.substring(currentURL.indexOf("/", 1), currentURL.length()); // 截取到当前文件名用于比较 String targetURL = currentURL.substring(request.getContextPath().length(), currentURL.length()); // 截取到当前文件名用于比较 HttpSession session = request.getSession(false); if (!"/login.jsp".equals(targetURL) && !"/servlet/LoginServlet".equals(targetURL)) { // 判断当前页是否是重定向以后的登录页面页面,如果是就不做session的判断,防止出现死循环 if (session == null || session.getAttribute("user") == null) { // *用户登录以后需手动添加session System.out.println("request.getContextPath()=" + request.getContextPath()); response.sendRedirect(request.getContextPath() + "/login.jsp"); // 如果session为空表示用户没有登录就重定向到login.jsp页面 return; } } // 加入filter链继续向下执行 filterChain.doFilter(request, response); /** * 调用FilterChain对象的doFilter方法。Filter接口的doFilter方法取一个FilterChain对象作 为它 * 的一个参数。在调用此对象的doFilter方法时,激活下一个相关的过滤器。如果没有另 * 一个过滤器与servlet或JSP页面关联,则servlet或JSP页面被激活。 */ } public void init(FilterConfig filterConfig) throws ServletException { } }
然后在配置文件web.xml里添加
<filter> <filter-name>AuthFilter</filter-name> <filter-class>com.urt.module.filter.AuthFilter</filter-class> </filter> <filter-mapping> <filter-name>AuthFilter</filter-name> <url-pattern>*.jsp</url-pattern> <url-pattern>/servlet/*</url-pattern> </filter-mapping>
这样用户没有登录的情况下就会转到登录页面
ajax Session失效如何跳转到登录页面
http://happyqing.iteye.com/blog/1976873
通用的用户登录过滤器(SessionFilter)
http://www.cnblogs.com/hemingwang0902/archive/2012/01/09/session-filter.html
相关推荐
Java权限控制插件是软件开发中的一个重要组成部分,它主要用于管理和限制不同用户或角色对系统资源的访问。在本文中,我们将深入探讨这个基于Java编写的权限控制插件,特别是其核心概念、设计模式以及实现机制。 ...
Java 后台权限控制是构建安全的Web应用中不可或缺的一部分,它确保了用户只能访问他们被授权的操作和数据。在Java开发中,Apache Shiro是一个非常流行的安全框架,用于实现身份验证、授权(权限控制)、会话管理和...
总结,`Filter`在Java Web应用程序中扮演着重要的角色,尤其是在权限控制方面。通过创建和配置过滤器,可以实现对特定资源的访问限制,确保只有授权用户才能访问敏感信息。在实际应用中,还需要考虑其他安全措施,如...
当用户登录时,将用户信息存储在Session中,并返回Session ID。在后台请求中,通过设置Cookie来保持Session。 ```java // 假设在Servlet或Filter中处理登录 HttpSession session = request.getSession(); session....
这个Filter首先检查用户的Session是否存在,并且Session中是否有特定的键(`checkSessionKey`)。如果存在则放行,否则重定向到登录页面。 #### 四、配置Filter Filter需要在web.xml文件中进行配置,配置主要包括...
本话题主要关注如何使用Java Filter来限制用户的浏览权限,确保只有经过身份验证和授权的用户才能访问特定的资源。这在构建安全的Web应用程序时至关重要。 首先,我们需要了解Java Filter的基本概念。Filter是...
6. **会话管理**: 考虑到性能和用户体验,我们通常将用户的角色信息保存在Session中,避免每次请求都去查询数据库。 7. **异常处理**: 设置适当的异常处理机制,以处理权限验证失败等情况,确保系统的健壮性。 ...
这里的“java权限控制”主要指的是在Web应用程序中实施的安全策略,以保护敏感数据和操作。过滤器(Filter)是Java Servlet API提供的一种机制,常用于实现这种权限控制。下面将详细探讨这一主题。 1. **Java过滤器...
总的来说,Filter在Java Web开发中扮演着至关重要的角色,它提供了对HTTP请求和响应进行拦截、修改的能力,极大地增强了应用的功能性和灵活性。通过理解并熟练运用Filter,开发者可以更好地设计和实现复杂的业务需求...
总结来说,实现OSGi环境下的Session共享涉及了对OSGi、Karaf、Spring MVC以及Filter机制的理解和应用。通过编写并配置Filter,我们可以跨Bundle共享Session,从而使多个服务能够协同工作,保持用户状态的一致性。...
在 Web 应用程序中,身份认证和访问控制是非常重要的安全机制,本文将介绍如何使用 Struts2 中的 Filter 和 Session 实现访问控制和身份认证。 身份认证和访问控制的必要性 在 Web 应用程序中,身份认证和访问控制...
在实际开发中,我们经常使用一些开源工具库提供的`Filter`,如Spring Security的`Filter`用于权限管理,或者使用Google的Guava库中的`Filter`进行缓存控制。 通过上述介绍,我们可以看出`Filter`在Java Web开发中...
**JSP权限管理系统filter**是基于Java和JSP技术实现的一种常见的Web应用程序安全控制机制,主要目的是为了实现用户访问控制,防止未授权的用户访问敏感资源。在这个系统中,Filter(过滤器)扮演了关键角色,它在...
在Java Web开发中,Filter是Servlet API的一部分,允许开发者在请求到达目标Servlet之前或之后拦截和处理请求。通过实现`javax.servlet.Filter`接口并重写`doFilter()`方法,我们可以对请求和响应进行预处理和后处理...
总之,`Filter`是Java Web开发中的一个重要组件,它允许我们在不修改现有Servlet代码的情况下,灵活地增强和扩展应用的功能。在实际项目中,通过熟练掌握Filter的使用,我们可以实现高效且易于维护的安全控制和功能...
在Java编程领域,"Java登录注册列表小项目和Filter测试代码"是一个常见的实践项目,它涵盖了Web应用程序开发中的基础功能,如用户身份验证、权限控制以及数据操作。在这个项目中,开发者通常会创建一个简单的用户...
在Java Web开发中,过滤器(Filter)是实现动态网页应用程序功能的重要组件之一。它能够对HTTP请求和响应进行预处理和后处理,为实现特定的功能提供了强大的支持。本话题将详细探讨如何利用Filter来限制用户浏览特定...
在Java EE的Web开发中,Filter技术是一种非常重要的组件,它被广泛应用于处理请求和响应信息。Filter(过滤器)位于客户端请求和服务器响应之间,可以对数据进行动态拦截和修改,是Java EE技术中不可或缺的一部分。 ...
Filter在Java Web应用程序中扮演着中间件的角色,它可以对请求进行预处理,也可以对响应进行后处理。例如,我们可以通过Filter实现权限控制、日志记录、数据转换、GZIP压缩等多种功能。以下是对Filter生命周期和核心...
在实际应用中,Filter常用于实现权限拦截,防止未授权的用户访问特定资源。本教程将详细解释如何使用Servlet Filter来实现权限拦截。 ### 1. Filter的基本概念 Filter是Servlet API的一部分,定义在`javax.servlet...