2019独角兽企业重金招聘Python工程师标准>>>

一。session对象 

功能 :有页面保持的功能 ,当访问网站 时,服务 器端已经给他分配 了一个session对象 ,对于这个用户,不管在那么页面,只要他访问 session 对象 ,都是同一个。我们也可以用数据库(购物功能),但是对服务器的消耗会很大

1. 如何使用 session 开发购物车 

将内容放入购物车

void session.setAttribute (String name ,Object obj );

如果 name相同 ,就会覆盖之前的内容。集合,数据结构对象都可以放入session 中。

读取购物车中的内容

Object session.getAttribute(String name);

如果 session 里面放了很多内容 ,怎么取出呢?我们可以用

Enumeration session.getAttributeNames( );

得到session 中所有 的属性的名称 ,再由名称得到内容 。

例子:

<%ArrayList books = new ArrayList();books.add("大学物理");books.add("语言");books.add("数学");session.setAttribute("books", books);%><a href="MyJsp1.jsp">查看购物车</a>

MyJsp1.jsp中

<%ArrayList books = (ArrayList) session.getAttribute("books");for (int i = 0; i < books.size(); i++) {String book = (String) books.get(i);out.println(book + "<br>");}%>

2.session进阶 

移除 session 中的内容

void session.removeAttribute (String name);

移除 session 中的全部内容

void session.invalidate();

问题,从session中得到一个集合,从集合中删除 一个数据 ,但是这个集合没有放回到session 中,那session 中的内容 会发生变化 吗?

会,因为集合ArrayList 是一个引用对象 ,和books指的是同一个内存。

session 内容初始化的技巧

例如,用一个表单提交书本放入购物车中,

<form action="MyJsp2.jsp" method="post">请您输入书本名:<input name="book" type="text"><input type="submit"  value="添加到购物车"></form><hr><%//向session 中存放 一个集合 ArrayList books = new ArrayList();session.setAttribute("books", books);//获得书名String book = request.getParameter("book");if (book != null) {book = new String(book.getBytes("ISO-8859-1"));//将book加入 到集合中books.add(book);}%>购物车中的内容是:<br><%for (int i = 0; i < books.size(); i++) {out.println(books.get(i) + "<br>");}%>

每次我们输入 点击 后,会发现之前 的记录没有了,这是因为,每次页面运行都 会有一个新的实例 化的ArrayList 放在 session 里面。解决办法

//向session 中存放 一个集合 ArrayList books = (ArrayList) session.getAttribute("books");if (books == null) {books = new ArrayList();session.setAttribute("books", books);}

sessionId

当一个客户访问不同的页面时,他都有一样的sessionId ,原理是:

当第一次访问的时候 ,服务器就给session分配 了一个 sessionId ,并且让客户端用 Cookie 保存了这个 sessionId ,客户端访问下一个页面时,又将

这个 sessionId传送 给服务 器,服务 器由这个 sessionId 找到前一个页面用的  session  的对象 。

我们可以用下面的方法得到现在的 sessionId :

String session.getId();

3. session的其它 应用

利用session保存登录信息

我们在登录后,会访问很多页面,在访问这些页面的过程 中,别的页面怎么知道我们的帐号呢,我们可以把信息保存在session 中。

<form  action ="MyJsp2.jsp"  method ="post">请输入您的帐号:<input name ="account"  type ="text"><br>请输入您的密码 : <input name ="password"  type ="password"> <br><input type="submit"   value="登录"></form><%//获得帐号和密码 String account = request.getParameter("account");String password = request.getParameter("password");if (account != null) {if (account.equals(password)) { //如果 帐号与密码 一样,表示成功//将account 放入 session 转入另外 一个页面session.setAttribute("account", account);response.sendRedirect("MyJsp1.jsp");}}%>

jsp1 中的代码 是

<body>欢迎<%= session.getAttribute("account") %>来到系统<hr>请进行下面的操作:。。。

但是,如果我们直接 访问第二个页面,就会出现 欢迎null访问的情况 ,不对,我们应该在第二个页面中加入 session 的检查。如果 session 中的account 为 null,

则跳转到第一个界面 。

<%if (session.getAttribute("account")==null){response.sendRedirect("MyJsp2.jsp");}%>

由于 在很多页面中都 要有这个功能 ,我们可以用include 。其实还可以使用  过虑器。

利用session传值

几种传值方法对比

URL 简单,配合链接使用 内容显示示浏览器地址栏
隐藏表单 简单,配合表单使用 内容显示于客户端源码
Cookie 保存于硬盘 ,信息能够持久化 内容显示于Cookie文件
session 安全 服务 器任务重

将要保存的变量值保存在服务 端的session 内,在客户端访问面面 2 的时候 ,只要从服务 器中读取 session 就可以了。在客户端看不到的传递值 相关的信息。

二。application 对象 

application 对象 ,对于不同的客户端来说,服务 器端的对象是相同的。

实际中要用到的地方 :

在一个系统中,显示当前在线的用户名单 ,在所有 的客户端上都能显示 ,也可以说,对所有 客户都是共享 的,这个 时候 ,我们可以将当前 在线的名单 存在application 对象 中。

当一个服务 器启动后,就会自动 创建 一个application 对象 ,直到服务 器关闭时为止。

1 。将内容放到 application 中

void application.setAttribute ( String name ,Object obj) ;

