视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
SSH2如何用Cookie做两周免登陆效果
2020-11-09 15:43:32 责编:小采
文档


简介 今天将会做一个Cookie的Demo,也是我今天在写项目时刚刚学的小技术,这里将会展示最简单的实现Cookie的方法,以及JAVAEE中Cookie的使用。 Demo 需要注意的时,这里贴出的源码是我项目中的一部分,不需要大家具体理解其中一些变量的意思,只需要关注Cook

简介

今天将会做一个Cookie的Demo,也是我今天在写项目时刚刚学的小技术,这里将会展示最简单的实现Cookie的方法,以及JAVAEE中Cookie的使用。

Demo

需要注意的时,这里贴出的源码是我项目中的一部分,不需要大家具体理解其中一些变量的意思,只需要关注Cookie部分。

流程

  1. 点击页面中登录,链接到登录action
  2. 登录时选中“两周免登陆”选框,输入用户名密码,点击登录
  3. 存入Cookie
  4. 下次无需登录

登录页面表单

注意action为User_login

action代码


/**
 * 用户登陆
 * 
 * @return
 */
public String login() {
 /**
 * 获取response
 */
 HttpServletResponse response = ServletActionContext.getResponse();
 //如果查询为空
 if (userDao.login(username, password) == null) {
 return ERROR;
 }
 //如果用户存在 
 else {
 //将用户放到session中
 session.put("user", userDao.login(username, password));
 //如果useCookie不为空
 if(useCookie != null){
 //新建一个Cookie,存放用户名和密码,用&做分隔符
 Cookie cookie = new Cookie("userCookie", username+"&"+password);
 //设置Cookie的存活时间(这里是两周)
 cookie.setMaxAge(2*7*24*60*60);
 //添加Cookie
 response.addCookie(cookie);
 }
 return SUCCESS;
 }
}

注意这里useCookie是一个字符串,就是从页面表单中接收的单选框的value。 这里做的就是如果勾了选框,则保存Cookie,不选中就不保存。

相应的struts.xml中配置


 /index.jsp
 /login.jsp


这里附加一个方法,用于在点击登录连接时进行Cookie检测


/**
 * 登录前检查cookie
 * 
 * @return
 */
public String cookieDetection() {
 if (session.get("user") != null) {
 return SUCCESS;
 } else {
 return LOGIN;
 }
}

相应的struts.xml中配置


 /index.jsp
 /login.jsp

首页过滤器

Cookie在什么时候检查呢,正常的设想是,在首页时就检查好是否有用户已经“两周免登陆”,那么需要有一个东西能够做到这一点,一般能想到的两个机制,过滤器和。 智能监听相应的动作,然后同时进行操作,而过滤器可以直接对request和response进行过滤,在Cookie的使用中会用到response和request,所以最好选择过滤器。

import java.io.IOException;
import java.util.Map;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.webstore.dao.IUserDao;
import com.webstore.imp.UserImp;

/**
 * 作者:周凌宇 时间:2014-7-4 描述:Cookie过滤器
 */
public class CookieFilter implements Filter {

 /**
 * 配置对象
 */
 protected FilterConfig config;

 /**
 * 初始化过滤器
 */
 public void init(FilterConfig config) {
 this.config = config;
 }

 /**
 * 重写doFilter方法,过滤所有请求和回复,加入或取出Cookie
 */
 public void doFilter(ServletRequest req, ServletResponse resp,
 FilterChain chain) throws IOException, ServletException {

 HttpServletRequest request = (HttpServletRequest) req;
 HttpServletResponse response = (HttpServletResponse) resp;
 Cookie[] cookies = request.getCookies();
 IUserDao userDao = new UserImp();
 String[] info = null;
 if (cookies != null) {
 for (Cookie c : cookies) {
 info = c.getValue().split("&");
 if (info.length == 2) {
 String username = info[0];
 String password = info[1];
 request.getSession().setAttribute("user", userDao.login(username, password));
 }
 }
 }
 chain.doFilter(request, response);
 }

 /**
 * 销毁过滤器
 */
 public void destroy() {
 this.config = null;
 }
}

过滤器配置


 CookieFilter
 com.webstore.util.CookieFilter


 CookieFilter
 /index.jsp

注意这里配置了只对首页过滤


下载本文
显示全文
专题