您现在的位置是:主页 > news > 网站建站方式/关键词爱站网关键词挖掘工具
网站建站方式/关键词爱站网关键词挖掘工具
admin2025/5/9 20:40:00【news】
简介网站建站方式,关键词爱站网关键词挖掘工具,网站手机客户端在线制作,交友网站发展建设会话发展史 彻底理解cookie,session,token - 老刘的文章 - 知乎 https://zhuanlan.zhihu.com/p/63061864 为什么需要状态管理? Web应用程序使用的是Http协议,该协议是"无状态"协议,即同一用户发了两次请求,建立了两次连接,但是服务器无法判…
会话发展史
彻底理解cookie,session,token - 老刘的文章 - 知乎 https://zhuanlan.zhihu.com/p/63061864
为什么需要状态管理?
Web应用程序使用的是Http协议,该协议是"无状态"协议,即同一用户发了两次请求,建立了两次连接,但是服务器无法判断这两个请求是否是同一个人发出的,而我们的应用程序有时是需要判断是否为同一个客户发出的请求,比如客户多次选购商品,因此,有必要跟踪同一客户发出的一系列请求.
状态管理的两种常见模式
客户端状态管理技术:将状态保存在客户端,代表性的是Cookie技术.
服务器端状态管理技术:将状态保存在服务器端,代表性的是Session技术.
Cookie
浏览器向服务器发请求,服务器会将少量的数据以set-Cookie消息头的方式发送给浏览器,浏览器将这些数据保存起来,当浏览器再次访问服务器时,会将这些数据以Cookie消息头的方式发送给浏览器.
Cookie用法
直接看代码吧,注释表明用法
public class CookieServlet extends HttpServlet {protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//创建CookieCookie cookie =new Cookie("name", "zjc");//添加Cookie到response中response.addCookie(cookie);//读取CookieCookie[] cookies=request.getCookies();if(cookies!=null){for (Cookie ck : cookies) {if(ck.getName().equals("name")){System.out.println(ck.getValue());}}}else{System.out.println("没有Cookie信息");}//修改Cookieif(cookies!=null){for (Cookie ck : cookies) {if(ck.getName().equals("name")){//覆盖原来的value(zjc)ck.setValue("xiaocheng");//添加Cookie到response中response.addCookie(ck);}}}//设置Cookie保存时间,单位为秒//seconds > 0:保存在硬盘上的时间//seconds = 0:立即删除//seconds <0 :默认,保存在浏览器的内存中cookie.setMaxAge(10);//Cookie中文编码Cookie cookie2 =new Cookie("mingzi", URLEncoder.encode("张金程","UTF-8"));response.addCookie(cookie2);if(cookies!=null){for (Cookie ck : cookies) {if(ck.getName().equals("mingzi")){//解码System.out.println(URLDecoder.decode(ck.getValue(), "UTF-8"));}}}}
}
Session
浏览器访问服务器时,服务器会为每一个浏览器在服务器端的内存中创建一个Session对象,这个对象有个SessionId的属性,其值唯一,并以Cookie的方式发给浏览器,下次浏览器再访问服务器时,服务器就可以拿到这个SessionId,并根据这个SessionId找到Session对象.(这些过程都是服务器做的)
Session用法
直接看代码吧,注释表明用法
public class SessionServlet extends HttpServlet {protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获得Session对象HttpSession session=request.getSession();//绑定数据session.setAttribute("name", "zjc");//获得数据String name=(String)session.getAttribute("name");//移除数据session.removeAttribute("name");//删除Session对象session.invalidate();//修改Session对象的超时时间(一般是30分钟),时间过了就删除Session对象,单位为秒session.setMaxInactiveInterval(600);}
}