自动登录
来源:互联网 发布:win7办公软件下载 编辑:程序博客网 时间:2024/05/01 11:46
用户登录,提交给loginServlet
<form action="${pageContext.request.contextPath }/servlet/LoginServlet?method=login" method="post">
记住用户名和两周内自动登录怎么写?
<tr><td colspan="2" style="text-align:center"><input type="checkbox" name="checkbox" value="checkbox" />记住用户名 <input type="checkbox" name="autologin" value="auto" /> 两周内自动登录</td></tr>
LoginServlet处理提交的数据
public class LoginServlet extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); if (username != null && password != null) { UserService service = new UserServiceImpl(); try { // A2 传入用户名和密码实现,找到对应user User user = service.login(username, password); // A4 如果用户点了自动登录,用Md5加密,保存到cookie,用户信息保存到session String autologin = request.getParameter("autologin"); if (autologin != null) { String md5 = MD5Utils.getMD5(user.getPassword()); Cookie cookie = new Cookie("logininfo", user.getUsername() + "&" + md5); cookie.setPath("/"); cookie.setMaxAge(60 * 60 * 24 * 14);//2周 response.addCookie(cookie); System.out.println("cookie logininfo send" + user.getUsername() + "&" + md5); } // cookie属性为logininfo, session属性为user request.getSession().setAttribute("user", user); // A6 如果该用户是管理员,则这里应该跳转到管理员的后台管理界面 if ("admin".equals(user.getRole())) { // 保存在Session内 response.getWriter().println("登录成功,即将跳转到后台管理界面"); response.setHeader("refresh", "2;url="+ request.getContextPath() + "/admin/login/home.jsp"); } else { // 否则跳转到主界面 response.getWriter().println("登录成功,即将跳转到主页"); response.setHeader("refresh", "2;url="+ request.getContextPath() + "/index.jsp"); } } catch (Exception e) { String eString = e.getMessage(); // 显示错误信息 request.setAttribute("user_login_msg", eString); request.getRequestDispatcher("/login.jsp").forward(request,response); } } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}
service和Dao层查找数据
@Override public User findUserusername(String username, String password) { QueryRunner queryRunner = new QueryRunner(C3P0DBUtils.getCpds()); User user = null; try { user = queryRunner.query("select * from user where username= ? and password = ?", new BeanHandler<User>(User.class), username,password ); } catch (SQLException e) { e.printStackTrace(); } System.out.println("findUserusername"+user); return user; }
全局过滤器,用户访问登录界面的时候查看ssession,当用户登录成功之后,把下次自动登录需要的信息(用户名和密码),保存在cookie里,给浏览器。浏览器下次访问的时候,会把cookie(里面包含用户名和密码),带到服务器。服务器经过验证如果ok就直接登录
public class AutoLoginFilter implements Filter{ @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {// A7 遍历cookie 看看是否有携带自动登录的信息 HttpServletRequest req = (HttpServletRequest) request; HttpSession session = req.getSession(false); if (session != null) { if (session.getAttribute("user") != null) { //拿到jsp String requestURI = req.getRequestURI(); System.out.println("requestURI=" + requestURI); int lastIndexOf = requestURI.lastIndexOf("/"); String substring = requestURI.substring(lastIndexOf + 1); System.out.println("substring=" + substring); if (substring.equals("login.jsp")) {//如果一开始就是login.jsp自动转发到主页 req.getRequestDispatcher("/index.jsp").forward(request, response); } } } else { //session中没有的话,到cookie中找 Cookie[] cookies = req.getCookies(); if (cookies != null) {// cookie不为空 for (int i = 0; i < cookies.length; i++) { Cookie cookie = cookies[i]; if (cookie.getName().equals("logininfo")) { // 拿到cookie并切割 String logininfo = cookie.getValue(); String[] split = logininfo.split("&"); String username = split[0]; String password_md5 = split[1]; // hashcode // 自动登录 UserService service = new UserServiceImpl(); try { // A8 cookie存在的话用md5加密,并把获得的user信息放入 User user = service.loginByMd5(username,password_md5); if (user != null) {//cookie里面存在用户信息,则保存到session req.getSession().setAttribute("user", user); System.out.println("auto login success!!"); } } catch (Exception e) { e.printStackTrace(); } } } } } chain.doFilter(request, response); }}
web.xml中注册,注册的时候长报错,注意注册filter的mapping应该放在servlet前面
<filter> <filter-name>autologin</filter-name> <filter-class>com.cskaoyan.bookStore.web.filter.AutoLoginFilter</filter-class> </filter> <filter-mapping> <filter-name>autologin</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
0 0
- 自动登录
- 自动登录
- 自动登录
- 自动登录
- 自动登录
- 自动登录
- 自动登录
- 自动登录yahoo邮箱
- WinXP、Win2003 自动登录
- 让XP自动登录
- 自动登录yahoo邮箱
- Windows2003自动登录
- WinXP实现自动登录
- 自动登录邮箱代码
- 自动登录Windows系统
- xp 自动登录
- 远程桌面+自动登录
- Windows系统自动登录
- 如何在eclipse里面创建一个maven web项目
- 系统级别分析数据库实例负载
- CUDA C++ 简单例子 两个数组求和
- hadoop下的rpc简单实现
- OpenCV仿射变换 & SURF特征点描述合辑
- 自动登录
- keil快捷键
- Linux入门第一课
- 大牛们是怎么阅读 Android 系统源码的?
- hadoop之docker伪分布式部署
- Linux下使cp命令不提示覆盖文件
- J-10
- 关于ajax 作为函数返回值的问题
- 【数据结构】栈的数组实现