JSP(5)—Session的创建以及简单使用
页面:
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>
<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的创建以及简单使用的更多相关文章
- 不通过ecplise,只通过文件目录 创建最简单的JSP文件
手动创建最简单的JSP 文件 1.在Tomcat 6.0的安装目录的webapps目录下新建一个目录,起名叫myapp. 2.在myapp目录下新建一个目录WEB-INF,注意,目录名称是区分大小 ...
- 转 jsp中 session的简单用法
Session对象:是用来分别保存每一个用户信息的对象,以便于跟踪用户的操作状态.Session的信息保存在服务端,Session的ID保存在客户机的Cookie中.事实上,在许多服务器上,如果浏览器 ...
- Session会话与Cookie简单说明
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...
- 使用HttpSessionListener接口监听Session的创建和失效
转自:http://uule.iteye.com/blog/824115 HttpSessionListener : Session创建事件发生在每次一个新的session创建的时候,类似地Sessi ...
- JSP中Session的使用
JSP session使用方法 <%@page contentType="text/html;charset=GB2312"%><html> <he ...
- IntelliJ IDEA 15 部署Tomcat及创建一个简单的Web工程
一.部署Tomcat 二.创建一个简单的Web工程 2.1创建一个新工程 创建一个新工程 设置JDK及选择Web Application (创建的是Web工程) 点击Next,选择工作空间,起个工程名 ...
- 如何创建一个简单的struts2程序
如何创建一个简单的Struts2程序 “计应134(实验班) 凌豪” 1.创建一个新的Web项目test(File->new->Web Project) 2.Struts2框架的核心配置文 ...
- WInform 创建一个简单的WPF应用
(一)创建一个简单的WPF应用 首先,在这里我要说明的是:这里的例子,都是通过控制台程序来创建WPF应用,而非使用现成的WPF模版.因为WPF模版封装了创建WPF应用所需要的各种基本元素,并不利于我们 ...
- 用Eclipse 创建一个 简单的 Maven JavaWeb 项目
使用Maven 创建一个简单的 javaWeb 项目: 本篇属于 创建 JavaWeb 项目的第三篇: 建议阅读本篇之前 阅读 用 Eclipse 创建一个简单的web项目 ;本篇是这这篇文章的基础 ...
随机推荐
- openpose pytorch代码分析
github: https://github.com/tensorboy/pytorch_Realtime_Multi-Person_Pose_Estimation # -*- coding: utf ...
- Django中model层详解
#!/usr/bin/env python# _*_ coding:utf-8 _*_ from django.db import models class UserType(models.Model ...
- mysql分组(五)
MySQL GROUP BY 语句 GROUP BY 语句根据一个或多个列对结果集进行分组. 在分组的列上我们可以使用 COUNT, SUM, AVG,等函数. GROUP BY 语法 SELECT ...
- Javascript \x 反斜杠x 16进制 编解码
js 里 \x 开头的通常是16进制编码的数据,下面代码实现编解码: 解码 function decode(str){ return str.replace(/\\x(\w{2})/g,functio ...
- Codeforces 1136E Nastya Hasn't Written a Legend 线段树
vp的时候没码出来.. 我们用set去维护, 每一块区域, 每块区域内的元素与下一个元素的差值刚好为ki,每次加值的时候我们暴力合并, 可以发现我们最多合并O(n)次. 然后写个线段树就没了. #in ...
- python--return小练习
#返回单个值,return a:#一个return后的语句不再执行,def calc_sum(*args): ax = 0 for n in args: ax = ax + nprint(ax); r ...
- Codeforces Gym100187C Very Spacious Office 贪心 堆
原文链接https://www.cnblogs.com/zhouzhendong/p/CF-Gym100187C.html 题目传送门 - CF-Gym100187C 题意 给定 $n$ 个房间以及 ...
- Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第四集之安装Linux】
1,确保Linux镜像的路径存在 2,启动 3,在真实机情况下,进入BIOS修改安装操作系统的路径[记住:虚拟机不需要这一步.] 如果是真实机安装Linux,默认是从硬盘中安装,而不是从光盘.这就需要 ...
- P1010 幂次方 递归模拟
题目描述 任何一个正整数都可以用22的幂次方表示.例如 137=2^7+2^3+2^0137=27+23+20 同时约定方次用括号来表示,即a^bab 可表示为a(b)a(b). 由此可知,13713 ...
- 011 Linux环境下配置eclipse,以及创建maven工程
一:maven的安装 1.安装配置maven环境变量 2.验证 二:eclipse的安装 3.解压配置eclipse 4.启动eclipse,必须在虚拟机的eclipse下启动 5.结果 三:修改配置 ...