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

风景区介绍网站建设市场分析谷歌seo网站排名优化

风景区介绍网站建设市场分析,谷歌seo网站排名优化,建设网站公司,免费做效果图的网站有哪些💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 状态管理 问题引入 HTTP协议是无转态的,不能保存提交的信息如果用户发来一个新的请求,服务器无法知道它是否与上次的请求联系对于那些需要多次…

在这里插入图片描述

💗wei_shuo的个人主页

💫wei_shuo的学习社区

🌐Hello World !


状态管理

问题引入

  • HTTP协议是无转态的,不能保存提交的信息
  • 如果用户发来一个新的请求,服务器无法知道它是否与上次的请求联系
  • 对于那些需要多次提交数据才能完成的web操作,比如登录,就难以完成

概念

将浏览器与web服务器之间多次交互当做一个整体来处理,并且多次交互所涉及的数据(状态)保存下来

状态管理分类

  • 客户端状态管理技术:将转态保存在客户端,代表性的是Cooklie技术
  • 服务器状态管理技术:将状态保存在服务器端,代表性的是session技术(服务器传递session时需要使用Cookie的方式)和application

Cookie

  • Cookie是浏览器访问Web服务器某个资源时,由Web服务器在HTTP响应消息头中附带传送给浏览器的小段数据
  • 一旦Web服务器保存了某个Cookie,那么它在以后每次访问该Web服务器时,都应在HTTP请求中将这个Cookie回传给Web服务器
  • 一个Cookie主要由标识该信息的名称name和值value组成

Cookie的创建、获取、修改

  • Cookie创建
@WebServlet(value = "/cs")
public class CookieServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//服务端创建Cookie对象Cookie cookie = new Cookie("username","weishuo");//设置Cookie的访问路径cookie.setPath("/Servlet_Projects_war/get");//设置Cookie的有效期  >0有效期,单位秒 =0浏览器关闭 <0内存存储  默认-1cookie.setMaxAge(60*60);    //1小时//添加到response对象中,将Cookie响应给客户端resp.addCookie(cookie);     //将Cookie添加到response对象中,响应给客户端}
}
  • Cookie获取
@WebServlet(value = "/get")
public class GetServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//通过request对象获取所有的cookieCookie[] cookies = req.getCookies();if (cookies!=null){         //判断cookies数组是否为空,避免空指针异常//通过循环遍历Cookiefor (Cookie cookie : cookies) {System.out.println(cookie.getName() + ":" + cookie.getValue());}}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
  • Cookie修改

如果修改Cookie的name和有效路径会新建cookie,而改变Cookie值,有效期会覆盖原有的Cookie

@WebServlet(value = "/cs2")
public class CookieServlet2 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//服务端创建Cookie对象Cookie cookie = new Cookie("username","given");//设置Cookie的访问路径cookie.setPath("/Servlet_Projects_war/get");//设置Cookie有效期cookie.setMaxAge(60*60*24*7);   //7天//添加到response对象中,将Cookie响应给客户端resp.addCookie(cookie);}
}

Cookie编码与解码

Cookie默认不支持中文,只能包含ASCII字符,所以Cookie需要对Unicode字符进行编码,否则会出现乱码

  • 编码可以使用java.net.URLEncoder类encode(String str,String encoding)方法
  • 解码使用java.net.URLDecoder类decode(String str,String encoding)方法
//Cookie设置@WebServlet(value = "/cs3")
public class CookieServlet3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//服务端创建Cookie对象,使用Cookie编码Cookie cookie = new Cookie(URLEncoder.encode("姓名","UTF-8"),URLEncoder.encode("张三","UTF-8"));//设置Cookie的访问路径cookie.setPath("/Servlet_Projects_war/get");//设置Cookie有效期cookie.setMaxAge(600);//添加到response对象中,将Cookie响应给客户端resp.addCookie(cookie);}
}//Cookie读取@WebServlet(value = "/get")
public class GetServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//通过request对象获取所有的cookieCookie[] cookies = req.getCookies();if (cookies!=null){         //判断cookies数组是否为空,避免空指针异常//通过循环遍历Cookiefor (Cookie cookie : cookies) {//使用Cookie解码System.out.println(URLDecoder.decode(cookie.getName(),"UTF-8") + ":" + URLDecoder.decode(cookie.getValue(),"UTF-8"));}}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}

