javaWeb中的cookie
来源:互联网 发布:ios7软件下载 编辑:程序博客网 时间:2024/05/17 17:41
1.Cookie是干嘛的?
由于HTTP请求是无状态的,每次请求和响应和上次请求和响应没有太多关系。但是,有些时候我们需要记住上次会话的一些信息。
这就用到了Cookie技术。Cookie是服务器把信息保存在客户端的一种技术。
2. Cookie怎么用?
(1)发送到浏览器端:
Cookie cookie=new Cookie("name","value");
response.addCookie(cookie);
(2) 浏览器发送到服务器
//获得cookie数据
Cookie[] cookies=request.getCookies();
//遍历需要的cookie
if(cookies!=null && cookikes.length>0){
for(Cookie c : cookies){
if (c.getName().equals("user") ){
system.out.println(c.getValue());
} } }
3. 原理:
(1)让浏览器端保存cookie,是服务器向浏览器发送一个键值对的response 响应头
set-Cookie : user=Tom
(2) 浏览器把cookie带到服务器是向服务器发送一个请求头
Cookie: user=Tom
4.简单例子:浏览历史。
JSP中:
<body>
<a href="<%=request.getContextPath() %>/CServlet?name=Dell">Dell</a><br/>
<a href="<%=request.getContextPath() %>/CServlet?name=Lenovo">Lenovo</a><br/>
<a href="<%=request.getContextPath() %>/CServlet?name=Acer">Acer</a><br/>
<a href="<%=request.getContextPath() %>/CServlet?name=Hupo">Hupo</a><br/>
<a href="<%=request.getContextPath() %>/CServlet?name=Apple">Apple</a><br/>
浏览历史:
<%=request.getAttribute("history") %>
</body>
Servlet中:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//1获得当前访问的品牌
String current=request.getParameter("name");
//2获得之前访问的品牌 (cookie)
Cookie history=null;
Cookie[] cookies=request.getCookies();
for(Cookie c:cookies){
if(c.getName().equals("history")){
history=c;
}
}
//3 强当前访问的加上之前访问的,创建一个新的cookie
String value="";
if(history!=null){
if(history.getValue().contains(current)){
value=history.getValue();
}else{
value=history.getValue()+","+current;
}
}
else{//第一次访问的时候,history为“”;
history.setValue(current);
}
Cookie newHistory = new Cookie("history",value);
//4将cookie添加到响应中
response.addCookie(newHistory);
//5强商品记录添加到request中
request.setAttribute("history", value);
//6转发到jsp页面中
request.getRequestDispatcher("/List.jsp").forward(request, response);//转发过去
}
5. Cookie 细节
Cookie的生命周期,即Cookie在浏览器端创建到Cookie销毁的周期。
可以通过函数设定Cookie在浏览器端的存活时间。
cookie.setMaxAge(60*60*24); //设置时间为一天。
默认情况下,创建Cookie不设置时间的话,相当于 cookie.setMaxAge(-1); 相当于关闭浏览器的时候销毁Cookie。
cookie.setMaxAge(0); 是立即销毁Cookie。
6.例子,记住用户名。
JSP端:
<form action="/cookies/DServlet" method="post">
用户名: <input type="text" name="username" value=<%=remeber==null?"":remeber.getValue()%>/><br/>
密 码: <input type="password" name="pwd"/><br/>
记住用户名 <input type="checkbox" value="yes" name="remeber"/>
<input type="submit" value="登陸 "/><br/>
</form>
<%
//1 获得所有cookie
Cookie[] cookies=request.getCookies();
Cookie remeber=null;
for(Cookie c:cookies){ //2遍历得到索要的cookie
if(c!=null&&c.getValue().length()>0){
//不为空就取出值 输出到username 那里
if(c.getName().equals("remeber"))
{
remeber=c;
}
}
}
%>
Servlet端:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//1 获得用户名
String usernameString=request.getParameter("username");
String pwd=request.getParameter("pwd");
//2 获得是否记住用户名
String flag=request.getParameter("remeber");
// 1)记住 设置cookie 2)不记住,销毁cookie
Cookie cookie=new Cookie("remeber", usernameString);
if(flag!=null&&flag=="yes"){
cookie.setMaxAge(60*60*24*7);
}
else{
cookie.setMaxAge(0);
}//3将cookie添加到respons
response.addCookie(cookie);
request.getRequestDispatcher("/success.jsp").forward(request, response);//4转到成功页面
}
以上内容为本人的学习笔记。有不对之处望批评指正。
- JavaWeb中的Cookie
- javaWeb中的cookie
- javaweb中的cookie
- javaweb中的cookie技术
- javaweb中的cookie
- javaWeb中的Cookie
- JavaWEB中的Cookie
- javaweb中的cookie的应用
- Javaweb中的cookie与session
- JavaWeb之-------------网页中的Cookie技术
- JavaWeb开发中的会话技术[Cookie/Session]
- 【JavaWeb】Cookie
- JavaWeb Cookie
- javaWeb---cookie
- JavaWeb Cookie
- 【JavaWeb】cookie与session
- JavaWeb---Cookie的使用
- javaweb--Cookie&Session
- chapter1-5
- c#获取当前日期时间
- <蓝牙BLE>cc2541发现服务与特征值
- 小技巧2-MRC和ARC下防止Block循环引用
- Spring笔记啵-1
- javaWeb中的cookie
- 在UFT中使用描述性编程
- DFS--深度搜索
- 黑马程序员--网络编程
- 构建makefile文件
- 使用 ibatis 处理复杂对象数据关系的实例
- 64位环境下:Armadillo + VS2013
- 数据结构基础:栈和队列
- Android Studio中NDK开发