`

javaEE编程之自动登陆

阅读更多

       

java对cookie的操作

      话不多说,直接进入正题。java对cookie的操作比较简单,主要介绍下建立cookie和读取cookie,以及如何设定cookie的生命周期和cookie的路径问题。

      (1)建立一个无生命周期的cookie,即随着浏览器的关闭即消失的cookie,代码如下

1
2
3
4
HttpServletRequest request 
HttpServletResponse response
Cookie cookie = new Cookie("cookiename","cookievalue");
response.addCookie(cookie);

 

     (2)下面建立一个有生命周期的cookie,可以设置他的生命周期

1
2
3
4
5
6
7
8
cookie = new Cookie("cookiename","cookievalue");
 
cookie.setMaxAge(3600);
 
//设置路径,这个路径即该工程下都可以访问该cookie 如果不设置路径,那么只有设置该cookie路径及其子路径可以访问
 
cookie.setPath("/");
response.addCookie(cookie);

 

下面介绍如何读取cookie,读取cookie代码如下

1
2
3
4
5
Cookie[] cookies = request.getCookies();//这样便可以获取一个cookie数组
for(Cookie cookie : cookies){
    cookie.getName();// get the cookie name
    cookie.getValue(); // get the cookie value
}

 

上面就是基本的读写cookie的操作。我们在实际中最好进行一下封装,比如增加一个cookie,我们关注的是cookie的name,value,生命周期,所以进行封装一个函数,当然还要传入一个response对象,addCookie()代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
 * 设置cookie
 * @author www.quzhuanpan.com
 * @param response
 * @param name  cookie名字
 * @param value cookie值
 * @param maxAge cookie生命周期  以秒为单位
 */
public static void addCookie(HttpServletResponse response,String name,String value,int maxAge){
    Cookie cookie = new Cookie(name,value);
    cookie.setPath("/");
    if(maxAge>0)  cookie.setMaxAge(maxAge);
    response.addCookie(cookie);
}

 

读取cookie的时候,为了方便我们的操作,我们希望封装一个函数,只要我们提供cookie的name,我们便可以获取cookie的value,带着这个想法,很容易想到将cookie封装到Map里面,于是进行下面的封装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/**
 * 根据名字获取cookie
 * @author www.quzhuanpan.com
 * @param request
 * @param name cookie名字
 * @return
 */
public static Cookie getCookieByName(HttpServletRequest request,String name){
    Map<String,Cookie> cookieMap = ReadCookieMap(request);
    if(cookieMap.containsKey(name)){
        Cookie cookie = (Cookie)cookieMap.get(name);
        return cookie;
    }else{
        return null;
    }  
}
 
 
 
/**
 * 将cookie封装到Map里面
 * @param request
 * @return
 */
private static Map<String,Cookie> ReadCookieMap(HttpServletRequest request){ 
    Map<String,Cookie> cookieMap = new HashMap<String,Cookie>();
    Cookie[] cookies = request.getCookies();
    if(null!=cookies){
        for(Cookie cookie : cookies){
            cookieMap.put(cookie.getName(), cookie);
        }
    }
    return cookieMap;

        下面是我开发:去转盘网时编写自动登录时候所写的cookie工具类,代码如下:

/**
 * cookie的增加、删除、查询
 * @author www.quzhuanpan.com
 */
public class CookieUtils {
	public static final String USER_COOKIE = "user.cookie";

	// 添加一个cookie
	public Cookie addCookie(User user) {
		Cookie cookie = new Cookie(USER_COOKIE, user.getUsername() + ","
				+ user.getPassword());
		//System.out.println("添加cookie" + cookie.toString());
		cookie.setMaxAge(60 * 60 * 24 * 14);// cookie保存两周
		return cookie;
	}

	// 得到cookie
	public boolean getCookie(HttpServletRequest request, LoginService loginService) throws Exception {
		User user = null;
		boolean flag = false;
		Cookie[] cookies = request.getCookies();
		if (cookies != null) {
			for (Cookie cookie : cookies) {
				if (CookieUtils.USER_COOKIE.equals(cookie.getName())) {
					String value = cookie.getValue();
					if (StringUtils.isNotBlank(value)) {
						String[] split = value.split(",");
						String username = split[0];
						String password = split[1];
						user = loginService.login2(username, password);
						if (user != null) {
							HttpSession session = request.getSession();
							session.setAttribute(CodeConst.USERINSESSION, user);// 添加用户到session中
							flag = true;
						}
					}
				}
				if(flag){
					break;
				}
			}
		}
		return false;
	}
	// 删除cookie
	public static  Cookie delCookie(HttpServletRequest request) {
		Cookie[] cookies = request.getCookies();
		if (cookies != null) {
			for (Cookie cookie : cookies) {
				if (USER_COOKIE.equals(cookie.getName())) {
					cookie.setValue(" ");
					cookie.setMaxAge(0);
					return cookie;
				}
			}
		}
		return null;
	}
}

  想了解跟多技术:请关注:www.quzhuanpan.com。

分享到:
评论

相关推荐

    JAVAEE编程.docx

    在JavaEE编程中,我们经常会遇到数据库操作的任务,如创建数据库和表,以及配置数据库连接。以下是对给定文件内容的详细解释: 1. **创建MySQL数据库和表**: 在示例代码中,我们看到一个`mainTest()`方法,它用于...

    JavaEE框架编程技-大作业(本程序设计是采用以struts2框架为基础设计的简单数据的增删改查)

    在JavaEE中,可以通过JDBC的Connection对象的setAutoCommit(false)方法关闭自动提交,然后在所有操作完成后调用commit()方法来提交事务,如果在中途出现异常则回滚(rollback)。双重插入可能是指在主从表或者一对多...

    JavaEE spring半自动bean管理事务案例

    在JavaEE应用开发中,Spring框架是不可或缺的一部分,它提供了许多功能,其中之一就是对bean的管理以及事务处理。本案例将深入探讨Spring如何实现半自动的bean管理以及事务控制。 首先,Spring通过依赖注入...

    个人博客网站,javaEE

    2. **Spring**:Spring框架的核心在于IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)。它提供了一个容器来管理对象的生命周期和依赖关系,使得代码更加解耦。Spring的...

    JavaEE spring半自动实现AOP代理

    在JavaEE开发中,Spring框架是广泛使用的轻量级企业级应用框架,它提供了一整套服务,包括数据访问、事务管理、持久化、缓存、远程调用等。其中,AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一...

    基于JavaEE的网吧自动计费管理系统设计与实现_信息管理__JSP网站设计_SQLServer数据库设计.rar

    在本系统中,JavaEE作为基础平台,提供了服务器端的编程模型,使得系统能够处理复杂的业务逻辑和数据处理任务。 JSP(JavaServer Pages)是JavaEE的一部分,用于创建动态网页。JSP将HTML代码和Java代码分离,允许...

    javaEE思维导图.

    7. **AOP(Aspect-Oriented Programming)**:面向切面编程是Spring框架的另一个关键特性,它提供了一种在不修改源代码的情况下,对程序进行功能增强的方式,如日志记录、事务管理等。 8. **微信小程序**:虽然不...

    尚硅谷JavaEE&技术之&MyBatisPlus;

    总的来说,尚硅谷的JavaEE技术之MyBatisPlus教学内容旨在帮助开发者理解并掌握MyBatisPlus的核心特性,包括但不限于自动化 CRUD 操作、条件构造器、多表关联查询、事务管理、Lambda 表达式支持以及批量操作。...

    mail-javaee-activation

    在Java编程中,发送电子邮件是一项常见的任务,尤其在企业级应用程序(JavaEE)中,它经常用于客户服务通知、系统报告或者其他自动化的通信需求。本文将详细介绍如何使用JavaMail API和JavaBeans Activation ...

    javaee详解.7z

    10. **JSON-P/JSON-B**:JSON-P和JSON-B是JavaEE中的JSON处理API,分别用于处理JSON文本的解析和生成,以及JSON到Java对象和Java对象到JSON的自动绑定。 学习JavaEE不仅需要掌握上述技术,还需要了解如何在实际项目...

    《从Java走向JavaEE》 PDF

    总的来说,从Java到JavaEE的转变意味着从单一的编程语言学习转向全面的企业级解决方案的掌握。这不仅需要扎实的Java基础知识,还需要对软件架构设计、并发处理、分布式系统有深刻的理解。通过阅读《从Java走向JavaEE...

    简单的javaee大作业

    6. **CDI(Contexts and Dependency Injection)**:CDI是JavaEE中的依赖注入框架,它允许组件之间通过接口进行解耦,并自动管理它们的生命周期和依赖关系。 7. **JTA(Java Transaction API)**:JavaEE支持事务...

    javaEE+++邮件编程代码

    Java EE邮件编程是Java开发中一...通过学习和掌握这些知识点,开发者能够构建出功能丰富的应用,例如自动提醒服务、用户通知系统等。希望这份资料能帮助你深入了解和运用Java EE邮件编程,祝你在IT领域取得更大的成就!

    JavaEE基础3 、掌握基于注解的装配技术,并编程验证。 2、掌握自动装配技术,并编程验证。

    在JavaEE开发中,注解(Annotation)和自动装配(Autowiring)是Spring框架中的核心技术,它们极大地简化了应用程序的配置和依赖管理。这里我们将深入探讨这两个知识点,并通过编程验证来加深理解。 首先,基于注解...

    JavaEE精讲之Spring框架实战 ——学习笔记.zip

    在本学习笔记中,我们将深入探讨JavaEE中的Spring框架,这是一个强大的、全面的企业级应用程序开发框架,它简化了Java开发并提供了丰富的功能。Spring的核心特性包括依赖注入(DI)、面向切面编程(AOP)以及对Java ...

    JavaEE在线考试系统

    6. JPA(Java Persistence API):JavaEE提供的标准持久化框架,可以替代JDBC,简化数据访问层的编程。 7. CDI(Contexts and Dependency Injection):用于管理和注入依赖,提高代码可测试性和可维护性。 8. JSF...

    JavaEE期末复习题库

    10. **MyBatis的灵活性**:与Hibernate等全自动化ORM框架相比,MyBatis更加灵活,允许程序员自定义SQL,更好地控制数据库操作,适合对数据库操作有特定需求的项目。 通过这个复习题库,学生可以系统地掌握MyBatis的...

    JAVAEE仓库管理系统

    7. **JSF(JavaServer Faces)或Spring MVC**:作为前端展示层,开发者可能会选择JSF或者Spring MVC,它们都是用于构建用户界面的MVC框架,提供组件化和声明式编程。 8. **AJAX**:为了提升用户体验,系统可能会...

    JavaEE各种包

    3. **Spring框架**: Spring是JavaEE开发的核心框架,它不仅支持MVC模式,还提供了全面的依赖注入(DI)和面向切面编程(AOP)功能。Spring容器管理对象的生命周期和依赖关系,降低了代码间的耦合度。此外,Spring还...

    JavaEE7-api 文档 中英 谷歌翻译版

    JavaEE7(Java Platform, Enterprise Edition 7)是Java编程语言的一个版本,专注于开发和部署企业级应用程序。这个API文档提供了全面的JavaEE7规范,包括各种组件、服务和接口的详细描述,使得开发者能够更好地理解...

Global site tag (gtag.js) - Google Analytics