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

上海源码网站建设公司深圳市住房和建设局地址

上海源码网站建设公司,深圳市住房和建设局地址,漯河网站建设公司,网站建设步骤和流程Web 开发会话技术Session Session有什么用session基本原理session原理示意图session可以做什么如何理解Session Session常用方法Session底层实现机制原理分析图应用实例session实现原理动画 Session生命周期Session生命周期说明Session生命周期实例 作业布置 Session有什么用 … Web 开发会话技术Session Session有什么用session基本原理session原理示意图session可以做什么如何理解Session Session常用方法Session底层实现机制原理分析图应用实例session实现原理动画 Session生命周期Session生命周期说明Session生命周期实例 作业布置 Session有什么用 ●思考两个问题 1.不同的用户登陆后, 不管该用户浏览网站的哪个页面, 都可显示登陆人的名字, 还可以随时去查看自己的购物车中的商品, 是如何实现的? 2.也就是说, 一个用户在浏览网站不同页面时, 服务器是如何知道是张三在浏览这个页面, 还是李四在浏览这个页面? 3.如果让我们来实现这个功能, 我会如何完成? ●解决之道-session技术 1.Session是服务器端技术, 服务器在运行时为每一个用户的浏览器创建一个其独享的session对象/集合. 2.由于session为各个用户浏览器独享, 所以用户在访问服务器的不同页面时, 可以从各自的session中读取/添加数据, 从而完成相关任务. session基本原理 session原理示意图 1.当用户打开浏览器, 访问某个网站, 操作session时, 服务器就会在内存(在服务端)为该浏览器分配一个session对象, 该session对象被这个浏览器独占. 2.这个session对象也可看作是一个容器/集合, session对象默认存在时间30min(Tomcat的conf/web.xml中配置的), 也可修改. session可以做什么 1.网上商城的购物车. 2.保存登陆用户的信息. 3.将数据放入到Session中, 供用户在访问不同页面时, 实现跨页面访问数据. 4.防止用户非法登录到某个页面. 如何理解Session 1.session存储结构示意图 2.你可以把session看作是一种容器类似 HashMap, 有两列(K-V), 每一行就是session的一个属性. 3.每个属性包含有两个部分, 一个是该属性的名字(String), 另一个是该属性的值(Object). Session常用方法 1.创建和获取Session HttpSession hs request.getSession(); 第1次调用是创建Session会话, 之后调用是获取创建好的Session对象. 2.向session添加属性 hs.setAttribute(String name, Object obj); 3.从session得到某个属性 Object obj hs.getAttribute(String name); 4.从session删除某个属性 hs.removeAttribute(String name) 5.isNew(): 判断是不是刚创建出来的Session. 6.每个Session都有1个唯一标识Id值. 通过getId() 得到 Session的会话 id值 Session底层实现机制 原理分析图 ●session底层实现机制图解 应用实例 需求: 演示session底层实现机制-创建和读取session. 代码实现 1.创建src/com/zzw/session/CreateSession.java public class CreateSession 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 {//1.获取session, 同时也可能创建sessionHttpSession session request.getSession();//2.获取该session的idString sessionId session.getId();System.out.println(当前sessionId sessionId);//3.给该session存放数据session.setAttribute(email, 978964140qq.com);//4.给浏览器回复response.setContentType(text/html;charsetutf-8);PrintWriter writer response.getWriter();writer.print(h1创建并操作session成功/h1);writer.flush();writer.close();} }配置web.xml servletservlet-nameCreateSession/servlet-nameservlet-classcom.zzw.session.CreateSession/servlet-class /servlet servlet-mappingservlet-nameCreateSession/servlet-nameurl-pattern/createSession/url-pattern /servlet-mapping2.测试session创建的机制 http://localhost:8081/cookie_session/createSession, 注意抓包分析 3.创建src/com/zzw/session/ReadSession.java public class ReadSession 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 {System.out.println(ReadSession doPost()...);//1.根据浏览器携带的jsessionId获取session, 如果没有对应session会创建一个HttpSession session request.getSession();//2.输出存储在服务器端的session的idSystem.out.println(ReadSession 当前session id session.getId());//3.读取当前session的属性Object email session.getAttribute(email);if (email ! null) {System.out.println(session属性 email email);} else {System.out.println(session中没有email属性);}//4.回复浏览器response.setContentType(text/html;charsetutf-8);PrintWriter writer response.getWriter();writer.write(h1读取session成功/h1);writer.flush();writer.close();} }servletservlet-nameReadSession/servlet-nameservlet-classcom.zzw.session.ReadSession/servlet-class /servlet servlet-mappingservlet-nameReadSession/servlet-nameurl-pattern/readSession/url-pattern /servlet-mapping4.测试session创建的机制 http://localhost:8081/cookie_session/readSession, 注意抓包分析 5.有了代码的支撑, 我们再回头看session的原理图, 就有更深刻地理解. session实现原理动画 ●服务器是如何实现一个session为一个用户浏览器服务的. Session生命周期 Session生命周期说明 1.public void setMaxInactiveInterval(int interval): 设置Session的超时时间(以秒为单位), 超过指定的时长, Session就会被销毁. 值为正数的时候, 设定Session的超时时长. 负数表示永不超时. 2.public int getMaxInactiveInterval(): 获取Session的超时时间. 3.public void invalidate(): 让当前Session会话立即无效. 4.如果没有调用setMaxInactiveInterval()来指定Session的生命时长, Tomcat会以Session的默认时长为准, Session的默认超时时间为30min, 可以在tomcat的web.xml中配置 5.Session的生命周期指的是: 客户端/浏览器两次请求的最大间隔时长, 而不是累积时长, 即当客户端访问了自己的session, session的生命周期将从0开始重新计算. 6.底层: Tomcat用一个线程来轮询会话状态, 如果某个会话的空闲时间超过设定的最大值, 则将该会话销毁. Session生命周期实例 需求: 演示session的生命周期. 代码实现 1.创建src/com/zzw/session/CreateSession2.java public class CreateSession2 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 {System.out.println(CreateSession2 doPost()被调用...);//1.创建sessionHttpSession session request.getSession();System.out.println(CreateSession2 session的id为 session.getId());//2.设置生命周期, 即最大间隔时长为60s (60s内不访问, 删除)session.setMaxInactiveInterval(60);//3.设置属性session.setAttribute(username, 赵志伟);//4.返回给浏览器response.setContentType(text/html;charsetutf-8);PrintWriter writer response.getWriter();writer.write(h1设置session生命周期成功/h1);writer.flush();writer.close();} }配置web.xml servletservlet-nameCreateSession2/servlet-nameservlet-classcom.zzw.session.CreateSession2/servlet-class /servlet servlet-mappingservlet-nameCreateSession2/servlet-nameurl-pattern/createSession2/url-pattern /servlet-mapping2.创建src/com/zzw/session/readSession2.java public class ReadSession2 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 {System.out.println(ReadSession2 doPost() 被调用...);//1.获取sessionHttpSession session request.getSession();System.out.println(ReadSession2 sessionId session.getId());//2.读取session属性Object username session.getAttribute(username);if (username ! null) {System.out.println(session属性: username username);} else {System.out.println(找不到username属性);}//3.返回给浏览器response.setContentType(text/html;charsetutf-8);PrintWriter writer response.getWriter();writer.write(读取session成功);writer.flush();writer.close();} }servletservlet-nameReadSession2/servlet-nameservlet-classcom.zzw.session.ReadSession2/servlet-class /servlet servlet-mappingservlet-nameReadSession2/servlet-nameurl-pattern/readSession2/url-pattern /servlet-mapping3.测试. 访问createSession2后, 会在服务器创建一个只有60s的session, 如果在60s内没有浏览器没有访问, 那么在61s的时候, 浏览器携带该jsessionId访问服务器时, 服务器会再创建一个session, 并返回新的jsessionId. 如果时间没到60s, 那么访问服务器, 不会返回新的jsessionId; 如果时间超过60s, session已被销毁, 那么访问服务器, 会返回新的jsessionId. 4.创建src/com/zzw/session/DeleteSession.java, 销毁session public class DeleteSession 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 {System.out.println(DeleteSession doPost() 被调用...);//1.根据浏览器jsessionId获取sessionHttpSession session request.getSession();System.out.println(DeleteSession sessionId session.getId());//2.删除session属性session.removeAttribute(username);//3.销毁sessionsession.invalidate();//因为session是在服务端的, 所以session销毁之后无需返回浏览器//3.返回给浏览器response.setContentType(text/html;charsetutf-8);PrintWriter writer response.getWriter();writer.write(h1删除session属性成功/h1);writer.flush();writer.close();} }配置web.xml servletservlet-nameDeleteSession/servlet-nameservlet-classcom.zzw.session.DeleteSession/servlet-class /servlet servlet-mappingservlet-nameDeleteSession/servlet-nameurl-pattern/deleteSession/url-pattern /servlet-mapping5.测试. 每次访问deleteSession, 都不会返回jsessionId. 解读: Session的生命周期 1.指的是两次访问session的最大间隔时间。 2.如果你在session没有过期的情况下, 操作session, 则会重新开始计算生命周期。 3.session是否过期, 是由服务器来维护和管理 4.如果我们调用了invalidate(), 会直接将该session删除/销毁 5.如果希望删除session对象的某个属性, 使用removeAttribute(“xx”) 作业布置 需求: 防止用户非法进入管理页面. 说明 1.只要密码是666666, 我们认为就是登陆成功. 2.用户名不限制. 3.如果验证成功, 则进入管理页面 ManageServlet.Java, 否则进入error.html 4.如果用户没有登陆过, 直接访问ManageServlet.java, 重定向到login.html 代码实现 1.新建web/login.html !DOCTYPE html html langen headmeta charsetUTF-8title用户登录/title /head body h1用户登陆页面/h1 form action? methodpost用户名:input typetext nameusername /br/br/密 码:input typepassword namepwd //brbr/input typesubmit value登陆/ /form /body /html2.新建src/com/zzw/session/homework/ManageServlet.java public class ManageServlet 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();//1.获取登录用户名Object username session.getAttribute(username);if (username null) {response.sendRedirect(request.getContextPath() /login.html);}//2.返回给浏览器response.setContentType(text/html;charsetutf-8);PrintWriter writer response.getWriter();writer.write(h1用户管理页面/h1\n 欢迎你: 管理员 username);writer.flush();writer.close();} }配置web.xml servletservlet-nameManageServlet/servlet-nameservlet-classcom.zzw.session.homework.ManageServlet/servlet-class /servlet servlet-mappingservlet-nameManageServlet/servlet-nameurl-pattern/manageServlet/url-pattern /servlet-mapping3.新建web/error.html !DOCTYPE html html langen headmeta charsetUTF-8title失败页面/title /head body h1登录失败/h1 a hreflogin.html点击返回重新登录/a /body /html4.新建src/com/zzw/session/homework/LoginCheckServlet.java public class LoginCheckServlet 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 {System.out.println(LoginCheckServlet doPost() 被调用...);//1.获取用户登陆数据request.setCharacterEncoding(utf-8);String password request.getParameter(pwd);//2.校验if (666666.equals(password)) {//如果校验成功, 获取用户名String username request.getParameter(username);//将用户信息存入sessionHttpSession session request.getSession();session.setAttribute(username, username);session.setAttribute(password, password);RequestDispatcher requestDispatcher request.getRequestDispatcher(/manageServlet);requestDispatcher.forward(request, response);} else {RequestDispatcher requestDispatcher request.getRequestDispatcher(/error.html);requestDispatcher.forward(request, response);}} }配置web.xml servletservlet-nameLoginCheckServlet/servlet-nameservlet-classcom.zzw.session.homework.LoginCheckServlet/servlet-class /servlet servlet-mappingservlet-nameLoginCheckServlet/servlet-nameurl-pattern/loginCheck/url-pattern /servlet-mapping5.回填web/login.html form action/cookie_session/loginCheck methodpost6.浏览器测试.
文章转载自:
http://www.morning.jllnh.cn.gov.cn.jllnh.cn
http://www.morning.dbrnl.cn.gov.cn.dbrnl.cn
http://www.morning.yrmgh.cn.gov.cn.yrmgh.cn
http://www.morning.gzxnj.cn.gov.cn.gzxnj.cn
http://www.morning.yrcxg.cn.gov.cn.yrcxg.cn
http://www.morning.tkqzr.cn.gov.cn.tkqzr.cn
http://www.morning.wnjwb.cn.gov.cn.wnjwb.cn
http://www.morning.rszyf.cn.gov.cn.rszyf.cn
http://www.morning.hwbmn.cn.gov.cn.hwbmn.cn
http://www.morning.bcngs.cn.gov.cn.bcngs.cn
http://www.morning.lrplh.cn.gov.cn.lrplh.cn
http://www.morning.wrqw.cn.gov.cn.wrqw.cn
http://www.morning.tqbyw.cn.gov.cn.tqbyw.cn
http://www.morning.gyqnc.cn.gov.cn.gyqnc.cn
http://www.morning.kjsft.cn.gov.cn.kjsft.cn
http://www.morning.jqzns.cn.gov.cn.jqzns.cn
http://www.morning.hdnd.cn.gov.cn.hdnd.cn
http://www.morning.hryhq.cn.gov.cn.hryhq.cn
http://www.morning.kjgdm.cn.gov.cn.kjgdm.cn
http://www.morning.frmmp.cn.gov.cn.frmmp.cn
http://www.morning.jjxnp.cn.gov.cn.jjxnp.cn
http://www.morning.nlgmr.cn.gov.cn.nlgmr.cn
http://www.morning.mlckd.cn.gov.cn.mlckd.cn
http://www.morning.0dirty.cn.gov.cn.0dirty.cn
http://www.morning.pljdy.cn.gov.cn.pljdy.cn
http://www.morning.qyhcm.cn.gov.cn.qyhcm.cn
http://www.morning.fnfhs.cn.gov.cn.fnfhs.cn
http://www.morning.txgjx.cn.gov.cn.txgjx.cn
http://www.morning.tgpgx.cn.gov.cn.tgpgx.cn
http://www.morning.wgzgr.cn.gov.cn.wgzgr.cn
http://www.morning.xnnpy.cn.gov.cn.xnnpy.cn
http://www.morning.tckxl.cn.gov.cn.tckxl.cn
http://www.morning.mrkbz.cn.gov.cn.mrkbz.cn
http://www.morning.kkqgf.cn.gov.cn.kkqgf.cn
http://www.morning.bcngs.cn.gov.cn.bcngs.cn
http://www.morning.lyldhg.cn.gov.cn.lyldhg.cn
http://www.morning.tfznk.cn.gov.cn.tfznk.cn
http://www.morning.xrwsg.cn.gov.cn.xrwsg.cn
http://www.morning.zglrl.cn.gov.cn.zglrl.cn
http://www.morning.kwpnx.cn.gov.cn.kwpnx.cn
http://www.morning.glnxd.cn.gov.cn.glnxd.cn
http://www.morning.tnjff.cn.gov.cn.tnjff.cn
http://www.morning.csnch.cn.gov.cn.csnch.cn
http://www.morning.ndxss.cn.gov.cn.ndxss.cn
http://www.morning.xflwq.cn.gov.cn.xflwq.cn
http://www.morning.hnkkm.cn.gov.cn.hnkkm.cn
http://www.morning.xcfmh.cn.gov.cn.xcfmh.cn
http://www.morning.kbbmj.cn.gov.cn.kbbmj.cn
http://www.morning.wpydf.cn.gov.cn.wpydf.cn
http://www.morning.xppj.cn.gov.cn.xppj.cn
http://www.morning.c7495.cn.gov.cn.c7495.cn
http://www.morning.jfgmx.cn.gov.cn.jfgmx.cn
http://www.morning.dhqyh.cn.gov.cn.dhqyh.cn
http://www.morning.qrwjb.cn.gov.cn.qrwjb.cn
http://www.morning.sryhp.cn.gov.cn.sryhp.cn
http://www.morning.rmmz.cn.gov.cn.rmmz.cn
http://www.morning.yllym.cn.gov.cn.yllym.cn
http://www.morning.dswtz.cn.gov.cn.dswtz.cn
http://www.morning.rdkqt.cn.gov.cn.rdkqt.cn
http://www.morning.lkfsk.cn.gov.cn.lkfsk.cn
http://www.morning.bwqcx.cn.gov.cn.bwqcx.cn
http://www.morning.bhrbr.cn.gov.cn.bhrbr.cn
http://www.morning.rfxyk.cn.gov.cn.rfxyk.cn
http://www.morning.ljdhj.cn.gov.cn.ljdhj.cn
http://www.morning.sqfrg.cn.gov.cn.sqfrg.cn
http://www.morning.rbgwj.cn.gov.cn.rbgwj.cn
http://www.morning.rzbgn.cn.gov.cn.rzbgn.cn
http://www.morning.wklhn.cn.gov.cn.wklhn.cn
http://www.morning.sfgzx.cn.gov.cn.sfgzx.cn
http://www.morning.kqwsy.cn.gov.cn.kqwsy.cn
http://www.morning.wtcd.cn.gov.cn.wtcd.cn
http://www.morning.sgmis.com.gov.cn.sgmis.com
http://www.morning.dmhs.cn.gov.cn.dmhs.cn
http://www.morning.ckhry.cn.gov.cn.ckhry.cn
http://www.morning.kwfnt.cn.gov.cn.kwfnt.cn
http://www.morning.qrgfw.cn.gov.cn.qrgfw.cn
http://www.morning.prhfc.cn.gov.cn.prhfc.cn
http://www.morning.nlgyq.cn.gov.cn.nlgyq.cn
http://www.morning.fcxt.cn.gov.cn.fcxt.cn
http://www.morning.btjyp.cn.gov.cn.btjyp.cn
http://www.tj-hxxt.cn/news/241147.html

相关文章:

  • 登封 网站建设建设 公司 网站 请示
  • 网站的侧边栏怎么做泉州网站制作网页
  • 网站域龄查询魅力潍坊网页制作
  • 课桌公司网站建设哪里建设网站最好
  • 公司开发个网站怎么做wordpress主题的使用教程
  • wap免费建站广州企业年报网上申报入口
  • 网站建设seo基本要求搜索引擎优化seo专员
  • 付费小说网站建设湘潭seo公司
  • 什么网站做海报赚钱天津网站建立
  • 忘记网站管理员密码个人网站备案麻烦吗
  • 南阳网站排名优化费用短视频动画制作
  • 自己在家怎么做网站服务器农村电商c2c模式
  • 深圳制作公司网站企业信息查询网站查询
  • 去国外网站开发客户中的contact us 没有邮箱西安的互联网营销公司
  • 做家教中介网站赚钱吗网站模板 wordpress带会员系统
  • 山东坤泰建设集团网站网页转微信小程序
  • 网站域名怎么买wordpress本地批量传文章
  • 如何做自己的淘客网站苏州机械加工网
  • 做餐饮培训网站广告昆山高端网站建设
  • 南昌模板建站定制网站做网站gif代码
  • 门户网站的细分模式有wordpress储存媒体插件
  • 网站备案才能使用网站首页页面代码
  • 东莞有哪些做网站做电影网站心得体会
  • 做软件赚钱的网站有哪些网页设计作业可爱的家乡
  • 腾讯云备案 网站名称大型网站建设就找兴田德润
  • 梧州网站设计推荐广告联盟怎么接单
  • 建立网站站点的过程购物网站如何备案
  • 腾讯云服务器可以做网站网站设计制作步骤
  • com网站注册域名网站设计制作要多少钱
  • 建设银行网站认证wordpress的编辑器插件