2. 读取一个application 中的内容

Object application.getAttribute (String name );

3. 将内容 从application 中移除

void application.removeAttribute (String name );

4. application 可以直接获得当前 工程资源 在服务 器硬盘 上的物理路径

方法为

application,getRealPath("资源在项目中的虚拟路径 ");

下面的例子得到项目根目录 在服务 器硬盘上的物理路径

<%
String realPath = application.getRealPath("/");
out.println(realPath);%>

输出为

D:\Program Files\tomcat\webapps\proj02\

这个 功能 在文件上传 等时候会用到。

转载于:https://my.oschina.net/chuiyuan/blog/276694

JSP内置 对象(下)相关推荐

  1. 【JSP笔记】第四章 JSP内置对象【下】

    2019独角兽企业重金招聘Python工程师标准>>> 1.什么是session 表示客户端与服务器的一次会话. Web中的session指用户浏览网站时,从进入网站到浏览器关闭的这 ...

  2. jsp内置对象【02】四种内置对象【02】session、application

    我们继续来学习,上一篇文章中说到了request属性,那么既要想客户端和服务端都都能实现跳转的话,就用到了session. 第三种:session属性 我们接着修改一下上一篇文章中的代码来对比一下: ...

  3. java遇上html,JAVA遇见HTML——JSP篇:JSP内置对象(上)

    JSP九大内置对象 JSP内置对象是Web容器创建的一组对象,不使用new关键就可以使用的内置对象. int[] value={60,70,80}; for(int i:value){ out.pri ...

  4. 转:jsp内置对象中page与pageContext与el内置对象pageScope与pageContext区别

    原文地址:jsp内置对象中page与pageContext与el内置对象pageScope与pageContext区别 首先说明一下jsp9大内置对象 (1)HttpSession类的session对 ...

  5. Java Web复习——task03:JSP 内置对象和生命周期

    文章目录 前言 一.JSP内置对象 1.1 HttpServletRequest类和Request对象 1.2 HttpServletResponse类和Response对象 1.3 JspWrite ...

  6. JAVA Web入门之JSP内置对象的解析及使用(超详细必看)

    创作不易 觉得有帮助请点赞关注收藏~~ 概述:由于JSP使用java作为脚本语言 所以JSP具有强大的对象处理能力 并且可以动态创建web页面内容 但java语言在使用一个对象前  需要先实例化这个对 ...

  7. 互联网软件开发—— 实验三 JSP 内置对象(留言板)

    实验名称: 实验三 JSP 内置对象 一.实验目的 1.掌握表单提交及页面间参数传递的方法. 2.理解页面转发与重定向之间的区别. 3.掌握 request.session 和 application ...

  8. jsp内置对象--request对象

    request对象 客户端的请求信息被封装在request对象中,通过它才能了解客户的需求,然后做出响应,他是HttpServletRequset类的实例request对象具有请求域,即完成客户的请求 ...

  9. JSP内置对象:request、response、out、session、application等内置对象

    Java程序的功能主要是由Java包下的各个类在运行期所产生的对象所提供,并且应用这些对象组织构建程序所需的功能. 所谓JSP内置对象,是指在JSP网页环境之下,用户不需要声明而直接可以在JSP网页中 ...

  10. Jsp内置对象及EL表达式的使用

    一.JSP的内置对象(9个JSP内置对象) JSP的内置对象引用名称 对应的类型 request HttpServletRequest response HttpServletResponse ses ...

最新文章

  1. java: web应用中不经意的内存泄露
  2. 伟大的密码胜于利剑——RSA2012成都站掠影
  3. Android中Calendar类的用法总结
  4. autowired 与 resources 注解的区别
  5. java 数字信号_数字信号处理理论及C++和Java实现 数字信号处理理论算法与实现...
  6. 如何在Debian 9 / Debian 8上安装MariaDB 10.3
  7. 转:android.support升级到androidx踩坑记录
  8. 服装色差的识别成因与预防
  9. 将windbg设置为默认调试器命令
  10. 【值得收藏】10个实现炫酷UI前端效果的CSS生成工具
  11. Hadoop四大组件介绍
  12. 主流web前端技术框架有哪些?
  13. 百度网盘linux微博登录,百度网盘,微博登录
  14. Mac无法开机?别着急看这里
  15. 高级端点保护 (AEP) 简介
  16. ECG信号三大主要噪声-基线漂移,工频干扰,肌电干扰
  17. 【问题解决方案】电脑关闭搜狐微门户的弹窗
  18. python module docs是什么意思_Python Module和Package辨析
  19. 聊聊网络安全态势感知之一
  20. 磊科路由器信号按键_磊科路由器按了后面的默认设置按钮后,怎么配置路由上网?...

热门文章

  1. apache服务器_Apache+SVN 服务器搭建:
  2. matlab 追赶法
  3. java每个月某天,java – 查找一年中的某一天
  4. oracle var/tmp,[20141128]目录/var/tmp/oracle.txt
  5. java正则出现次数_正则表达式(二)—匹配次数的正则
  6. pycharm TabError: inconsistent use of tabs and spaces in indentation
  7. qmake manual=Variables
  8. 基于深度卷积神经网络的苹果叶片植物病理学疾病检测
  9. Java将一个正整数进行因数分解
  10. java父类与子类的构造方法_java中的加载顺序以及父类与子类的构造方法 | 学步园...