页面:

1.案例

  1. <body>
  2. <!--
  3. 把书的信息以Cookie方式传回给浏览器,删除一个Cookie
  4. 1.确定要被删除的Cookie是以ATGUIGU_BOOK_开头的cookie,数量大于或等于5,且若从Books.jsp页面中
  5. 传入的book不在ATGUIGU_BOOK_的cookie中则删除较早的那个cookie(ATGUIGU_BOOK_数组的第一个Cookie)
  6. 若在其中,则删除该Cookie
  7. 2.把从books.jsp传入的book作为一个Cookie返回
  8. -->
  9. <h4>Book Detail Page</h4>
  10. Book:<%=request.getParameter("book") %>
  11. <br><br>
  12. <a href="books.jsp">Return</a>
  13. <%
  14. //步骤2.获取表单数据
  15. //获取表单提交的参数
  16. String book = request.getParameter("book");
  17. //步骤3.获取Cookie
  18. //获取Cookie,初始有一个Cookie:JSESSIONID,它是有Tomcat服务器产生的传到浏览器中,首次访问book.jsp页面
  19. //传到浏览器存到集合中,再次访问时又有新的Cookie存到集合中,该Cookie会存到集合中的第一位,以此每次获取到Cookie
  20. //都会放到集合第一位上
  21. Cookie[] cookies = request.getCookies();
  22. System.out.println("cookie_size:"+cookies.length);
  23. System.out.println("cookie_Name:"+cookies[0].getName());
  24. //步骤4.创建集合变量,以备使用
  25. //保存所有的以ATGUIGU_BOOK_开头的Cookie
  26. List<Cookie> bookCookies = new ArrayList<Cookie>();
  27. //步骤5.创建临时Cookie,用于记录要删除的Cookie
  28. //用来保存和books.jsp传入的book匹配的那个Cookie
  29. Cookie tempCookie = null;
  30. //步骤6.从浏览器中获取的Cookie,是否不为空,获取长度大于零
  31. //判断Cookie总是否有cookie
  32. if(cookies != null && cookies.length > 0){
  33. //遍历所有的Cookie
  34. for(Cookie cookie : cookies){
  35. String cookieName = cookie.getName();
  36. //判断该Cookie是否是以ATGUIGU_BOOK_开头的
  37. if(cookieName.startsWith("ATGUIGU_BOOK_")){
  38. //步骤7.从浏览器中传过来的Cookie中,找到Cookie的Name是以“ATGUIGU_BOOK_”开头的都保存到集合中去
  39. //把这些满足条件的cookie放到集合中去
  40. bookCookies.add(cookie);
  41. //步骤8.判断刚刚传进来的表单参数是否和集合中的某一元素相同,是的话就使用tempCookie记录下来
  42. if(cookie.getValue().equals(book)){
  43. tempCookie = cookie;
  44. }
  45. }
  46. }
  47. }
  48. //步骤9.判断集合中的元素是否超过5个,或者没有重复的表单参数传进来,就把要集合的第一个元素赋给变量tempCookie
  49. //如果集合中元素超过5个,就删除
  50. if(bookCookies.size() >= 5 && tempCookie == null){
  51. tempCookie = bookCookies.get(0);
  52. }
  53. //步骤10.tempCookie的setMaxAge()方法设置值为0表示,让浏览器删除CookieName为tempCookie的Cookie,并返回浏览器
  54. //若在其中就删除
  55. if(tempCookie != null){
  56. tempCookie.setMaxAge(0);
  57. response.addCookie(tempCookie);
  58. }
  59. //步骤11.返回不止一个Cookie,另外创建一个Cookie对象,把获得的表单参数作为CookieValue,返回给浏览器,浏览器执行步骤1.2
  60. //把books.jsp传入的表单参数book作为一个Cookie返回
  61. Cookie cookie = new Cookie("ATGUIGU_BOOK_" + book,book);
  62. response.addCookie(cookie);
  63. %>
  64. </body>

