登录案例 (拦截器)

需析:
一个登录界面login.jsp,如果登录成功,跳转到main.jsp,如果登录不成功,重定向登录页面
另外,main.jsp在未登录时不能进行访问,登录后可以直接访问

具体做法:

  • 首先有一个login.jsp
  • user(id,username,password)、mapper、service等就不说了(Impl提供根据username和password查询user的方法)
  • 为了main.jsp未登录时不能直接访问,只有jsp经过servlet才能对jsp请求进行操作,所以写一个restful风格的controller方法,使所有请求都通过(不用担心请求冲突的问题,springmvc会选择最精确的方法)
  • 在拦截器对请求进行拦截时,放过所有非jsp请求(比如login,通过判断req.geturi),然后剩下的就都是jsp请求,如果session中有值,就return true,没值就重定向 return false
  • 对于login请求如果成功就重定向main,不成功就重定向登录

login.jsp

<form action="login" method="post">
用户名:<input type="text" name="username">
密码:<input type="password" name="password">
<input type="submit" value="登录">

controller

@Controller
public class LoginController {
    
    
	@Resource
	private LoginService loginServiceImpl;
	//restful风格+视图解析器
	@RequestMapping("{page}")
	public String demo(@PathVariable("page")String page) {
    
    
		return page;
	}
	
	@RequestMapping("login")
	public String login(User user,HttpSession session){
    
    
		User u = loginServiceImpl.selLogin(user);
		if(u!=null){
    
    
			//跳转到main.jsp
			session.setAttribute("user", u);
			return "main";
		}else{
    
    
			return "redirect:/login.jsp";
		}
	}
	
	
}

interceptor

public class LoginInterceptor implements HandlerInterceptor{
    
    
	
	@Override
	public boolean preHandle(HttpServletRequest req, HttpServletResponse res, Object arg2) throws Exception {
    
    
		// TODO Auto-generated method stub
		
		
	String uri = req.getRequestURI();
	if(uri.equals("/springmvc/login")){
    
    
		return true;
	}	
	else{
    
    
		Object object = req.getSession().getAttribute("user");
		if(object!=null){
    
    
			return true;
		}
		res.sendRedirect("/springmvc/login.jsp");
		return false;
	}
	}
	
	
	//jsp之前
	@Override
	public void postHandle(HttpServletRequest req, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
			throws Exception {
    
    
	}

	@Override
	public void afterCompletion(HttpServletRequest req, HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
    
    
		
	}

}

猜你喜欢

转载自blog.csdn.net/WA_MC/article/details/113250499