当前位置: 首页 > news >正文

金华市建设银行网站沈阳建设工程交易网官网

金华市建设银行网站,沈阳建设工程交易网官网,时事新闻热点,没有网站可以做cpa目录 引言 1.Cookie中的数据从哪来数据长啥样#xff1f; 2.Cookie有什么作用#xff1f; 3.cookie与session的工作关联#xff1f; 4.Cookie到哪去#xff1f; 5.Cookie如何存#xff1f; 6.Session 7.Cookie与Session的关联与区别 8.通过代码理解 8.1 相关代码 8.2… 目录 引言  1.Cookie中的数据从哪来数据长啥样 2.Cookie有什么作用 3.cookie与session的工作关联 4.Cookie到哪去  5.Cookie如何存  6.Session   7.Cookie与Session的关联与区别 8.通过代码理解  8.1 相关代码 8.2 观察现象 8.3 总结  9.Cookie结合Session 实现登录效果 1.前端代码简易版界面 2.后端  3.现象  4.小结 get和post的区别在这里有介绍  引言  Cookie是浏览器提供的持久化存储数据的机制 1.Cookie中的数据从哪来数据长啥样 cookie 是从服务器返回给浏览器的是由程序员代码自定义的键值对结构数据。要在浏览器cookie中保存哪些数据,通过http响应的Set-Cookie字段把键值对写回去 2.Cookie有什么作用 Cookie在浏览器中存储临时数据 最典型的应用:存储“身份标识”. 3.cookie与session的工作关联 此处的身份标识sessionId就涉及到cookie和session的梦幻联动。 cookie是浏览器存储数据session是服务器存储数据存储用户的详细信息同时给用户分配一个sessionId,此时服务器就把sessionId返回给浏览器后续再访问浏览器中的页面时就会在请求上自动带上我们的sessionId进一步服务器就知道哪个用户在操作了。 4.Cookie到哪去  Cookie中的内容会在下次访问该网站的时候自动带到http请求中。 5.Cookie如何存  cookie存储在浏览器所在的硬盘往往会存在超时时间中浏览器按照不同的域名分别存储cookie,域名和域名之间的cookie不同相互干扰。 cookie在浏览器存储的目的是后续访问服务器的时候,通过请求的header将cookie发送给服务器 作用:因为服务器是同时服务多个客户端的,客户端需要借助cookie来告诉服务器当前提供的服务到哪个环节了,服务器也可以通过cookie识别该客户端 6.Session  上述服务器生成了一些键值对结构数据,就是session(会话) 生成的唯一的身份序号叫做sessionid,也就是key,value就是记录的身份信息 具体流程: 用户登陆时,服务器在session中添加一个key-value记录,并且将key通过setCookie返回给客户端,客户端存储了cookie信息 客户端后续再发请求到服务器的时候,会通过http的header携带cookie信息 服务器收到请求之后,根据根据请求中的sessionid/token 在s ession 信息中获取到对应的用户信息 ,再决定后续的操作.   7.Cookie与Session的关联与区别 Cookie和Session也是常用的跟踪用户身份和状态管理的机制。它们之间的关联与区别如下 关联 在使用Session时通常会在客户端保存一个名为JSESSIONID的Cookie用于标识用户会话。服务器根据JSESSIONID从存储Session的位置如内存或数据库中获取对应的数据。 区别 存储位置在Java中HttpSession接口提供了对Session的访问和管理Session对象默认存储在服务器端而Cookie存储在客户端。数据容量Cookie每个域名下的浏览器对数量和大小都有限制而Session相对可以存储更多的数据。生命周期Cookie可以设置过期时间可以是临时的或长期有效的而Session一般在会话结束后自动销毁也可以手动设置过期时间。安全性由于存储在客户端Cookie存在被篡改和盗用的风险可以通过设置属性增加安全性而Session存储在服务器端相对更安全。跨域支持Cookie默认情况下只能在同一域内共享可以通过设置domain属性实现跨域共享而Session不受域的限制可以在不同域之间共享。 在Java Web开发中通常会使用Servlet API提供的HttpSession对象来管理Session。在登录认证成功后服务器会创建一个唯一的JSESSIONID并将相关的用户信息存储在HttpSession对象中然后将JSESSIONID以Cookie的方式发送给客户端保存。客户端在后续的请求中会携带该Cookie服务器通过解析Cookie中的JSESSIONID来获取对应的HttpSession对象从而实现用户身份的认证和状态的保持。 8.通过代码理解  8.1 相关代码 import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;WebServlet(/getcookie) public class GetCookieServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取到这次请求的cookieCookie[] cookiesreq.getCookies();if(cookies!null){for(Cookie cookie:cookies){System.out.println(cookie.getName() cookie.getValue());}}else{System.out.println( 请求中没有cookie);}//这里的if else 判断是在网页访问过程500提示码提示的resp.getWriter().write(ok);} }import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;/*** Created with IntelliJ IDEA.* Description:* User: 86180* Date: 2023-10-04* Time: 23:20*/ WebServlet(/setcookie) public class SetCookieServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//想通过这个方法把自定义的数据返回到浏览器Cookie cookienew Cookie(data,2023-09-23);Cookie cookie1new Cookie(time,09:48);resp.addCookie(cookie);resp.addCookie(cookie1);resp.getWriter().write(setCookie ok);} }在pom.xml中从maven仓库https://mvnrepository.com/?__cf_chl_rt_tkptb7mN.OmXB2Pdf.tn5HNQSGzovAURAXJ95hEAo9vIA-1696475447-0-gaNycGzNDTs导入servlet和Jackson的对应依赖 8.2 观察现象 通过fiddler抓包就可以看出访问setcookie请求的时候代码中就会构造cookie放在响应中 进一步就返回到我们的浏览器中后续再发请求的时候我们的cookie就会在请求中 这时2我们通过getcookie去获取就可以再idea服务器中看到相应的cookie 8.3 总结  cookie从服务器来服务器调用相应的api,就可以给api添加setcookie字段setcookie字段里面就是我们自定义的键值对浏览器收到这些键值对就会把这些键值对保存在浏览器本地后续再给网站发送请求就可以把cookie带到header里面  9.Cookie结合Session 实现登录效果 每个用户都应该有自己的sessionsession在服务器中存在很多份每个服务器同时会有很多session所以服务器会使用map来组织多个session就像是一个MapString,Object 1.前端代码简易版界面 !DOCTYPE htmlhtml langenheadmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0title登录/title/headbodyform actionloginmethodpostinput typetext nameusernameinput typepassword namepasswordinput typesubmit value登录/form/body/html 在idea重启服务器后 2.后端  loginServlet(整体登录背后的逻辑成功登录后跳转)和IndexServlet(通过这个网页生成一个servlet) /**getSession背后做的事情*1.先读取请求中的cookie,看cookie中是否有JSESSIONID属性以及值是啥* 如果没有就认为需要创建新的会话* 如果有就拿着这个id去查询看看当前的session是否存在* 要是session存在就直接返回该session* 要是session不存在就创建新的会话*2.当前确实需要创建会话就会出安检处一个session对象同时生成一个唯一的JSESSIONID.* 以JSESSIONID为key,Session对象为value,把这个键值对给插入到服务器的哈希表中。*3.刚才生成的JSESSIONID又会通过addCookie方法加入到 响应 中* 此事响应就会带有Set-Cookie字段,这里的值就是JSESSIONID***** 通过响应就把JsessionID返回到浏览器** **/import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException;WebServlet(/login) public class loginServlet extends HttpServlet {Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.先使用getParameter获取到username,password的值String username req.getParameter(username);String password req.getParameter(password);//验证信息是否正确//正常用数据库保存,这里写死//2.验证合法:zhangsan 123456if(!username.equals(zhangsan)){//失败//重定向登录页System.out.println(用户名错误);resp.sendRedirect(login.html);return;/**如果你想在登陆页面也显示出内容就是如果错误就在页面显示用户名错误* 就getWriter.write()* resp.setContentType(text/html;charset utf8);* resp.getWriter().write(用户名错误);* 这边未注释的代码是显示到服务器端在我们idea上就可以看见* */}if(!password.equals(123456)){//失败System.out.println(密码错误);resp.sendRedirect(login.html);return;}//成功//3.创建会话HttpSession session req.getSession(true);//getSission(true);是拿着sessionId查一下哈希表,//如果sessionId不存在.或者没查到,就创建新会话插入到哈希表// 查到了就返回查到的结果//如何创建?//1.构造HttpSession对象//2.构造唯一的sessionId//3.把这个键值对插入哈希表//4.把sessionId设置到响应报文Set-Cookie字段//将用户信息保存到session对象中,保存一些自定义数据session.setAttribute(username,username);session.setAttribute(time,System.currentTimeMillis());//4.重定向到主页resp.sendRedirect(index);} }写死//合法:zhangsan 12345if(!username.equals(zhangsan)){//失败//重定向登录页System.out.println(用户名错误);resp.sendRedirect(login.html);return;/**如果你想在登陆页面也显示出内容就是如果错误就在页面显示用户名错误* 就getWriter.write()* resp.setContentType(text/html;charset utf8);* resp.getWriter().write(用户名错误);* 这边未注释的代码是显示到服务器端在我们idea上就可以看见* */}if(!password.equals(123456)){//失败System.out.println(密码错误);resp.sendRedirect(login.html);return;}//成功//创建会话HttpSession session req.getSession(true);//getSission(true);是拿着sessionId查一下哈希表,//如果sessionId不存在.或者没查到,就创建新会话插入到哈希表// 查到了就返回查到的结果//如何创建?//1.构造HttpSession对象//2.构造唯一的sessionId//3.把这个键值对插入哈希表//4.把sessionId设置到响应报文Set-Cookie字段//将用户信息保存到session对象中,保存一些自定义数据session.setAttribute(username,username);session.setAttribute(time,System.currentTimeMillis());//重定向到主页resp.sendRedirect(index);} } /*** Created with IntelliJ IDEA.* Description:* User: 86180* Date: 2023-10-05* Time: 18:05*/import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; //通过这个网页生成一个servlet WebServlet(/index) public class IndexServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.先判定用户登陆状态//若没登陆.先登录//若登录,根据绘画用户名信息,显示到页面上HttpSession session req.getSession(false);//不会触发会话创建if(sessionnull){System.out.println(用户未登录);resp.sendRedirect(login.html);return;}//2.登陆成功了取出之前的attributeString username (String) session.getAttribute(username);Long time(Long)session.getAttribute(time);System.out.println(usernameusernametimetime);//执行到这里,session和post中的是一个对象//根据同一个sessionid对应到的对象//3.根据这样的内容构造出一个页面resp.setContentType(text/html;charset utf8);resp.getWriter().write(欢迎您 username!上次登录时间time);} } 3.现象 登陆成功后效果登陆失败会在服务器端显示如果想在页面也显示出来可以在loginServlet中对应位置代码中加上 resp.setContentType(text/html;charset utf8); resp.getWriter().write(*****); 通过 session.setAttribute(username,username);也将用户名保存了进去。 4.小结 当前这个程序就涉及到三个部分进行联动~ 1登陆页面静态的 html 使用 form 构造 http 请求 2. LoginServlet ( doPost 处理登陆的逻辑流程1234) 3. IndexServlet ( doGet 处理主页的生成 get和post的区别在这里有介绍  【http协议与tomcat - CSDN App】http://t.csdnimg.cn/s9K09
http://www.tj-hxxt.cn/news/218192.html

