页面:

1.案例

<body>

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

2.案例

<body>

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

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

hello.jsp

<body>

    session的基本信息:
<br>
SessionId:<%=session.getId() %>
<br><br><br>
isNew:<%=session.isNew() %>
<br><br><br>
getMaxInactiveInterval:<%=session.getMaxInactiveInterval() %>
<br><br><br>
CreateTime:<%=session.getCreationTime() %>
<br><br><br>
LastAccessTime:<%=session.getLastAccessedTime() %>
<br><br><br>
Hello:<%=request.getParameter("username") %>
<br><br><br> <%
//把参数存到session中去
session.setAttribute("username", request.getParameter("username"));
%> <a href="<%=response.encodeUrl("login.jsp") %>">重新登录</a>
&nbsp;&nbsp;
<a href="<%=response.encodeUrl("logout.jsp") %>">注销</a> </body>

login.jsp

<body>

    session的基本信息:
<br><br><br>
SessionId:<%=session.getId() %>
<br><br><br>
isNew:<%=session.isNew() %>
<br><br><br>
getMaxInactiveInterval:<%=session.getMaxInactiveInterval() %>
<br><br><br>
CreateTime:<%=session.getCreationTime() %>
<br><br><br>
LastAccessTime:<%=session.getLastAccessedTime() %>
<br><br><br>
<%
Object username = session.getAttribute("username");
username = username == null ? "" : username;
%>
<!-- 浏览器禁用Cookie时仍然能够把session id传递回服务器,所使用的技术:URL重写 -->
<form action="<%=response.encodeUrl("hello.jsp") %>" method="post">
username:<input type="text" name="username" value="<%=username %>"/>
<input type="submit" value="Submit">
</form> </body>

logout.jsp

<body>

    session的基本信息:
<br>
SessionId:<%=session.getId() %>
<br><br><br>
isNew:<%=session.isNew() %>
<br><br><br>
getMaxInactiveInterval:<%=session.getMaxInactiveInterval() %>
<br><br><br>
CreateTime:<%=session.getCreationTime() %>
<br><br><br>
LastAccessTime:<%=session.getLastAccessedTime() %>
<br><br><br>
Bye:<%=session.getAttribute("username") %>
<br><br><br>
<%
//销毁session
session.invalidate();
%>
<a href="login.jsp">重新登录</a>
</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. openpose pytorch代码分析

    github: https://github.com/tensorboy/pytorch_Realtime_Multi-Person_Pose_Estimation # -*- coding: utf ...

  2. Django中model层详解

    #!/usr/bin/env python# _*_ coding:utf-8 _*_ from django.db import models class UserType(models.Model ...

  3. mysql分组(五)

    MySQL GROUP BY 语句 GROUP BY 语句根据一个或多个列对结果集进行分组. 在分组的列上我们可以使用 COUNT, SUM, AVG,等函数. GROUP BY 语法 SELECT ...

  4. Javascript \x 反斜杠x 16进制 编解码

    js 里 \x 开头的通常是16进制编码的数据,下面代码实现编解码: 解码 function decode(str){ return str.replace(/\\x(\w{2})/g,functio ...

  5. Codeforces 1136E Nastya Hasn't Written a Legend 线段树

    vp的时候没码出来.. 我们用set去维护, 每一块区域, 每块区域内的元素与下一个元素的差值刚好为ki,每次加值的时候我们暴力合并, 可以发现我们最多合并O(n)次. 然后写个线段树就没了. #in ...

  6. python--return小练习

    #返回单个值,return a:#一个return后的语句不再执行,def calc_sum(*args): ax = 0 for n in args: ax = ax + nprint(ax); r ...

  7. Codeforces Gym100187C Very Spacious Office 贪心 堆

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF-Gym100187C.html 题目传送门 - CF-Gym100187C 题意 给定 $n$ 个房间以及 ...

  8. Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第四集之安装Linux】

    1,确保Linux镜像的路径存在 2,启动 3,在真实机情况下,进入BIOS修改安装操作系统的路径[记住:虚拟机不需要这一步.] 如果是真实机安装Linux,默认是从硬盘中安装,而不是从光盘.这就需要 ...

  9. P1010 幂次方 递归模拟

    题目描述 任何一个正整数都可以用22的幂次方表示.例如 137=2^7+2^3+2^0137=27+23+20 同时约定方次用括号来表示,即a^bab 可表示为a(b)a(b). 由此可知,13713 ...

  10. 011 Linux环境下配置eclipse,以及创建maven工程

    一:maven的安装 1.安装配置maven环境变量 2.验证 二:eclipse的安装 3.解压配置eclipse 4.启动eclipse,必须在虚拟机的eclipse下启动 5.结果 三:修改配置 ...