JavaWeb 利用cookie及过滤器实现30天内自动登录 简单步骤
来源:互联网 发布:java微信接口开发实例 编辑:程序博客网 时间:2024/05/29 03:24
dfsfd
第一步:准备页面
- <body>
- <h1>用户登录</h1><hr>
- <form action="${pageContext.request.contextPath }/servlet/LoginServlet" method="POST">
- 用户名<input type="text" name="name" />
- 密码<input type="password" name="password" />
- <input type="checkbox" name="autologin" value="true"/>30天内自动登陆
- <input type="submit" value="登录"/>
- </form>
- </body>
第二步:创建自己的MyServlet 来处理自动登录 spring controller同理
- public class MyServlet extends HttpServlet {
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- //1,登录校验
- //2,如果用户勾选过30天内自动登陆,发送自动登陆cookie
- if("true".equals(request.getParameter("autologin"))){
- Cookie autologinC = new Cookie("autologin",user.getName()+":"+user.getPassword());
- autologinC.setPath(request.getContextPath());
- autologinC.setMaxAge(3600*24*30);
- response.addCookie(autologinC);
- }
- //4.重定向到主页
- response.sendRedirect(request.getContextPath()+"/index.jsp");
- }
- }
- }
第三步:创建 自己的AutoLoginFilter过滤器
@Component()public class AutologinFilter implements Filter {private UserController userController;@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {try {ApplicationContext ctx = new FileSystemXmlApplicationContext("classpath:spring-mvc.xml");this.userController = ctx.getBean(UserController.class);} catch (BeansException e) {e.printStackTrace();}HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse resp = (HttpServletResponse) response; //1.只有未登录的用户才能自动登陆 if(req.getSession(false)==null || req.getSession().getAttribute("user")==null){ //2.只有带了自动登陆cookie的用户才能自动登陆 Cookie [] cs = req.getCookies(); Cookie findC = null; if(cs!=null){ for(Cookie c : cs){ if("autologin".equals(c.getName())){ findC = c; break; } } } if(findC!=null){ //3.自动登录Cookie中保存的用户名密码都需要是正确的才能自动登陆 String loginname = findC.getValue().split(":")[0]; String password= findC.getValue().split(":")[1]; ModelMap model = new ModelMap(); SerializeObject serializeObject = userController.getLoginBeanInfoByParams(req, resp, model, loginname, password); if(serializeObject != null){//如果登录成功,则返回主页面 if(ResultType.NORMAL == serializeObject.getStatus()){ request.getRequestDispatcher("user/login?loginname="+loginname+"&password="+password).forward(request, response); }else{ request.getRequestDispatcher("/login.jsp").forward(request, response); } } } //无论是否自动登陆,都放行资源 chain.doFilter(request, response); } request.getRequestDispatcher("/login.jsp").forward(request, response);}@Overridepublic void init(FilterConfig arg0) throws ServletException {// TODO Auto-generated method stub}}
第三步:注册过滤器
- <filter>
- <description>自动登陆过滤器</description>
- <filter-name>AutologinFilter</filter-name>
- <filter-class>com.itheima.filter.AutologinFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>AutologinFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
扩展:注销功能
- public class LogoutServlet extends HttpServlet {
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- if(request.getSession(false)!=null){
- request.getSession().invalidate();
- //删除自动登录 cookie
- Cookie autologinC = new Cookie("autologin", "");
- autologinC.setPath(request.getContextPath());
- autologinC.setMaxAge(0);
- response.addCookie(autologinC);
- }
- response.sendRedirect(request.getContextPath()+"/index.jsp");
- }
- }
阅读全文
1 0
- JavaWeb 利用cookie及过滤器实现30天内自动登录 简单步骤
- JavaWeb 过滤器实现30天内自动登录
- 利用过滤器和cookie实现简单的单点登录
- JavaWeb之过滤器实现自动登录案例
- 利用cookie实现自动登录
- 使用cookie+过滤器实现自动登录
- 重新学javaweb---过滤器应用--30天自动登录
- 使用cookie实现一周内自动登录
- Filter过滤器+cookie实现自动登录和安全登录
- javaWeb的session和cookie实现记住密码自动登录功能简单实例
- 通过SSH的过滤器及Cookie实现自动登录2周不退出
- 通过SSH的过滤器及Cookie实现自动登录2周不退出
- 利用cookie+session实现自动登录
- Java利用Cookie实现自动登录
- JavaWeb_利用Cookie技术实现自动登录
- phantomJS利用cookie实现自动登录
- javaweb自动登录(cookie)
- JavaWeb-020-Cookie自动登录
- java常见的面试题整理
- Java枚举(enum) 详解7种常见的用法
- Appstore抓包获取APP历史版本
- EasyUI
- 七牛EVM云主机绑定
- JavaWeb 利用cookie及过滤器实现30天内自动登录 简单步骤
- Android 音频焦点(Audio Focus)
- java开发小技巧—二进制进阶—状态位
- 控制框架内部内容跟框架内部控制外部的JS代码
- redis 的简单使用
- java mongoTemplate mongodb中排序问题
- 如何真正是在C#中PictureBox在其他容器中背景透明
- 变换次数
- 通过Ajax的post方式前端参数传到后端与URLEncoder与URLDecoder编解码问题