相关文章:

  • 闵行做网站建设c 网站开发的好处
  • 外国做ppt的网站建设部网站监理公告
  • 设计师在线网站坪山网站建设要多少钱
  • 西安高科鱼化建设有限公司网站网页设计阶段
  • 普象工业设计网站佛山新网站建设代理商
  • 做网站徐州品牌推广策略有哪些
  • 做网站服务器软文写作范例大全
  • 广州建设厅官方网站wordpress post fonts
  • 苏州网站制作公司排名机械建设网站制作
  • 杨浦网站建设 网站外包打开百度一下网页版
  • 上海网站推广有哪些wordpress 更改模板路径
  • 中国建设报官方网站怎么做企业官网
  • 西安网站开发公司怎么选python制作的网站
  • 网站模板下载模板下载最新黑帽seo教程
  • 重庆手机网站方案设计中国网站排名前100
  • 程序员和网站建设wordpress写文章更新失败
  • 网站开发需要几个人亚马逊雨林十大恐怖动物
  • 什么是网站开发框架南宁企业自助建站系统
  • 做网站客户给不了素材一个人的网站建设
  • 深一网站建设招聘百度在线
  • 商标注册 网站建设如何入账网站建设公司江苏
  • 手机网站底部电话图片编辑软件
  • 最好的网站建设组织阳谷网站建设价格
  • 郑州手机网站制作公司赣州微网站建设费用
  • dw旅游网站怎么做柳市网
  • 网站广告图片在线制作wordpress移动导航菜单
  • 建设局网站更改法人所需材料百度推广公司地址
  • 婚纱摄影网站定制姑苏区最新通告
  • 先注册域名后建设网站可以吗青岛城阳网站开发
  • 青岛网站定制开发网站版权问题