文档章节

Java 登陆拦截器

Loooooou
 Loooooou
发布于 2015/11/10 17:14
字数 298
阅读 41
收藏 0

Step 1:写一个权限过滤Filter类,实现Filter接口

public class LoginFilter implements Filter {
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub

	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		// 获得在下面代码中要用的request,response,session对象
		HttpServletRequest servletRequest = (HttpServletRequest) request;
		HttpServletResponse servletResponse = (HttpServletResponse) response;
		HttpSession session = servletRequest.getSession();

		// 获得用户请求的URI
		String path = servletRequest.getRequestURI();
		// System.out.println(path);

		UsersEntity user = (UsersEntity) session.getAttribute("UserEntity");

		/*
		 * 创建类Constants.java,里面写的是无需过滤的页面 for (int i = 0; i <
		 * Constants.NoFilter_Pages.length; i++) {
		 * 
		 * if (path.indexOf(Constants.NoFilter_Pages[i]) > -1) {
		 * chain.doFilter(servletRequest, servletResponse); return; } }
		 */
		// 登陆页面无需过滤(静态内容:js css)
		if (path.indexOf("/login") > -1 || path.equals("/")) {
			chain.doFilter(servletRequest, servletResponse);
			return;
		}

		// 判断如果没有取到员工信息,就跳转到登陆页面
		if (user == null) {
			// 跳转到登陆页面
			// servletResponse.sendRedirect("/login.html");
			//防止response乱码
			servletResponse.setCharacterEncoding("utf-8");
			servletResponse.setHeader("Content-type", "text/html;charset=UTF-8");
			java.io.PrintWriter out = response.getWriter();
			out.println("<html>");
			out.println("<script>");

			String msg = "您所登录的用户已过期,请重新登录!";
			out.println("alert('" + msg + "');");
			out.println("window.open ('/login.html','_top')");
			out.println("</script>");
			out.println("</html>");
		} else {
			// 已经登陆,继续此次请求
			chain.doFilter(request, response);
		}

	}

	@Override
	public void destroy() {
		// TODO Auto-generated method stub

	}

}

Step2:然后在web.xml里配置需要登陆权限验证的JSP文件

<!-- 配置登陆过滤器 -->
	<filter>
		<filter-name>login</filter-name>
		<filter-class>com.demo.interceptor.LoginFilter</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>login</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>



© 著作权归作者所有

Loooooou
粉丝 0
博文 3
码字总数 1596
作品 0
无锡
私信 提问
Java SSH框架系列:用户登录模块的设计与实现思路

时间 2014-01-19 16:14:54 CSDN博客原文 http://blog.csdn.net/nupt123456789/article/details/18504615 1.简介 用户登录模块,指的是根据用户输入的用户名和密码,对用户的身份进行验证等。...

thinkyoung
2014/12/17
0
0
JEE6 CDI(Contexts and Dependency Injection)介绍

Java EE 6已经发布了很久,不过国内使用的人依旧很少,资料也很缺乏。我自己本人很看好JEE6,觉得 JSR299- Contexts and Dependency Injection 很好很强大。CDI 也就是上下文依赖注入,概念和...

ForEleven
2012/08/15
1K
3
SpringBoot自定义拦截器实现IP白名单功能

SpringBoot自定义拦截器实现IP白名单功能 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/8993331.html   首先,相关功能已经上线了,且先让我先祷告一番:     阿门~ (--)   ...

€5è¬þxãÍ
2018/05/12
0
0
过滤器(filter)与拦截器(Interceptor ) 差异性比较

1.过滤器 Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码、做一些业务逻辑判断等。其工作原理是,只要你在web.xml文件配置好要拦截的客...

开源小菜鸟2333
2017/10/22
56
0
web项目 拦截登陆不跳转,只弹出登录框

java web项目, 我的每一个页面都包含了登陆模块,但是默认是隐藏的(display=none) 现在做权限控制,加入拦截器拦截到需要登陆的请求, 做到不跳转页面,也不刷新页面,只是将登陆模块的弹...

forwy
2017/01/03
1K
4

没有更多内容

加载失败,请刷新页面

加载更多

新架构、新角色:TiDB Community Upgrade!

作者:Jian Zhang 经过几年的发展,TiDB 社区已经逐渐成熟,但是随着社区的发展壮大,我们逐渐感受到了现在社区架构上的一些不足。经过一系列的思考和总结,我们决定升级和调整目前社区组织架...

TiDB
31分钟前
6
0
jquery qrcode库提示not function

jquery qrcode 这个库能用,但是必须在初始化的时候,官方给的使用方法是 引入qrcode的库文件后,在js中写以下 html <div id="qrcode"></div> js jQuery('#qrcode').qrcode({ render: ......

shikamaru
36分钟前
14
0
MySQL数据库去重的简单方案

利用 distinct 对需要处理的字段进行去重 select distinct 字段名 from 表名 利用group by select * from 表名 group by 字段名 利用having select * from 表名 group by 字段名 having 字段...

FeanLau
38分钟前
9
0
字符串转换成整数

实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该...

蔚蓝_晴天
49分钟前
8
0
Eureka客户端续约及服务端过期租约清理源码解析

在之前的文章:EurekaClient自动装配及启动流程解析中,我们提到了在构造DiscoveryClient时除了包含注册流程之外,还调度了一个心跳线程: scheduler.schedule( new Ti...

Java学习录
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部