session代表一次用户会话,其含义是:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开为止,这个过程就是一次会话。
session通常用于跟踪用户的会话信息,如判断用户是否登录系统,或者在购物车应用中,系统是否跟踪用户购买的商品等。
session里的属性可以在多个页面的跳转间共享。一旦关闭浏览器,即session结束,session里的属性将全部清空。
session对象的两个常用方法如下:
setAttribute(String attName, Object attValue): 设置一个session属性
getAttribute(String attName):返回一个session属性的值。

下面演示了一个模拟购物车应用。shop.jsp是商品陈列页面,页面里有一个表单,表单里包含3个复选按钮,用于提交想购买的物品。其代码如下:

<%@ page contentType="text/html; charset=gb2312" language="java" %>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
<HTML>
<BODY>
<FORM METHOD=POST ACTION="ProcessBuy.jsp">
book:<INPUT TYPE="checkbox" NAME="item" value="book"><br>
computer:<INPUT TYPE="checkbox" NAME="item" value="computer"><br>
car:<INPUT TYPE="checkbox" NAME="item" value="car"><br>
<INPUT TYPE="submit" value="buy">
</FORM>
</BODY>
</HTML>

其运行结果截图如下:

ProcessBuy.jsp页面处理以上表单。利用购物车系统可以反复购买,只要不关闭,购买的物品信息就不会丢失。ProcessBuy.jsp的代码如下:

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.util.*" %>
<%
//从session对象中取出
Map<String,Integer> itemMap=(Map<String,Integer>) session.getAttribute("itemMap");
//如果Map对象为空,则初始化Map对象
if(itemMap==null)
{itemMap=new HashMap<String,Integer>();itemMap.put("book",0);itemMap.put("computer",0);itemMap.put("car",0);
}
//获取上个页面的请求参数
String[] buys=request.getParameterValues("item");
//遍历数组的各元素
for(String item : buys)
{if(item.equals("book")){int num1=itemMap.get("book").intValue();//将book对应的数量加1itemMap.put("book",num1+1);}else if(item.equals("computer")){int num2=itemMap.get("computer").intValue();itemMap.put("computer",num2+1);}else if(item.equals("car")){int num3=itemMap.get("car").intValue();itemMap.put("car",num3+1);}
}
//将itemMap对象放到session中
session.setAttribute("itemMap",itemMap);
%>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
<HTML>
<BODY>
The things you choose:<br>
book:<%=itemMap.get("book")%><br>
computer:<%=itemMap.get("computer")%><br>
car:<%=itemMap.get("car")%><br>
<a href="shop.jsp">choose again</a>
</BODY>
</HTML>

选中shop.jsp页面中的所有复选框,截图如下:

点击buy按钮后,页面自动跳转到ProcessBuy.jsp,显示用户已选中的各类商品数量。截图如下:


点击“choose again“按钮,跳转回shop.jsp页面,用户可以接着选择要购买的商品。之前选择的商品在关闭浏览器之前都不会消失(关闭页面也不会消失)。截图如下:

这一次,选中前两个复选框book和computer,点击buy按钮,结果截图如下:

JSP的9个内置对象-session相关推荐

  1. JSP的9个内置对象(隐含对象)

    JSP的9个内置对象(隐含对象) JSP内置对象是指在JSP页面系统中已经默认内置的Java对象,这些对象不需要开发人员声明即可使用. 9个内置对象如下: page:代表当前JSP页面 request ...

  2. JavaWeb——内置对象session与httpSession对象是同一个东西么?

    JavaWeb--内置对象session与httpSession对象是同一个东西么? 首先,内置对象session与httpSession对象不是同一个东西 session和HttpSession是不 ...

  3. JSP内置对象Session——setAttribute/getAttibute/removeAttribute

    本文章代码使用了request内置对象,可先查看之前的文章学习. 前言 一.Session使用环境 二.常用方法 三.使用示例 1. 设计某系统登陆模块,该模块需满足以下条件: 2.login.jsp ...

  4. jsp的9个内置对象

    Jsp提供了request.response.session.application.out.page.config.exception.pageContext9个内置对象.1. Request Re ...

  5. JSP的9个内置对象-application

    JSP页面中包含9个内置对象,这9个内置对象都是Servlet API的类或者接口的实例,只是JSP规范将它们完成了默认初始化,即它们已经是对象,可以直接使用. application:javax.s ...

  6. Java Web学习总结(16)——JSP的九个内置对象

    一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...

  7. JSP页面元素,内置对象及request详解

    JSP的页面元素: a. 脚本Scriptlet 1.<% 局部变量,Java语句 %> 2.<%! 全局变量,定义方法 %> 3.<%= 输出表达式 %> 一般而 ...

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

    session对象 JSP利用servlet提供的HttpSession接口来识别一个用户,存储这个用户的所有访问信息. 默认情况下,JSP允许会话跟踪,一个新的HttpSession对象将会自动地为 ...

  9. jsp内置对象*session

    session对象 基本概念: 指的是客户端与服务器的一次会话,从客户端连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止.它是HttpSession类的实例.     ...

最新文章

  1. 【Android 高性能音频】Oboe 音频流打开后 耳机 / 音箱 插拔事件处理 ( 动态注册广播接收者监听耳机插拔事件 | 重新打开 Oboe 音频流 )
  2. 网站性能优化之HTTP请求过程简述!
  3. React Native开发学习笔记——常用命令
  4. 很全的sas基础知识
  5. eclipse+ADT 进行android应用签名详解
  6. Scala与Java混编译:java日志不打印的问题
  7. pymssql的简单使用
  8. 使用SQLite数据库存储数据(4)-删除数据记录
  9. 14. Element className 属性
  10. A88xm-plus 主板采用Clover实现 m2 固态硬盘启动
  11. COMSOL仿真分析视频教程
  12. 揭晓网站建设对于企业发展的重要作用
  13. 计算机usb接口不工作原理,电脑usb接口不能用,详细教您电脑usb接口不能用怎么办...
  14. 【车道线检测论文阅读笔记——经典论文粗读汇总】
  15. 适用于Win和Mac的专业电脑数据恢复软件EasyRecovery易恢复14
  16. TiDB监控pd面板显示:Region Health: empty-regin-count很多,怎么回收empty-regin?
  17. OA系统中如何实现合同管理?
  18. 分布式技术原理与实战45讲--05 第05讲:共识问题:区块链如何确认记账权?
  19. 面试题:写两个线程,一个线程打印1~26,另一个线程打印字母A-Z,交替打印数字和字母
  20. 【Mysql系列】用sql求中位数

热门文章

  1. 有趣的编程代码_iPad amp; Mac 编程游戏推荐
  2. HTML+CSS+JS实现 ❤️动态散花背景❤️
  3. 《springcloud超级入门》微服务的概念和优缺点《一》
  4. JAVA 从菜鸟成长为大牛的必经之路
  5. config设置源 使用pip_python pip源配置
  6. mysql timestamp排序_对多个表进行排序MYSQL TimeStamp
  7. c语言sin函数返回nan,C语言入口函数和LD_PRELOAD环境变量
  8. python递归查找_[Python]递归查找文件(最简洁)
  9. antd table排序 vue_antd of Vue 之table组件踩坑记
  10. 我的Go+语言初体验——(1)超详细安装教程