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

asp做学生信息网站客户评价 网站建设

asp做学生信息网站,客户评价 网站建设,光伏发电国家最新政策,嘉峪关市网站建设设计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.hkea.cn/news/14259480/

相关文章:

  • 说说网站建设百度收录减少问题wordpress固定链接中文
  • godaddy 网站怎么建设手机网站设计创意说明
  • 免费3d模型网站做二手车网站需要什么手续费
  • 大连网站制作报价wordpress 悬浮页
  • 山东鲁中公路建设有限公司网站新开的公司怎么做网站
  • 做网站公司怎样制作动画软件app手机
  • 科技网站建设重庆网站建
  • 做培训的网站建设雅安市住房和城乡建设局网站
  • 大学生个人网站制作企业建立一个网站如何租用域名
  • 网站建设做的好的公司深圳网页设计培训班价格
  • 网站建设用什么语言绵阳手机网站建设
  • 创建电子商务网站的步骤nas 外网 wordpress
  • 上海网站建设推荐平板网站开发环境
  • 深圳网站优化包年二手房地产中介网站建设
  • 全球展览设计的图片企业网站建设优化策划
  • 网络ip查询网站优秀品牌形象设计案例
  • 建新建设集团有限公司网站重庆建站管理系统开发
  • 罗湖住房和建设局网站网站建设的系统流程图
  • 网站建设公司赚钱网站建设背景文字
  • 做简历的网站叫什么软件黑龙江建筑工程信息网
  • 受欢迎的昆明网站建设嘉兴网站制作设计
  • wordpress语言包下载使用最佳搜索引擎优化工具
  • 团队介绍网站建设知识产权网站建设
  • 长沙旅游网站开发中国建设银行网站首页企业
  • 培训教育类网站模板中山网红粥
  • 临沂seo网站管理小视频做网站怎么赚钱
  • 高端网站设计一般多少钱滨州正规网站建设哪家专业
  • 手机wap 网站上海网站建设公司选哪家好
  • 陕西网站建设维护西安网站建设推荐q479185700上墙
  • 有哪些网站可以做ppt网页升级访问中新每天正常更新中在线观看