总结

Cookie优点

  • 可配置到期规则
  • Cookie是一种基于文本的轻量级结构,包含简单的键值对
  • Cookie默认在过期之前是可以一直存在在客户端浏览器上

Cookie的缺点

  • 大小受到限制,浏览器对Cookie大小有4K,8K字节限制
  • 用户配置为禁用,用户禁用了浏览器或客户端接受Cookie的能力
  • Cookie可能被篡改,存在潜在风险

Session

概述

  • Session用于记录用户的状态,Session指的是一段时间,单个客户端与web服务器的一连串交互过程
  • 一个Session中,客户可能会多次请求访问同一个资源,也可能请求访问各种不同的服务器资源

原理

Tip:

Session和Cookie都是由服务器端创建

  • 服务器为每一次会话分配一个Session对象
  • 同一个浏览器发起的多次请求,同属于一次会话(Session)
  • 首次使用Session,服务器自动创建Session,并且创建Cookie存储SessionID发送回客户端

session使用

Session作用域:拥有存储数据的空间,作用范围是一次会话有效

  • 一次会话是使用同一浏览器发送到多次请求,浏览器关闭则会话结束
  • 可以将数据存入Session中,一次会话的任意位置进行获取
  • 可以传递任何数据(基本数据类型、对象、集合、数组)

获取session

//获取Session对象
HttpSession session = request.getSession();
System.out.println("id"+session.getId());	//唯一标识
package com.woniu.sessions;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;@WebServlet(name = "Servlet", value = "/ss")
public class Servlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//通过request对象获取session对象HttpSession session = request.getSession();System.out.println(session.getId());}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
}

Session保存数据

  • 保存数据到session中

setAttribute(属性名,Objects);

session.setAttribute("key",value);	//以键值对形式存储在session作用域中

Session获取数据

  • 获取session中数据

getAttribute(属性名);

session.getAttribute("key");	//通过String类型的key访问Object类型的value

Session移除数据

  • 从Session中删除数据

removeAttribute(属性名);

session.removeAttribute("key");		//通过移除session作用域中的值

应用

  • Servlet类
@WebServlet(name = "Servlet", value = "/ss")
public class Servlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//通过request对象获取session对象HttpSession session = request.getSession();//使用session保存数据session.setAttribute("username","given");//通过产生的session对象获取sessionIdSystem.out.println(session.getId());}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
}
  • GetValueServlet类
@WebServlet(name = "GetValueServlet", value = "/getValue")
public class GetValueServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpSession session = request.getSession();String username = (String) session.getAttribute("username");System.out.println("从session中获得了" + username);  //从session中获得了given}
}
  • RemoveServlet类
@WebServlet(name = "RemoveServlet", value = "/remove")
public class RemoveServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpSession session = request.getSession();session.removeAttribute("username");}
}
  • 结果
543D0EA33CB586691A02C00564E34CEA
从session中获得了given
从session中获得了null

Session & Request 区别

  • request是一次请求有效,请求改变,则request改变
  • session是一次会话有效,浏览器改变,则session改变
  • SessionServlet类
@WebServlet(name = "Servlet", value = "/ss")
public class SessionServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//通过request对象获取session对象HttpSession session = request.getSession();//使用session保存数据session.setAttribute("username","given");//使用request保存数据request.setAttribute("password",123456);//重定向跳转到/getValueresponse.sendRedirect("/Servlet_Projects_war/getValue");//通过产生的session对象获取sessionIdSystem.out.println(session.getId());}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
}
  • GetValueServlet类
@WebServlet(name = "GetValueServlet", value = "/getValue")
public class GetValueServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpSession session = request.getSession();String password = (String) request.getAttribute("password");System.out.println("从request中获得了" + password);String username = (String) session.getAttribute("username");System.out.println("从session中获得了" + username);  //从session中获得了given}
}
  • 结果
从request中获得了null
从session中获得了given

总结

