ログインケース(インターセプター)

分析する必要が
ありますログインインターフェイスlogin.jsp、ログインが成功した場合はmain.jspにジャンプし、ログインが失敗した場合はログインページをリダイレクトします。
さらに、ログインしていない場合はmain.jspにアクセスできず、ログイン直後にアクセス可能

特定の方法:

  • 最初にlogin.jspがあります
  • ユーザー(ID、ユーザー名、パスワード)、マッパー、サービスなどは言及されません(Implは、ユーザー名とパスワードに基づいてユーザーにクエリを実行する方法を提供します)
  • ログインしていないときにmain.jspに直接アクセスできないようにするには、JSPのみがサーブレットを介してJSPリクエストを操作できるため、すべてのリクエストをパスさせるRESTfulスタイルのコントローラーメソッドを記述します(リクエストの競合について心配する必要はありません、springmvc最も正確な方法を選択します)
  • インターセプターがリクエストをインターセプトしたら、jsp以外のすべてのリクエスト(ログイン、req.geturiの判断など)を手放すと、残りはすべてjspリクエストになります。セッションに値がある場合は、trueを返します。値がない場合は繰り返されます。Directionalreturnfalse
  • ログイン要求の場合、成功するとmainをリダイレクトし、失敗するとログインをリダイレクトします。

login.jsp

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

コントローラ

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

インターセプター

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