Filter自动登录
Dao层略过
Domain略过
Service层过
Web层
Select逻辑
获取表单数据,Web—service——Dao返回用户信息
如果返回不为null否则,重定向到登录页面。则判断用户是否勾选7天免登录,如果勾选(判断一下)。把用户数据存入session域中,并且要创建一个cookie设置时间为7天,保存cookie中.
select代码:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获得表单数据
String name = request.getParameter("username");
String password = request.getParameter("password");
//查询有没有该用户
User u = new User(name, password);
UserService us = new UserServiceImpl();
User user = us.login(u);
//用户账号密码正确
if (user != null) {
//判断是否勾选7天免登陆
if ("ok".equals(request.getParameter("auto"))) {
//数据保存到session中
request.getSession().setAttribute("user", user);
//保存信息到cookie中
Cookie cookie = new Cookie("auto#"+name, password);
cookie.setMaxAge(70 * 60);
cookie.setPath("/");
response.addCookie(cookie);
}
request.getRequestDispatcher("main.jsp").forward(request,
response);
} else {
response.sendRedirect("/autoFiler/index.jsp");
}
}
Filter过滤器逻辑
Filter主要过滤index.jsp
获得cookie数组进行非空判断,如果cookie有值则遍历之,判断cookie是否是保存的有username的值,如果有则进行把cookie保存的用户名密码取出,调用service——Dao判断用户是否存在,如果存在转发到mian.jsp,并放行。如果不存在,重定向到index.Jsp登录页面。如果cookie数组中没有保存该用户的cookie,则放行。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
//1. 获取cookie 判断非空
Cookie[] cookies = req.getCookies();
if(cookies!=null){
//2. 遍历cookie
for (Cookie cookie : cookies) {
//3. 判断cookie存在 name命名的值
if(cookie.getName().contains("auto")){
String username=cookie.getName().split("#")[1];
String password=cookie.getValue();
User u=new User(username,password);
UserService us = new UserServiceImpl();
User user = us.login(u);
//4.如果user对象存在 自动登录
if(user!=null){
req.getSession().setAttribute("user", user);
request.getRequestDispatcher("main.jsp").forward(request,
response);
chain.doFilter(req, res);
}else{
//5.如果不存在,重新跳转至登录页面
res.sendRedirect("/autoFiler/index.jsp");
chain.doFilter(req, res);
}
}
}
chain.doFilter(req, res);
}
}
Filter自动登录的更多相关文章
- cookies session filter 自动登录
webxml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=" ...
- 二十 Filter&自动登录功能
Filter过滤器 过滤器,其实就是对客户端发出来的请求进行过滤,浏览器发出,然后服务器用Servelt处理.在中间就可以过滤,起到的是拦截的作用. 不仅仅作用于客户端请求,而且过滤服务器响应 作用: ...
- JavaWeb学习记录总结(二十九)--Servlet\Session\Cookie\Filter实现自动登录和记住密码
一.Servlet package autologin.servlet.login; import java.io.IOException;import java.security.MessageDi ...
- 实现自动登录:Filter 实现思路和方式
当你勾选(记住登录状态),用cookie保存用户名和密码.不勾选,cookie失效. 所有的页面都要经过autoLoginFilter.java 的过滤器,在这类中,必须要判断cookies不为nul ...
- JavaWeb 后端 <十二> 之 过滤器 filter 乱码、不缓存、脏话、标记、自动登录、全站压缩过滤器
一.过滤器是什么?有什么? 1.过滤器属于Servlet规范,从2.3版本就开始有了. 2.过滤器就是对访问的内容进行筛选(拦截).利用过滤器对请求和响应进行过滤
- 自动登录(过滤器filter的应用)
//反复实验的时候注意数据库数据的更新 //将数据存储到cookie里面 protected void doGet(HttpServletRequest request, HttpServletRes ...
- Filter应用之-自动登录
自动登录,是为了帮助用户多次使用这个网页时,不用再次输入用户名和密码就可以登录. 是指用户将用户的登录信息,人,保存到本地的文件中Cookie中. Name,value – 声明时 new Cooki ...
- JavaWeb 使用Filter实现自动登录
思路 使用cookie存储账号.密码,使用Filter拦截,从cookie中取出账号.密码.若用户要注销|登出.不再想使用自动登录,将cookie的有效期设置为0即可. 浏览器可以查看Cookie,不 ...
- java 自动登录代码
javaBean的代码 package bean; import java.io.Serializable; public class Admin implements Serial ...
随机推荐
- iOS开发tips-UINavigationBar的切换
概述 在iOS系统中,如果控制器是以push方式进行管理的话,那么事实上多个控制器是共享的同一个导航栏.当然iOS系统的设计无可厚非,但是国内的应用经常会遇到很多个性的设计,就比如说A push到 B ...
- Modelsim使用笔记(一个完成工程的仿真)
这学期在玩Altera的板子,不不, 现在应该叫intel PSG.在QuartusII13.0上老喜欢用modelsim_ae做仿真,小工程用起来也方便,但是我做IIC配置摄像头的时序仿真时,就显得 ...
- IDEA 安装scala插件
安装scala插件一般有两种方式,在IDEA里面下载或者手动安装 手动安装 首先是下载需要的插件包,官网下载实在太慢,这里提供我下载好的文件,会按时更新成最新版 https://pan.baidu.c ...
- Js调用exe程序方法(通过URL Protocol实现网页调用本地应用程序)
1.使用记事本(或其他文本编辑器)创建一个protocal.reg文件,并写入以下内容 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROO ...
- dubbo 入门
1 介绍 1.1 背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 1.2 说明 DUBB ...
- jqPaginator 项目中做分页的应用技巧
最近做后台管理系统,分页用到的不少,项目中其实已经有分页功能的组件但是不够高度自定义,于是就找到了 jqPaginator 高度自定义的Html结构 初始化引用如下: $("#paginat ...
- iOS开发,UITableView相关问题
第一条:UITableViewCell 内容的设置 //文本放到最后 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:_dataArr.co ...
- 升讯威微信营销系统开发实践:(5) Github 源码:微信接口的 .NET 封装。
微信开发系列教程,将以一个实际的微信平台项目为案例,深入浅出的讲解微信开发.应用各环节的实现方案和技术细节. 本系列教程的最终目标是完成一个功能完善并达到高可用性能指标的微信管理软件,所以除了与微信本 ...
- Eclipse Java 关联源码
今天打代码的时候打算看看Java的源码是怎么实现的 没想到还没关联源码 遇到上面的情况只需要关联下源码就可以对着方法按F3查看JAVA的开源代码. 解决上面如下: 找到jdk的安装目录 找到src.z ...
- POJ1182食物链(并查集)
Description 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到 ...