`
c_fanatic
  • 浏览: 64146 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java中应用Filter对权限和Session控制《转》

    博客分类:
  • Java
阅读更多
package com.drp.util.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()); //截取到当前文件名用于比较

HttpSession session = request.getSession(false);

if (!"/login.jsp".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里添加: (请注意,过滤是在serlvet规范2.3版中初次引入的。因此,web.xml文件必须使用DTD的2.3以上版本。)



<filter>
<filter-name>AuthFilter</filter-name>
<filter-class>com.drp.util.filter.AuthFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>AuthFilter</filter-name>
<url-pattern>*.jsp</url-pattern>//表示对所有jsp文件有效
</filter-mapping>



这样用户没有登录的情况下就会转到登录页面
分享到:
评论

相关推荐

    Java EE常用框架.xmind

    5.PermissionsAuthorizationFilter对item:query 和从realm中获取权限进行对比,如果“item:query”在realm返回的权限列表中,授权通过。 6. realm中获取认证的信息,查询出该用户对应的权限,封装到...

    J2EE应用开发详解

    第1章 Java Web应用开发简介 1 1.1 Java EE应用概述 1 1.2 Java EE概念 1 1.2.1 Java EE多层模型 1 1.2.2 Java EE体系结构 2 1.3 Java EE的核心API与组件 4 1.4 Web服务器和应用服务器 13 1.5 小结 16 第2章 建立...

    Java学习指南(7) 网站中级篇 JavaEE / Filter

    Filter 过滤器 | Session 会话 | 用户权限 | 伪静态 | 网站部署 ... 二、主要内容  开发环境仍然使用 MyEclipse2016 + tomcat8 * 文件的自定义下载 * 伪静态文件,尤其是伪静态JS的应用 * 会话的概念及...

    java后台框架源码

    action:存放struts2控制类的包 dao:数据库访问封装 enm:系统中使用到的常量包,这里不是用的常量,用的是枚举替代常量 entity:hibernate对应的orm与数据库表一一对应的实体类 filter:Log4jFormatFilter(格式化...

    chapter11_4.rar

    过滤器filter是servlet技术中心最实用的技术。过滤器是处于客户端与服务器...监听器通常用于监听web应用中对象的创建、销毁等动作的发生,同时对监听的情况作出相应的处理,最常用于统计网站的在线人数、访问量等信息。

    How Tomcat Works: A Guide to Developing Your Own Java Servlet Container

    8.2 java本身的loader 52 8.3 Loader接口 53 8.4 Reloader接口 54 8.5 WebappLoader类 54 8.5.1 创建类载入器 55 8.5.2 设置repository 55 8.5.3 设置类路径 56 8.5.4 设置访问权限 56 8.5.5 开启新线程执行类的重新...

    网页教程《跟姐姐学JSP》

    7.2. 用filter控制用户访问权限 7.3. filter所谓的特性 7.3.1. 请求映射 7.3.2. 过滤链 7.4. filter的详细配置 8. 配置listener监听器 8.1. 使用HttpSessionListener 8.2. 使用HttpSessionBindingListener 9. ...

    Spring Security 中文教程.pdf

    21. Java认证和授权服务(JAAS)供应器 21.1. 概述 21.2. 配置 21.2.1. JAAS CallbackHandler 21.2.2. JAAS AuthorityGranter 22. CAS认证 22.1. 概述 22.2. CAS是如何工作的 22.3. 配置CAS客户端 ...

    Spring Security-3.0.1中文官方文档(翻译版)

    21. Java 认证和授权服务(JAAS)供应器 21.1. 概述 21.2. 配置 21.2.1. JAAS CallbackHandler 21.2.2. JAAS AuthorityGranter 22. CAS 认证 22.1. 概述 22.2. CAS 是如何工作的 22.3. 配置CAS ...

    asp.net知识库

    Coalesys PanelBar + R.a.d Treeview +Xml 构建的Asp.net 菜单和权限管理模块 突破屏蔽限制,自己的网站使劲弹新IE窗口 对页面SCROLLING的CSS不能生效原因 .Net 中IE使用WinForm控件的使用心得。 动态加载用户控件的...

    Tomcat监控工具Probe,支持tomcat6-7-8-9.zip

    Applecations:tomcat上面正在跑的应用,可以看到每个应用的状态、请求数、session数等,点进去可以查看详细信息 Data Sources:tomcat的数据源,我这里没有配置数据源 Deployment:代码部署,选择一个war并...

    毕业设计:医院在线预约挂号管理系统

    该系统使用JavaEE景点三层架构来...权限模块需要使用RBAC权限模式设计数据表,必要时要用SpringMVC框架的Filter过滤器来过滤权限,为了保证菜单的加载速度,将菜单写入Session. 内含项目完整代码,数据库及配套报告。

    SpringSecurity 3.0.1.RELEASE.CHM

    20. Java认证和授权服务(JAAS)供应器 20.1. 概述 20.2. 配置 20.2.1. JAAS CallbackHandler 20.2.2. JAAS AuthorityGranter 21. CAS认证 21.1. 概述 21.2. CAS是如何工作的 21.3. 配置CAS客户端 22. X....

    spring security 参考手册中文版

    5.3 Java配置和表单登录 34 5.4授权请求 35 5.5处理注销 36 5.5.1 LogoutHandler 37 5.5.2 LogoutSuccessHandler 37 5.5.3更多注销相关参考 38 5.6认证 38 5.6.1内存认证 38 5.6.2 JDBC认证 39 5.6.3 LDAP认证 39 ...

    how-tomcat-works

    8.2 java本身的loader 52 8.3 Loader接口 53 8.4 Reloader接口 54 8.5 WebappLoader类 54 8.5.1 创建类载入器 55 8.5.2 设置repository 55 8.5.3 设置类路径 56 8.5.4 设置访问权限 56 8.5.5 开启新线程执行类的重新...

    超市管理系统

    (12)访问权限控制: 1.增加过滤器. 登录页面可直接访问. 如果访问不是登录地址,则根据session判断是否登录. 如果已经登录,核心页面直接显示; 如果没有登录,跳转到登录页面; 如果已经登录,访问登录页面,...

    38集19年Shiro视频教程Springboot教程整合Shiro 权限教程微服务教程

    38集19年Shiro视频教程Springboot教程整合Shiro 权限教程微服务教程

    MyBlog:练手工程,搭建高可用后端架构

    做成前后端分离,nginx动静分离,全站https后端maven构建,依赖lombok插件,springboot2.x开发服务引入activemq,dubbo,redis权限框架使用shiro,重写使用到的filter,避免返回跳转页面,实现rest服务。使用redis...

Global site tag (gtag.js) - Google Analytics