2.案例

  1. <body>
  2. <!-- page指令中session属性设置为false,表示页面禁用session隐含变量,但是可以使用其他的显式的HttpSession对象 -->
  3. <%
  4. //无法使用Session对象,session.getid();
  5. //page指令中session的值为false,所以不能使用session隐含对象,但是可以使用显式的session对象
  6. out.println("session:"+session.getId()+"<br>");
  7. %>
  8. <!-- 页面禁用session,又没有和其他JSP页面相关联,直接访问该页面,则session为空-->
  9. <!-- 页面禁用session,但是有和其他JSP页面相关联,先访问该相关联页面,在访问该页面,则session为相关联页面的session -->
  10. <%
  11. //HttpSession session = request.getSession(false);
  12. //out.println(session);
  13. %>
  14. <!-- 页面不禁用session,request.getSession(true)等同于request.getSession() -->
  15. <%
  16. HttpSession session1 = request.getSession(false);
  17. //HttpSession session2 = request.getSession();
  18. out.println("session1:"+session1.getId()+"<br>");
  19. //out.println("session2:"+session2.getId()+"<br>");
  20. %>
  21. <!-- 销毁session对象方法,session cookie存在与浏览器内存中,其随着浏览器的关闭而消失 -->
  22. <%
  23. //立即失效,每次访问session都不一致
  24. //session1.invalidate();
  25. //服务器下载当前web应用
  26. //session过期时间,即规定时间内没有访问session就失效,默认1800s,可以在apache根目录下web.xml文件中修改默认的时间,其单位是分钟
  27. //out.println("过期时间:"+session1.getMaxInactiveInterval());
  28. //设置过期时间4,其单位是秒
  29. //session1.setMaxInactiveInterval(10);
  30. //out.println("过期时间:"+session1.getMaxInactiveInterval());
  31. %>
  32. <!-- 持久化session -->
  33. <%
  34. %>
  35. </body>

3.案例:把登录信息存储到session中

hello.jsp

  1. <body>
  2. session的基本信息:
  3. <br>
  4. SessionId:<%=session.getId() %>
  5. <br><br><br>
  6. isNew:<%=session.isNew() %>
  7. <br><br><br>
  8. getMaxInactiveInterval:<%=session.getMaxInactiveInterval() %>
  9. <br><br><br>
  10. CreateTime:<%=session.getCreationTime() %>
  11. <br><br><br>
  12. LastAccessTime:<%=session.getLastAccessedTime() %>
  13. <br><br><br>
  14. Hello:<%=request.getParameter("username") %>
  15. <br><br><br>
  16. <%
  17. //把参数存到session中去
  18. session.setAttribute("username", request.getParameter("username"));
  19. %>
  20. <a href="<%=response.encodeUrl("login.jsp") %>">重新登录</a>
  21. &nbsp;&nbsp;
  22. <a href="<%=response.encodeUrl("logout.jsp") %>">注销</a>
  23. </body>

login.jsp

  1. <body>
  2. session的基本信息:
  3. <br><br><br>
  4. SessionId:<%=session.getId() %>
  5. <br><br><br>
  6. isNew:<%=session.isNew() %>
  7. <br><br><br>
  8. getMaxInactiveInterval:<%=session.getMaxInactiveInterval() %>
  9. <br><br><br>
  10. CreateTime:<%=session.getCreationTime() %>
  11. <br><br><br>
  12. LastAccessTime:<%=session.getLastAccessedTime() %>
  13. <br><br><br>
  14. <%
  15. Object username = session.getAttribute("username");
  16. username = username == null ? "" : username;
  17. %>
  18. <!-- 浏览器禁用Cookie时仍然能够把session id传递回服务器,所使用的技术:URL重写 -->
  19. <form action="<%=response.encodeUrl("hello.jsp") %>" method="post">
  20. username:<input type="text" name="username" value="<%=username %>"/>
  21. <input type="submit" value="Submit">
  22. </form>
  23. </body>

logout.jsp

  1. <body>
  2. session的基本信息:
  3. <br>
  4. SessionId:<%=session.getId() %>
  5. <br><br><br>
  6. isNew:<%=session.isNew() %>
  7. <br><br><br>
  8. getMaxInactiveInterval:<%=session.getMaxInactiveInterval() %>
  9. <br><br><br>
  10. CreateTime:<%=session.getCreationTime() %>
  11. <br><br><br>
  12. LastAccessTime:<%=session.getLastAccessedTime() %>
  13. <br><br><br>
  14. Bye:<%=session.getAttribute("username") %>
  15. <br><br><br>
  16. <%
  17. //销毁session
  18. session.invalidate();
  19. %>
  20. <a href="login.jsp">重新登录</a>
  21. </body>