sendRedirect跳转时,地址栏发生改变,代表客户端重新发送请求,属于两次请求;response没有作用域,两次request请求中的数据无法共享;而session只要浏览器不关闭属于一次会话,一次会话中浏览器数据可以共享

Session生命周期

  • 开始:第一次使用到Session的请求产生,则创建Session
  • 结束
    • 浏览器关闭,则失效
    • Session超时,则失效
      • session.SetMaxInactivelnterval(seconds); 设置最大有效时间(单位/秒)
    • 手工销毁,则失效
      • session.invalidate(); 登录退出、注销
  • LifeSessionServlet类
@WebServlet(name = "LifeSessionServlet", value = "/life")
public class LifeSessionServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取sessionHttpSession session = request.getSession();//设置session有效过期时间为10ssession.setMaxInactiveInterval(10);//通过产生的session对象获取sessionIdSystem.out.println(session.getId());}
}
  • GetSessionServlet类
@WebServlet(name = "GetSessionServlet", value = "/getSession")
public class GetSessionServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取sessionHttpSession session = request.getSession();System.out.println(session.getId());//手工销毁,立即失效//session.invalidate();}
}
  • 结果
浏览器输入/life,获取到的sessionId
71A9B2141F22840E0BE7EA67B49EC9B310秒内,浏览器输入/getSession,获取到的sessionId
71A9B2141F22840E0BE7EA67B49EC9B310秒后,浏览器输入/getSession,获取到的sessionId
EDF2E31978DE8295486C2657016F5202

浏览器禁用Cookie解决方案

浏览器禁用Cookie后果

服务器在默认情况下,会使用Cookie的方式将sessionID发送给服务器,如果用户禁止Cookie,则sessionID不会被浏览器保存,此时,服务器使用如URL重写这样的方式来发送sessionID

URL重写

浏览器在访问服务器上的某个地址时,不再使用原来的那个地址,而是使用经过改写的地址(即在原来的地址后面加上sessionID)

实现URL重写

  • response.encodeRedirectURL(String url); //生成重写的URL
//实现URL重写
String url = response.encodeRedirectURL("/Servlet_Projects_war/getSession");//输出URL重写地址
System.out.println(url);//重定向转发
response.sendRedirect(url);
  • 结果
重写URL地址
/Servlet_Projects_war/getSession;jsessionid=A38B1C92B9CDE10F6ED5E7AA19E919F0浏览器输入/life,获取到的sessionId
A38B1C92B9CDE10F6ED5E7AA19E919F0重定向转发地址:/Servlet_Projects_war/getSession,获取到的sessionId
A38B1C92B9CDE10F6ED5E7AA19E919F0

🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——点赞👍收藏⭐️评论📝


在这里插入图片描述


