<%!
public static Cookie getCookie(HttpServletRequest request,String name)
{
Cookie [] cookies =request.getCookies();
if(cookies!=null)
{
for(int i=0;i<cookies.length;i++)
{
if(cookies[i].getName().equals(name))
{
return cookies[i];
}
}
}
return null;
}
%> <%
//设置cookie
//我想把username="heavilyarmed" 和userpwd="123"放到cookie内
//没思路
Cookie nameCookie2=new Cookie("mingzi","nicholas");
nameCookie2.setDomain("http://localhost:1009/twoWeeks");
nameCookie2.setPath("/userinfo");
nameCookie2.setMaxAge(60);
response.addCookie(nameCookie2);
%> <%
//读取
String name="mingzi";
Cookie nameCookie=getCookie(request,name);
System.out.println("name is :"+nameCookie.getValue());
System.out.println("thanks");
%>我这么写上去,会报空异常,从未接触过,还请各位帮忙写详细点儿
<%@ page language="java" import="javax.servlet.http.*" %>nameCookie2.setMaxAge(6000);//这里是以毫秒为单位的!你设60太小了!刚存完就失效了!
赞同楼上的观点,时间太短了,
在一个检查下你的IE浏览器是否禁用了Cookie。。
谢谢你的方法,浏览器没有把它禁用,也生成了,就是只有一个名字是JSESSIONID的,不知道怎么办了
我看了下的代码!(估计你是想,在用户登陆的时候,把用户名和密码保存到cookie中去)
首先 在JSP页面上做个下拉菜单就是保存的时间(cookie是以秒为单位的!)
再到逻辑层去判断你的用户名和密码是否正确,如果正确就设置cookie!//1 获取用户保存的时间:可以用request.getParameter();方法
//2 将用户的用户名和密码保存到cookie中(提示:Cookie uNameCookie = new Cookie("uname",uname)......);
Cookie是以键值对 的形式保存值的(反正我是这么理解的用法同HashMap),可以通过键来取到值
//3 设置cookie最大的保存时间
uNameCookie .setMaxAge(取得用户保存的时间);
//4 设置保存路径
uNameCookie.setPath("......");
//5 添加到响应对象中
response.addCookie(uNameCookie);
//---------------------------------------至于取cookie中的值嘛:
Cookie[] cookies = request.getCookies();
if(cookies != null){
Map<String, String> cookieMap = new HashMap<String, String>();
for(Cookie temp : cookies){
cookieMap.put(temp.getName(), temp.getValue());
}
//获取用户的信息
String uname = cookieMap.get("uname");
String upwd = cookieMap.get("upwd");
可以用HashMap来取值!
最后像这些基础东西,还希望LZ多多去理解!
加个if判断,如果为null输出提示信息,或进行其它操作
谢谢楼上啦
<%@ page language="java" import="javax.servlet.http.*" %> nameCookie2.setMaxAge(6000);//这里是以毫秒为单位的!你设60太小了!刚存完就失效了!
<%@page pageEncoding="utf-8" %>
<%@page import="javax.servlet.http.Cookie" %><%
Cookie nameCookie = new Cookie("username","heavilyarmed");
nameCookie.setMaxAge(60*60);//1小时
response.addCookie(nameCookie);
Cookie pwdCookie = new Cookie("userpwd","123");
nameCookie.setMaxAge(60*60);//1小时
response.addCookie(pwdCookie);
Cookie[] cookies = request.getCookies();
if( cookies !=null){
for(int i=0;i<cookies.length;i++){
Cookie cookie =cookies[i];
out.println(cookie.getName()+"="+cookie.getValue());
}
}
%>
楼主可以这样做:
将cookie作为一个属性放到request中:
request.setAttribute("cookie",nameCookie2);然后再这样取出即可:
Cookie c = (Cookie)request.getAttribute("cookie");
System.out.println(c.getName());
System.out.println(c.getMaxAge());
System.out.println(c.getPath());
这样就可以了~~
可以将最后的
Cookie cookie =cookies[i];
out.println(cookie.getName()+"="+cookie.getValue());
直接打出来:
<%=cookies[i].getName%>
<%=cookies[i].getValue%>
偶还有一点疑问就是cookie=null 的情况到底有没有?!当打开浏览器的时候, JSESSIONID已经从在了。此cookie是由服务器端自己设置到客户端上的,表示的信息是一个普通的用户。所以好像可以去掉if( cookies !=null)。
个人理解,希望大家指正!