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