Java 会话技术 之cookie
会话技术Cookie&Session (记录这次会话中客户端的状态与数据
不登陆情况下,保存数据到本地)
一次会话:从打开浏览器访问某个站点,到关闭这个浏览器(关页面不算)
Cookie:数据存储在客户端本地,减少服务器端存储压力,客户端可清除
Session:将数据存储到服务器端,安全性相对好
Cookie技术(存放在客户端 内存/硬盘 不能是中文)
客户端 请求 加入购物车 手机
服务端 响应 set-cookie:goods-phone Cookie发送到客户端
客户端 请求 cookie:goods-phone 服务端接受Cookie
创建WEB05项目
src
com.oracle.demo01
CookieServlet.java
GetCookieServlet.java
AccessServlet.java
public class CookieServlet extends HttpServlet {//向客户端发送Cookie
public void doGet(...) throws ServletException, IOException {
//创建Cookie对象非中文
Cookie cookie=new Cookie("goods","vivophone");
//设置持久化时间,cookie信息存储在硬盘中,过期自动删除
//不设置持久化,cookie信息存储在内存中,浏览器关闭删除
cookie.setMaxAge(120);//设置Cookie持久化时间 120秒
//设置Cookie携带路径 只有这个路径携带cookie
//不写携带路径 产生该cookie的servlet的同级路径都携带
cookie.setPath("/WEB0005");//WEB0005下的都携带
//cookie.setPath("/");//服务器下的都携带
//将Cookie存储的信息发送到客户端
response.addCookie(cookie);
//删除客户端cookie用同名同路径持久化时间为0的cookie覆盖
Cookie cookie = new Cookie("goods","vivophone");//创建cookie
cookie.setPath("/WEB0005"); //设置携带路径(与删除的一致)
cookie.setMaxAge(0); //设置持久化时间
response.addCookie(cookie); //发送Cookie
}
public void doPost(...){doGet(request, response);}
}
public class GetCookieServlet extends HttpServlet {//获取客户端的Cookie
public void doGet(...) throws ServletException, IOException {
Cookie[] cookies=request.getCookies();//客户端所有Cookie数据
//通过Cookie的名称得到想要的Cookie值
if(cookies!=null){ //cookie不为空
for(Cookie cookie:cookies){ //遍历
String cookieName=cookie.getName(); //获得cookie名
if(cookieName.equals("goods")){
String cookievalue=cookie.getValue();//获得cookie值
System.out.println(cookieName+":"+cookievalue);
}
}
}
}
public void doPost(HttpServletRequest request, HttpServletResponseresponse) throws ServletException, IOException {
doGet(request, response);
}
}
public class AccessServlet extends HttpServlet {//记录上次访问时间
public void doGet(...) throws ServletException, IOException {
Date date=new Date(); //获取当前时间
SimpleDateFormat sdf= //时间格式
new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
String currentTime=sdf.format(date); //格式 时间 字符串
Cookie cookie=new Cookie("LastTime",currentTime);//创建Cookie
cookie.setMaxAge(60*10); //设置Cookie持久化时间
response.addCookie(cookie); //发送Cookie到客户端
Cookie[] cookies=request.getCookies();//客户端所有Cookie对象
String lastTime=null;
if(cookies!=null){
for(Cookie c:cookies){ //遍历所有Cookie
if(c.getName().equals("LastTime")){ //名为"LastTime"的
lastTime=c.getValue(); //值赋给lastTime
}
}
}
response.setContentType("text/html;charset=utf-8");//解决乱码
if(lastTime==null){response.getWriter().write("您是第一次访问");}
else{response.getWriter().write("您上次访问时间为:"+lastTime);}
}
public void doPost(...) {doGet(request, response);}
}