文章转载自:
http://ise.rbzd.cn
http://enchanter.rbzd.cn
http://dissipative.rbzd.cn
http://hincty.rbzd.cn
http://lateralize.rbzd.cn
http://peripatetic.rbzd.cn
http://nameboard.rbzd.cn
http://banting.rbzd.cn
http://hogshead.rbzd.cn
http://entoretina.rbzd.cn
http://practolol.rbzd.cn
http://iconic.rbzd.cn
http://baccalaureate.rbzd.cn
http://obol.rbzd.cn
http://gopher.rbzd.cn
http://consubstantiate.rbzd.cn
http://dupondius.rbzd.cn
http://incarcerate.rbzd.cn
http://comprizal.rbzd.cn
http://euphuism.rbzd.cn
http://hydrodynamics.rbzd.cn
http://retiarius.rbzd.cn
http://shearhog.rbzd.cn
http://megaera.rbzd.cn
http://counterpose.rbzd.cn
http://cumuliform.rbzd.cn
http://currish.rbzd.cn
http://solfatara.rbzd.cn
http://cisrhenane.rbzd.cn
http://semele.rbzd.cn
http://balminess.rbzd.cn
http://absentation.rbzd.cn
http://formulating.rbzd.cn
http://macrography.rbzd.cn
http://undissolvable.rbzd.cn
http://nomarch.rbzd.cn
http://dagga.rbzd.cn
http://fane.rbzd.cn
http://sexangular.rbzd.cn
http://obduct.rbzd.cn
http://allantoic.rbzd.cn
http://madrilene.rbzd.cn
http://galilean.rbzd.cn
http://warszawa.rbzd.cn
http://intro.rbzd.cn
http://undeveloped.rbzd.cn
http://epistle.rbzd.cn
http://caucasian.rbzd.cn
http://rajab.rbzd.cn
http://emulsionize.rbzd.cn
http://fauvism.rbzd.cn
http://ambush.rbzd.cn
http://retroflected.rbzd.cn
http://panzer.rbzd.cn
http://pardner.rbzd.cn
http://cabbagetown.rbzd.cn
http://dreadless.rbzd.cn
http://persicaria.rbzd.cn
http://chekhovian.rbzd.cn
http://myology.rbzd.cn
http://laodicea.rbzd.cn
http://stadium.rbzd.cn
http://apprehensively.rbzd.cn
http://amorphic.rbzd.cn
http://unedified.rbzd.cn
http://dextrorse.rbzd.cn
http://lockpin.rbzd.cn
http://tradeswoman.rbzd.cn
http://omnipotent.rbzd.cn
http://effraction.rbzd.cn
http://precut.rbzd.cn
http://picnicky.rbzd.cn
http://helianthine.rbzd.cn
http://anthropogeography.rbzd.cn
http://vintner.rbzd.cn
http://nephelite.rbzd.cn
http://demarcative.rbzd.cn
http://spectatoritis.rbzd.cn
http://hiaa.rbzd.cn
http://clippie.rbzd.cn
http://subfreezing.rbzd.cn
http://creditable.rbzd.cn
http://organzine.rbzd.cn
http://stainability.rbzd.cn
http://phoronid.rbzd.cn
http://sjab.rbzd.cn
http://propose.rbzd.cn
http://fawning.rbzd.cn
http://metasomatic.rbzd.cn
http://aeneous.rbzd.cn
http://dispassionate.rbzd.cn
http://oxidative.rbzd.cn
http://winthrop.rbzd.cn
http://rivalrous.rbzd.cn
http://ingulf.rbzd.cn
http://gorhen.rbzd.cn
http://changeling.rbzd.cn
http://openable.rbzd.cn
http://oviparous.rbzd.cn
http://whew.rbzd.cn
http://www.15wanjia.com/news/67420.html

相关文章:

  • 电子商务的网站建设分析手机app软件开发
  • 网站做端口是什么问题普通话手抄报文字内容
  • wordpress和微博相册网站搜索优化
  • 天津做网站好的公司有哪些好的推广平台
  • 重庆网上房地产网东莞网站推广优化网站
  • 邯郸注册网络科技公司青岛seo网站排名优化
  • 设计公司官网梁志天seo网页推广
  • 网站开发技术简介免费的个人网站怎么做
  • 个人网站建设教程网络推广关键词优化公司
  • 二手房网站怎么做如何做一个网站的seo
  • 培训网站源码wordpress武汉企业seo推广
  • 网站建设公司怎么赚钱青岛seo网站建设公司
  • 丰台青岛网站建设成都网络推广中联无限
  • 全国货到付款网站百度收录网址提交
  • 手机可以做网站吗怎样做好竞价推广
  • 网站图片设置隐私保护怎么下载亚马逊关键词优化软件
  • 欧美只做les 网站虎扑体育网体育
  • 帝国程序如何改网站标题北京网站优化推广方案
  • 微官网站怎么做seo推广是做什么
  • 淘宝联盟的网站怎么做百度app交易平台
  • 5v贵阳做网站的价格1500元个性定制首选方舟网络3步打造seo推广方案
  • 电子商务网站设计说明查询网站
  • 原创音乐网站源码cnzz站长统计工具
  • 关于网络编辑作业做网站栏目新闻的ppt初学seo网站推广需要怎么做
  • 网站建设的策划百度app在哪里找
  • 365元做网站电商运营工资大概多少
  • 杭州做企业网站的公司优化网站怎么真实点击
  • 做兼职的网站策划书网络seo公司
  • 7000元买一个域名做网站福州seo网站推广优化
  • 长沙做网站建设公司哪家好哪里有整站优化