java代码如何读取到浏览器中的cookie值?

问题描述:
通过java代码,如何得到IE浏览器中指定网址的cookie值;
(这个网址是通过用户名和密码,成功登录之后的cookie值;
注:通过代码模拟登录,这个思路已经行不通了,因为我试了,这个网址不行,其他的可以);

大概意思是:打开IE浏览器,输入相对应的网址,输入用户名和密码,成功登录之后,
浏览器中会有一个cookie值,如何通过java程序得到这个cookie值,

java通过httpServletRequest接口来访问浏览器请求中的cookies数据
每个cookie有两个属性:键 ,值(无特定格式字符串,所以可以diy存数据,不过要注意URL编码问题)
如果我们需要存储新的cookie我们可以new一个cookie实例 并通过httpservletRsponse提交到浏览器,进而存储到本地!
//写cookie

Cookie namecookie = new Cookie("name",name);

Cookie passwordcookie = new Cookie("password",password);

Cookie optioncookie = new Cookie("option","1");

//生命周期

namecookie.setMaxAge(60*60*24*365);

passwordcookie.setMaxAge(60*60*24*365);

optioncookie.setMaxAge(60*60*24*365);

response.addCookie(namecookie);

response.addCookie(passwordcookie);

response.addCookie(optioncookie);

//读cookie

Cookie[] cookies = request.getCookies();

if(cookies!=null)

{

String name = "";

String password = "";

String option = "";

for (int i = 0; i < cookies.length; i++)

{

Cookie c = cookies[i];

if(c.getName().equalsIgnoreCase("name"))

{

name = c.getValue();

}

else if(c.getName().equalsIgnoreCase("password"))

{

password = c.getValue();

}

else if(c.getName().equalsIgnoreCase("option"))

{

option = c.getValue();

}

}

}

给出cookie的一个通用类

/*

  • 该类可以从浏览器请求中提取出cookies并进行对cookis的相关操作
  • */

public class CookiesUtil extends BaseController {

/**
 * 根据名字获取cookie
 * 
 * @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;
}

/**
 * 保存Cookies
 * 
 * @param response
 *            servlet请求
 * @param value
 *            保存值
 * @author jxf
 */
public static HttpServletResponse setCookie(HttpServletResponse response, String name, String value,int time) {
    // new一个Cookie对象,键值对为参数
    Cookie cookie = new Cookie(name, value);
    // tomcat下多应用共享
    cookie.setPath("/");
    // 如果cookie的值中含有中文时,需要对cookie进行编码,不然会产生乱码
    try {
        URLEncoder.encode(value, "utf-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    cookie.setMaxAge(time);
    // 将Cookie添加到Response中,使之生效
    response.addCookie(cookie); // addCookie后,如果已经存在相同名字的cookie,则最新的覆盖旧的cookie
    return response;
}

namecookie.setMaxAge(60*60*24*365);

passwordcookie.setMaxAge(60*60*24*365);

optioncookie.setMaxAge(60*60*24*365);

response.addCookie(namecookie);

response.addCookie(passwordcookie);

response.addCookie(optioncookie);

Cookie[] cookies = request.getCookies();
for(Cookie cookie : cookies){
if(cookie.getName().equals("loginInfo")){
String loginInfo = cookie.getValue();
String username = loginInfo.split(",")[0];
String password = loginInfo.split(",")[1];
request.setAttribute("username", username);
request.setAttribute("password", password);
}
}

我最近做的项目都是js获取的cookie,你可以试试

跪求大神!我的QQ:992544491 王久印

首先我们认识下什么是cookies:
cookie实际上是一个存在你硬盘里的数据,但是这些数据很特殊,只能由web应用提交给浏览器帮助存储,并且我们还能读取浏览器存在本地的cookie
web应用一般只在cookie中存储一些用户信息等少量且暂时的数据,数据量大则不适合存储在cookies
一般浏览器对于每个web应用会分别给予他们40个cookie用来存储数据,并且每个cookie的大小不超过4K(听说部分浏览器的cookie能存很大的数据,不过我们一般不会存这么大的数据,因为数据提取的效率不高,影响性能)
说了这么多废话,然后重点终于来了
java通过httpServletRequest接口来访问浏览器请求中的cookies数据(这里先了解一下cookies来龙去脉,代码待会一并给出)
每个cookie有两个属性:键 ,值(无特定格式字符串,所以可以diy存数据,不过要注意URL编码问题,编码问题待会和代码一同讲)
如果我们需要存储新的cookie我们可以new一个cookie实例 并通过httpservletRsponse提交到浏览器,进而存储到本地
下面给出cookie的一个通用类
/*

  • 该类可以从浏览器请求中提取出cookies并进行对cookis的相关操作
  • */

public class CookiesUtil extends BaseController {

/**
 * 根据名字获取cookie
 * 
 * @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;
}

/**
 * 保存Cookies
 * 
 * @param response
 *            servlet请求
 * @param value
 *            保存值
 * @author jxf
 */
public static HttpServletResponse setCookie(HttpServletResponse response, String name, String value,int time) {
    // new一个Cookie对象,键值对为参数
    Cookie cookie = new Cookie(name, value);
    // tomcat下多应用共享
    cookie.setPath("/");
    // 如果cookie的值中含有中文时,需要对cookie进行编码,不然会产生乱码
    try {
        URLEncoder.encode(val

cookie是跟请求的域名绑定的。

对于你的场景,首先你需要请求登录,在后端登录请求中需要告诉浏览器设置cookie,java中有对response应该是提供了类似setcookie或者addcookie方法。
客户端在收到response之后会将cookie保持,然后每个相同域名的请求都会自动带上这个cookie,你只需要在后端请求处理的时候去获取cookie进行相应处理即可。

HttpSession session = request.getSession();
session.setAttribute("user", loginName);
String user =session.getAttribute("user");

综述:Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以由服务器端开发自己定义,对于JSP而言也可以直接写入jsessionid,这样服务器可以知道该用户是否合法用户以及是否需要重新登录等,服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。

1.获取Cookie的值:获取Cookie值的标准代码格为:myCookie.Values["auth"];
上句代码可以获取名为myCookie的Cookie对象键名为auth的键值。如果不存在,则返回null。
DateTime now=new DateTime.Now;
Response.Cookies["Info"].Expires = DateTime.Now.AddDays(1);
//设定Cookie过期时间下面的代码示例演示删除应用程序中所有可用 Cookie 的一种方法
2.代码如下:
HttpCookie aCookie;
string cookieName;
int limit = Request.Cookies.Count;
for (int i = 0; i < limit; i++)
{
cookieName = Request.Cookies[i].Name;
aCookie = new HttpCookie(cookieName);
aCookie.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Add(aCookie);
}
3.以上就是Java程序开发中涉及到的获取cookie方法

没有请求,服务端是获取不到cookie的,http协议是无状态的,只有请求的时候会带有参数,它只能建立链接,数据传输,
关闭链接,希望像登录一次后还能获取cookie是不可以的,必须在下一次的请求中才能够获取cookie

Request.Cookies即可,不妨自己设置试一试

https://www.cnblogs.com/wenjia-hao/p/7365569.html 看看这篇又用吗

cookie获取方式多种多样网上一查一大堆,为何不尝试使用jwt验证方式,在分布式或微服务架构中表现不错