1.定义拦截器实现接口HttpServletRequest
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("进入登录拦截器");
//放行登录操作
String uri= request.getRequestURI();
if(uri.indexOf("login")>=0){
return true;
}
//获取session对象
HttpSession session = request.getSession();
//登录成功是的User
Object user = session.getAttribute("user");
if(user!=null){
return true;
}else{
request.getRequestDispatcher("/jsp/login.jsp").forward(request, response);;
return false;
}
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// TODO Auto-generated method stub
}
}
2.在SpringMvc.xml上配置拦截器
<!-- 配置登录拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.yh.interceptor.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
3.编写登录的controller方法
@Controller
public class LoginController {
@Autowired
private UserService userService;
@RequestMapping("/login")
public String loginController(TbUser user, HttpSession session,Model model){
//获取登录页面的User
TbUser userLogin = userService.findUserByName(user);
//将登录页面的User放入session中
if(userLogin!=null){
session.setAttribute("user", userLogin);
return "redirect:/item/all.action";
}else{
model.addAttribute("user", user);
return "/login";
}
}
//退出
@RequestMapping("/logout")
@ResponseBody
public void logoutController(HttpSession session){
session.invalidate();
}
}
//这里通过注解的方式将controller类交给Spring管理还有属性的注入以及页面的跳转
4.编写jsp即可
<form action="${pageContext.request.contextPath}/login" method="post">
用户名:<input type="text" name="username" value="${user.userName }"><br>
密码:<input type="password" name="address"><br>
<input type="submit" value="提交" >
</form>
注意在写拦截器时一定不能阻碍登录拦截器的进入