利用过滤器实现免登陆功能版本1
来源:互联网 发布:csol死神辅助源码 编辑:程序博客网 时间:2024/06/03 23:49
1 实现免登陆的思想:
当用户第一次登录的时候,如果用户设定了保存了密码,就把用户的信息 set到cookie文件里面
第二次利用过滤器 查看是否有相应的cookie文件,如果有执行相应的操作(类似与servlet)
具体的代码:
web.xml
<filter> <filter-name>AotoFilter</filter-name> <filter-class>Filter.AotoFilter</filter-class> </filter> <filter-mapping> <filter-name>AotoFilter</filter-name> <url-pattern>/login.jsp</url-pattern> </filter-mapping>
login.jsp 进行登录的页面
<body><form action="${pageContext.request.contextPath}/servlet/loginservlet" method="post">用户名:<input type="text " name="username"><br>密码:<input type="password" name="password"><br>记住密码:<input type="radio" name="aoto" value="OK"><br><input type="submit" value="登录"></form>${msg }</body>
LoginServlet.java 控制器
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); String aoto = request.getParameter("aoto"); UserService us=new UserService(); User user=us.findUser(username,password); //判断是否登录成功 if(user!=null){ //cookie存储的也是key value类型 Cookie cookie = new Cookie("user", user.getUsername()+"&"+user.getPassword()); cookie.setPath("/");//当前应用 可以享用 if(aoto.equals("OK")){如果设置了 记住密码 cookie.setMaxAge(60*60*24*7);//设定7天有效 } response.addCookie(cookie);//把cookie对象保存到客户端 request.setAttribute("user", user); request.getRequestDispatcher("/home.jsp").forward(request, response); }else{ request.setAttribute("msg", "用户名或密码错误,请重新登录"); //重新登录 request.getRequestDispatcher("/login.jsp").forward(request, response); } }
AotoFilter 过滤器 其实执行的程序和 servlet差不多
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterchain) throws IOException, ServletException { //1 转换两个对象HttpServletRequest,HttpServletResponse HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse resp = (HttpServletResponse) response; //2 处理业务逻辑 Cookie[] cookies = req.getCookies(); //得到带过来的cookie //用户请求是带着 客户端里面的cookie文件的 String username=null; String password=null; //遍历需要的cookie文件 for(int i=0;cookies!=null&&i<cookies.length;i++){ if("user".equals(cookies[i].getName())){ String[] strings = cookies[i].getValue().split("&"); username=strings[0]; password=strings[1]; } } //进行和servlet一样的操作 UserService us=new UserService(); User user=us.findUser(username, password); if(user!=null){ req.getSession().setAttribute("user", user); request.getRequestDispatcher("/home.jsp").forward(request, response); } //3放行 filterchain.doFilter(request, response); }
对于 请求转发 和重定向的一些说明:
说明:
1 请求重定向的 路径规则 response.sendRedirect(“/AotoLogin/home.jsp”);规则: /项目名字/资源名字
2 请求重定向中 session里面set的东西 可以取出来,requestset的东西取不出,因为 request只是对一次请求内有效 ,也就是说 只要地址栏 不变化 就可以有效,重定向 发生了地址栏的变化
3如果是请求转发 那么session 和request 都可以set 地址栏不发生变化,可以取到
4 请求转发 可以直接写/ 资源名字
request.getRequestDispatcher(“/home.jsp”).forward(request, response);
5 重定向的 / 表示:http://服务器ip:端口
请求转发的 / 表示:http://服务器ip:端口/项目名
java.lang.IllegalStateException 遇到的情况
就是在本次的请求转发之前 已经把该请求转发出去了
阅读全文
0 0
- 利用过滤器实现免登陆功能版本1
- 利用javaweb实现登陆功能!
- python利用selenium获取cookie实现免登陆
- 浅谈利用Cookie技术实现3天免登陆
- 简易免登陆功能的实现(不连接数据库)
- 利用session技术实现 用户登陆 功能
- 登陆过滤器实现
- iPhone指纹识别功能插件,利用指纹实现登陆等功能
- servlet实现简单免登陆
- 实现SSH免密码登陆
- 实现WebView的免登陆
- 实现Linux免密钥登陆
- js实现七天免登陆
- SourceTree windows版本免注册免登陆使用方法
- SourceTree windows版本免注册免登陆使用方法
- SourceTree windows版本免注册免登陆使用方法
- 大神解答:如何实现域账号免登陆流程平台的功能
- 实现登录过滤器功能
- AIX 系统介绍
- 前端的精灵图制作以及精灵图定位
- 数据结构与算法day1--swap的实现
- Ubuntu镜像源和pypi镜像源
- oracle 向表中插入BLOB类型数据
- 利用过滤器实现免登陆功能版本1
- Vue--导航栏菜单
- 设置一个Plane到相机的viewport
- Java项目经验——软件工程师成长的关键
- 关于获取放在src文件夹下读取xml文件的总结
- java笔记
- lukeall加载第三方分词器报错-Djava.ext.dirs= is not supported.
- URL地址组成简介
- spring Boot中Maven的下载安装和自定义jar包处理