Cas de connexion (intercepteur)

Besoin d'analyser:
une interface de connexion login.jsp, si la connexion est réussie, passez à main.jsp, si la connexion échoue, redirigez la page de connexion.
De plus, main.jsp n'est pas accessible lorsqu'il n'est pas connecté et peut être accessible directement après la connexion

méthodes spécifiques:

  • Il y a d'abord un login.jsp
  • L'utilisateur (identifiant, nom d'utilisateur, mot de passe), le mappeur, le service, etc. ne seront pas mentionnés (Impl fournit une méthode pour interroger l'utilisateur en fonction du nom d'utilisateur et du mot de passe)
  • Pour que main.jsp ne soit pas accessible directement lorsqu'il n'est pas connecté, seule JSP peut fonctionner sur les requêtes JSP via servlet, alors écrivez une méthode de contrôleur de style reposant pour faire passer toutes les requêtes (ne vous inquiétez pas des conflits de requêtes, springmvc choisira la méthode la plus précise)
  • Lorsque l'intercepteur intercepte la requête, abandonnez toutes les requêtes non-jsp (telles que login, en jugeant req.geturi), puis les autres sont toutes des requêtes jsp. S'il y a une valeur dans la session, renvoyez true, et si il n'y a pas de valeur, elle sera répétée. Retour directionnel faux
  • Pour la demande de connexion, si elle réussit, elle redirige main, et si elle échoue, elle redirige la connexion.

login.jsp

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

manette

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

intercepteur

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

}

Je suppose que tu aimes

Origine blog.csdn.net/WA_MC/article/details/113250499
conseillé
Classement