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

//不写携带路径 产生该cookieservlet的同级路径都携带

cookie.setPath("/WEB0005");//WEB0005下的都携带

//cookie.setPath("/");//服务器下的都携带

 

//Cookie存储的信息发送到客户端

response.addCookie(cookie);

 

//删除客户端cookie用同名同路径持久化时间为0cookie覆盖

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);}

}

 

posted @ 2019-01-18 09:24  博客张C  阅读(221)  评论(0编辑  收藏  举报