在jsp或java中怎么存取cookie值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在jsp或java中怎么存取cookie值相关的知识,希望对你有一定的参考价值。
Cookie []cookies=request.getCookies();String cookieName="myCookie";
Cookie myCookie=null;
for(int i=0;i<cookies.length;i++)
if(cookies[i].getName.equals(cookieName))
myCookie=cookie[i];
break;
以上是详细代码,只能这样来获取cookie;
String cookieName="myCookie";
String cookieValue="cookieValue";
Cookie myCookie=new Cookie(cookiename,(Object)cookieValue);
myCookie.setmaxAge(60*60*24);//一天
respose.addCookie(myCookie);
以上是存一个Cookie 参考技术A cookie是存放在客户端的信息
$.cookie('cookieName', 'cookieValue') //存入值
$.cookie("cookieName")//取出值
在java中获取cookie值
【中文标题】在java中获取cookie值【英文标题】:Get cookie value in java 【发布时间】:2014-05-13 07:41:34 【问题描述】:我已经在我的 JSP 中像这样初始化了 Cooke,
String timeStamp = new SimpleDateFormat("dd:MM:yyyy_HH:mm:ss:SSS").format(Calendar.getInstance().getTime());
timeStamp = timeStamp + ":" + System.nanoTime();
String loc = "/u/poolla/workspace/FirstServlet/WebContent/WEB-INF/"+timeStamp;
Cookie thecookie = new Cookie("thecookie", loc);
thecookie.setMaxAge(60*60*24);
response.addCookie(thecookie);
因此,所有创建的 cookie 将具有相同的名称,但不同的用户访问时间的值不同。
在 java servlet 的结尾,我想停用/杀死在 java servlet 开头传递的 cookie,并说如果他们是 5 个用户并行使用系统,我将如何知道要为哪个用户停用哪个 cookie在 my.java 的最后一个?
例如,考虑
User 1 : cookie name `thecookie` value `AAA`
User 2 : cookie name `thecookie` value `BBB`
User 3 : cookie name `thecookie` value `CCC`
User 4 : cookie name `thecookie` value `DDD`
User 5 : cookie name `thecookie` value `EEE`
现在,在 my.java servlet 的末尾,我想停用在 my.java 开头分配的值为 CCC 的 cookie,而不干扰其他 cookie 值,该怎么做?
【问题讨论】:
你的第二个问题不清楚。 在我的编辑中解释。 Web 应用程序已经是多线程的。你为什么认为它会为 10 个用户显示 10 个 cookie? 我没听懂,我刚开始使用 cookie Getting cookie in servlet的可能重复 【参考方案1】:protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
String username = "";
String password = "";
// Get an array of Cookies associated with this domain
Cookie[] cookies = request.getCookies();
if (cookies != null)
for (int i = 0; i < cookies.length; i++)
if (cookies[i].getName().equals("username"))
username = cookies[i].getValue();
if (cookies[i].getName().equals("password"))
password = cookies[i].getValue();
AccountDAO l = new AccountDAO();
Account a = l.getAll(username, password);
if (a != null)
request.getRequestDispatcher("Detail.jsp").forward(request, response);
else
request.getRequestDispatcher("login.jsp").forward(request, response);
【讨论】:
【参考方案2】:protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
String username = request.getParameter("username");
String password = request.getParameter("password");
HttpSession session = request.getSession();
AccountDAO db = new AccountDAO();
Account ac = (Account) db.getAll(username, password);
if (ac != null)
String remember = request.getParameter("remember");
if (remember != null)
Cookie c_user = new Cookie("username", username);
Cookie c_pass = new Cookie("password", password);
c_user.setMaxAge(3600 * 24 * 30);
c_pass.setMaxAge(3600 * 24 * 30);
response.addCookie(c_user);
response.addCookie(c_pass);
session.setAttribute("display_name", ac.getDisplayName());
request.getRequestDispatcher("Detail.jsp").forward(request, response);
else
session.setAttribute("display_name", ac.getDisplayName());
request.getRequestDispatcher("Detail.jsp").forward(request, response);
else
request.getRequestDispatcher("login.jsp").forward(request, response);
【讨论】:
【参考方案3】:在 kotlin 中会更短:
fun HttpServletRequest.getCookie( name: String) = cookies.firstOrNull it.name == name
【讨论】:
【参考方案4】:准备使用泛型方法:
public static Cookie getCookie(HttpServletRequest request, String name)
Cookie[] cookies = request.getCookies();
if (cookies != null)
for (Cookie cookie : cookies)
if (cookie.getName().equals(name))
return cookie;
return null;
【讨论】:
【参考方案5】:Cookie[] cookies = request.getCookies();
int i = 0;
for (Cookie cookie : cookies )
Sytem.out.println(cookies[i].getName());
Sytem.out.println(cookies[i].getValue());
i++;
【讨论】:
【参考方案6】:您使用了错误的方法来读取 cookie..
Cookie[] cookies = request.getCookies();
if (cookies != null)
for (Cookie cookie : cookies)
if (cookie.getName().equals("cookieName"))
//do something
//value can be retrieved using #cookie.getValue()
使用这个。无需检测特定用户的 cookie,只需将其停用即可。
【讨论】:
您的意思是它会自动识别要停用的cookie?? 我无法在此方法中读取与字符串关联的特殊字符或数字?有什么限制吗? 为高评价答案添加了 java 8:Arrays.stream(request.getCookies()).filter(t -> "cookieName".equals(t.getName())).findFirst() .get() 这个答案中的request
是什么?如何定义?
@Kavipriya request
指的是HttpServletRequest以上是关于在jsp或java中怎么存取cookie值的主要内容,如果未能解决你的问题,请参考以下文章