在web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面,而重定向到登陆界面的功能。
项目是用springMVC+spring+hibernate实现 (和这个没有多大关系)
第一步:
首先写一个登录权限过滤类--LoginFilter类实现Filter接口
1 package com.agen.util; 2 3 import java.io.IOException; 4 5 import javax.servlet.Filter; 6 import javax.servlet.FilterChain; 7 import javax.servlet.FilterConfig; 8 import javax.servlet.ServletException; 9 import javax.servlet.ServletRequest; 10 import javax.servlet.ServletResponse; 11 import javax.servlet.http.HttpServletRequest; 12 import javax.servlet.http.HttpServletResponse; 13 import javax.servlet.http.HttpSession; 14 15 import org.springframework.util.Assert; 16 import org.springframework.util.StringUtils; 17 18 import com.agen.entity.User; 19 20 /** 21 * 首先写一个登录权限过滤类--LoginFilter类实现Filter接口 22 * @author 申旭栋 23 *下面这三个方法是必须要实现的 24 */ 25 public class LoginFilter implements Filter { 26 27 @Override 28 public void init(FilterConfig filterConfig) throws ServletException { 29 // TODO Auto-generated method stub 30 } 31 32 33 @Override 34 public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException { 35 // 获得在下面代码中要用的request,response,session对象 36 HttpServletRequest servletRequest = (HttpServletRequest) request; 37 HttpServletResponse servletResponse = (HttpServletResponse) response; 38 HttpSession session = servletRequest.getSession(); 39 40 // 获得用户请求的URI 41 String path = servletRequest.getRequestURI(); 42 43 // 从session里取用户 44 User user = (User) session.getAttribute("user"); 45 46 // 登陆页面无需过滤 47 if("/biologyInfo/".equals(path) || "/biologyInfo/login/login1.htmls".equals(path)) { 48 chain.doFilter(servletRequest, servletResponse); 49 return; 50 } 51 52 // 判断如果没有取到用户信息,说明这个请求是没有登录就在请求 就跳转到登陆页面 53 if (user == null) { 54 // 跳转到登陆页面 55 servletResponse.sendRedirect("/biologyInfo/login/login1.htmls"); 56 } else { 57 // 已经登陆,继续此次请求 58 chain.doFilter(request, response); 59 } 60 61 } 62 63 @Override 64 public void destroy() { 65 // TODO Auto-generated method stub 66 } 67 68 }