Caso de inicio de sesión (interceptor)

Es necesario analizar:
una interfaz de inicio de sesión login.jsp, si el inicio de sesión es exitoso, salte a main.jsp, si el inicio de sesión no es exitoso, redirija la página de inicio de sesión.
Además, no se puede acceder a main.jsp cuando no se ha iniciado sesión, y puede ser accedido directamente después de iniciar sesión

métodos específicos:

  • Primero hay un login.jsp
  • No se mencionará al usuario (id, nombre de usuario, contraseña), asignador, servicio, etc. (Impl proporciona un método para consultar al usuario en función del nombre de usuario y la contraseña)
  • Para que no se pueda acceder directamente a main.jsp cuando no está conectado, solo JSP puede operar en las solicitudes JSP a través del servlet, así que escriba un método de controlador de estilo relajante para hacer que todas las solicitudes pasen (no se preocupe por los conflictos de solicitudes, springmvc elegirá el método más preciso)
  • Cuando el interceptor intercepta la solicitud, suelte todas las solicitudes que no sean jsp (como iniciar sesión, juzgando req.geturi), y luego el resto son todas las solicitudes jsp. Si hay un valor en la sesión, devuelva verdadero, y si no hay valor, se repetirá. Retorno direccional falso
  • Para la solicitud de inicio de sesión, si tiene éxito, redirige a main, y si falla, redirige el inicio de sesión.

login.jsp

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

controlador

@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";
		}
	}
	
	
}

interceptador

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 {
    
    
		
	}

}

Supongo que te gusta

Origin blog.csdn.net/WA_MC/article/details/113250499
Recomendado
Clasificación