Java 登陆拦截器

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>



你可能感兴趣的:(iframe,拦截器,登陆)