处理流程
-
有一个登录页面,需要写一个Controller访问登录页面
-
登录页面有一提交表单的动作。需要在Controller中处理。 a)判断用户名密码是否正确(在控制台打印) b)如果正确,向session中写入用户信息(写入用户名username) c)跳转到商品列表
-
拦截器。 a)拦截用户请求,判断用户是否登录(登录请求不能拦截) b)如果用户已经登录。放行 c)如果用户未登录,跳转到登录页面。
Insert title here
用户名:
密码:
用户登陆Controller
@Controller
@RequestMapping("user")
public class UserController {
/**
* 跳转到登录页面
*
* @return
*/
@RequestMapping("toLogin")
public String toLogin() {
return "login";
}
/**
* 用户登录
*
* @param username
* @param password
* @param session
* @return
*/
@RequestMapping("login")
public String login(String username, String password, HttpSession session) {
// 校验用户登录
System.out.println(username);
System.out.println(password);
// 把用户名放到session中
session.setAttribute("username", username);
return "redirect:/item/itemList.action";
}
}
编写拦截器
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
// 从request中获取session
HttpSession session = request.getSession();
// 从session中获取username
Object username = session.getAttribute("username");
// 判断username是否为null
if (username != null) {
// 如果不为空则放行
return true;
} else {
// 如果为空则跳转到登录页面
response.sendRedirect(request.getContextPath() + "/user/toLogin.action");
}
return false;
}
配置拦截器
只拦截商品的url,所以需要修改ItemController,让所有的请求都必须以item开头,如下图: 在springmvc.xml配置拦截器