session会话管理,与过滤器使用,访问控制
1 用户登录,是否注册用户,在登录处理页面进行用户验证,创建session保存用户名和密码
2否,进入用户注册页面
3是,系统保存该用户的登录信息
4进入要访问的页面
5用户直接访问某个页面,
6系统是否保存了该用户的登录信息,从session中提取用户信息,如果用户信息存在,则可以进行操作,
7否,进入用户登录页面
8是,显示该页面内容。
登录处理页面
if (dao.hasUser(name)) {
if (dao.isLegalUser(name, password)) {
request.setAttribute("name", name);
HttpSession session = request.getSession(true);
session.setAttribute("name", name);
//设置seseion过期时间,默认为秒
session.setMaxInactiveInterval(10*60);
System.out.println("sessionid:"+session.getId());
request.getRequestDispatcher("/jsp/bolg2.jsp").forward(request, response);
} else {
request.setAttribute("msg", "密码错误,请重新输入!");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
} else {
// 用户不存在
response.sendRedirect("index.jsp");
}
}
过滤器
//sesssion对象提取登录信息,用户名
String name=(String) req.getSession().getAttribute("name");
// if(!"/isud/src/main/webapp/login.jsp".equals(targetURL)){
//判断当前页面是否是的登陆页面,如果是就不做session的判断,防止死循环
if(name==null){
//如果session为空表示用户没有登陆就重定向到login.jsp页面
System.out.println("没有登陆,请先登陆!");
System.out.println("request.getContextPath()=" + req.getContextPath());
res.sendRedirect(req.getContextPath()+"/login.jsp");
}else {
//继续向下执行
chain.doFilter(request, response);
}