JSP(5)—Session的创建以及简单使用的更多相关文章

  1. 不通过ecplise,只通过文件目录 创建最简单的JSP文件

    手动创建最简单的JSP 文件   1.在Tomcat 6.0的安装目录的webapps目录下新建一个目录,起名叫myapp. 2.在myapp目录下新建一个目录WEB-INF,注意,目录名称是区分大小 ...

  2. 转 jsp中 session的简单用法

    Session对象:是用来分别保存每一个用户信息的对象,以便于跟踪用户的操作状态.Session的信息保存在服务端,Session的ID保存在客户机的Cookie中.事实上,在许多服务器上,如果浏览器 ...

  3. Session会话与Cookie简单说明

    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...

  4. 使用HttpSessionListener接口监听Session的创建和失效

    转自:http://uule.iteye.com/blog/824115 HttpSessionListener : Session创建事件发生在每次一个新的session创建的时候,类似地Sessi ...

  5. JSP中Session的使用

    JSP session使用方法 <%@page contentType="text/html;charset=GB2312"%><html>  <he ...

  6. IntelliJ IDEA 15 部署Tomcat及创建一个简单的Web工程

    一.部署Tomcat 二.创建一个简单的Web工程 2.1创建一个新工程 创建一个新工程 设置JDK及选择Web Application (创建的是Web工程) 点击Next,选择工作空间,起个工程名 ...

  7. 如何创建一个简单的struts2程序

    如何创建一个简单的Struts2程序 “计应134(实验班) 凌豪” 1.创建一个新的Web项目test(File->new->Web Project) 2.Struts2框架的核心配置文 ...

  8. WInform 创建一个简单的WPF应用

    (一)创建一个简单的WPF应用 首先,在这里我要说明的是:这里的例子,都是通过控制台程序来创建WPF应用,而非使用现成的WPF模版.因为WPF模版封装了创建WPF应用所需要的各种基本元素,并不利于我们 ...

  9. 用Eclipse 创建一个 简单的 Maven JavaWeb 项目

    使用Maven 创建一个简单的 javaWeb 项目: 本篇属于 创建 JavaWeb 项目的第三篇: 建议阅读本篇之前 阅读 用 Eclipse 创建一个简单的web项目  ;本篇是这这篇文章的基础 ...

随机推荐

  1. SP3734 PERIODNI - Periodni

    题解: 第一道笛卡尔树dp 会发现以一个点为分界 如果左边大于它右边大于它 那么大于的那部分是相互不影响的 于是我们对序列建立笛卡尔树 满足父亲节点的v<儿子节点的v 然后这棵树的中序遍历为原序 ...

  2. groovy中的正则表达式操作符【groovy】

    groovy中对于正则表达式的书写进行了简化,同时引入了新的操作符,使得正则表达式使用起来比较方便简单. 对于书写的改进: 比如 assert "\\d" == /\d/ 也就是在 ...

  3. mysql查看变量/配置文件位置

    //查看所有变量 show global variables //查看某个变量的值 show global variables where variable_name like '%innodb_fl ...

  4. Codechef CHSIGN Change the Signs(May Challenge 2018) 动态规划

    原文链接http://www.cnblogs.com/zhouzhendong/p/9004583.html 题目传送门 - Codechef CHSIGN 题意 第一行,一个数$T$,表示数据组数. ...

  5. asp gridview

    <table> <tr> <td colspan="5">请选择试卷制定人员<span style="color:red&quo ...

  6. 011 SpringSecurity的基本原理

    一:securuty默认情况 1.默认的配置 在引用security依赖以后,会有一个配置 security.basic.enabled=true 2.启动 用户名:user 密码:在控制台上查看 3 ...

  7. Ubuntu + 坚果云

    下载 nautilus_nutstore_amd64.deb sudo dpkg -i nautilus_nutstore_amd64.deb # 运行后,会提示缺少依赖包 sudo apt-get ...

  8. Django中的Request和Response

    接触Django这么久了,从来没有好好学习关于Django中的Request和Response对象.借着文件上传下载的相关工作,现在总结一下也不错. 当一个页面请求过来,Django会自动创建一个Re ...

  9. aar上传maven库工具

    需求:本地aar文件上传到maven库 参考我之前的博客gradle上传本地文件到远程maven库(nexus服务器) 下面是java图形化工具代码 package com.jinkejoy.buil ...

  10. hdu 1518 Square 木棍建正方形【DFS】

    题目链接 题目大意: 题意就是输入棍子的数量和每根棍子的长度,看能不能拼成正方形. #include <bits/stdc++.h> using namespace std; int n, ...