JavaWeb:HttpSession(一)
Session机制:
1)、session机制采用的是在服务器端保持 HTTP 状态信息的方案 。
2)、当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否包含了一个session标识(即sessionId),如果已经包含一个sessionId则说明以前已经为此客户创建过session,服务器就按照session id把这个session检索出来使用(如果检索不到,可能会新建一个,这种情况可能出现在服务端已经删除了该用户对应的session对象,但用户人为地在请求的URL后面附加上一个JSESSION的参数)。如果客户请求不包含sessionId,则为此客户创建一个session并且生成一个与此session相关联的sessionId,这个session id将在本次响应中返回给客户端保存。
3)、方法:
--获取Session 对象:
request.getSession(), request.getSession(boolean Create);
--属性相关的:
getAttribute()、setAttribute()、removeAttribute()
--使HttpSession 失效:
invalidate()
--设置其最大时效:
setMaxInactiveInterval()
4)、url 重写:它允许不支持Cookie的浏览器也可以与WEB服务器保持连续的会话。将会话标识号以参数形式附加在超链接的URL地址后面的技术称为URL重写。
<%= response.encodeURL("login.jsp")%>
5)、应用:一个简易的购物车。
先看一下效果:




代码:
step1.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
4 <html>
5 <head>
6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7 <title>Insert title here</title>
8 </head>
9 <body>
10 <h4>Step1:选择要购买的书籍</h4>
11 <form action="<%= request.getContextPath() %>/processStep1" method="post">
12 <table border="1" cellpadding="10" cellspacing="0">
13 <tr>
14 <td>书名</td>
15 <td>购买</td>
16 </tr>
17 <tr>
18 <td>Java</td>
19 <td><input type="checkbox" name="book" value="Java"/></td>
20 </tr>
21 <tr>
22 <td>Mysql</td>
23 <td><input type="checkbox" name="book" value="MySql"/></td>
24 </tr>
25 <tr>
26 <td>Oracle</td>
27 <td><input type="checkbox" name="book" value="Oracle"/></td>
28 </tr>
29 <tr>
30 <td colspan="2"><input type="submit" value="Submit"/></td>
31 </tr>
32 </table>
33 </form>
34 </body>
35 </html>
ProcessStep1Servlet .java:
package com.hnust.javaweb;
2
3 import java.io.IOException;
4 import javax.servlet.ServletException;
5 import javax.servlet.http.HttpServlet;
6 import javax.servlet.http.HttpServletRequest;
7 import javax.servlet.http.HttpServletResponse;
8
9 public class ProcessStep1Servlet extends HttpServlet {
10 private static final long serialVersionUID = 1L;
11
12 protected void doPost(HttpServletRequest request, HttpServletResponse response)
13 throws ServletException, IOException {
14 //获取book 参数信息
15 String[] book = request.getParameterValues("book");
16 //放入
17 request.getSession().setAttribute("books", book);
18 //重定向到step2.jsp 页面,要用绝对路径
19 response.sendRedirect(request.getContextPath() + "/shoppingcart/step2.jsp");
20 }
21
22 }
step2.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
4 <html>
5 <head>
6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7 <title>Insert title here</title>
8 </head>
9 <body>
10 <h4>Step2:请输入寄送地址和信用卡地址</h4>
11 <form action="<%= request.getContextPath() %>/processStep2" method="post">
12 <table border="1" cellpadding="10" cellspacing="0">
13 <tr>
14 <td colspan="2">基本信息</td>
15 </tr>
16 <tr>
17 <td>姓名</td>
18 <td><input type="text" name="name"/></td>
19 </tr>
20 <tr>
21 <td>寄送地址:</td>
22 <td><input type="text" name="address"/></td>
23 </tr>
24 <tr>
25 <td colspan="2">信用卡信息</td>
26 </tr>
27 <tr>
28 <td>种类</td>
29 <td>
30 <input type="radio" name="cardtype" value="Visa"/>Visa
31 <input type="radio" name="cardtype" value="Master"/>Master
32 </td>
33 </tr>
34 <tr>
35 <td>卡号</td>
36 <td><input type="text" name="card"/></td>
37 </tr>
38 <tr>
39 <td colspan="2"><input type="submit" value="Submit"/></td>
40 </tr>
41 </table>
42 </form>
43 </body>
44 </html>
ProcessStep2Servlet .java:
package com.hnust.javaweb;
2
3 import java.io.IOException;
4 import javax.servlet.ServletException;
5 import javax.servlet.http.HttpServlet;
6 import javax.servlet.http.HttpServletRequest;
7 import javax.servlet.http.HttpServletResponse;
8
9 public class ProcessStep2Servlet extends HttpServlet {
10 private static final long serialVersionUID = 1L;
11
12 protected void doPost(HttpServletRequest request, HttpServletResponse response)
13 throws ServletException, IOException {
14 //获取请求参数
15 String name = request.getParameter("name");
16 String address = request.getParameter("address");
17 String cardtype = request.getParameter("cardtype");
18 String card = request.getParameter("card");
19 //封装
20 Customer customer = new Customer(name, address, cardtype, card);
21 //放入
22 request.getSession().setAttribute("customers", customer);
23 //重定向到step3.jsp 页面,使用绝对路径
24 response.sendRedirect(request.getContextPath() + "/shoppingcart/step3.jsp");
25 }
26
27 }
注意要建一个 Customer 实体类,来封装 step2 里面的信息。代码就不贴了。
step3.jsp:
<%@page import="com.hnust.javaweb.Customer"%>
2 <%@ page language="java" contentType="text/html; charset=UTF-8"
3 pageEncoding="UTF-8"%>
4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
5 <html>
6 <head>
7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
8 <title>Insert title here</title>
9 </head>
10 <body>
11 <h4>Step3:订单确认</h4>
12 <%
13 String[] books = (String[]) session.getAttribute("books");
14 Customer cus = (Customer) session.getAttribute("customers");
15 %>
16 <table border="1" cellpadding="10" cellspacing="0">
17 <tr>
18 <td>顾客姓名</td>
19 <td><input type="text" value="<%= cus.getName() %>"/></td>
20 </tr>
21 <tr>
22 <td>地址</td>
23 <td><input type="text" value="<%= cus.getAddress() %>"/></td>
24 </tr>
25 <tr>
26 <td colspan="2">付款信息</td>
27 </tr>
28 <tr>
29 <td>信用卡类型</td>
30 <td><input type="text" value="<%= cus.getCardtype() %>"/></td>
31 </tr>
32 <tr>
33 <td>卡号</td>
34 <td><input type="text" value="<%= cus.getCard()%>"/></td>
35 </tr>
36 <tr>
37 <td colspan="2">订货项目</td>
38 </tr>
39 <tr>
40 <td></td>
41 <td>
42 <%
43 for(String book : books){
44 out.print(book);
45 out.print("<br>");
46 }
47 %>
48 </td>
49 </tr>
50 </table>
51 </body>
52 </html>
JavaWeb:HttpSession(一)的更多相关文章
- JavaWeb 后端 <四> 之 Cookie HttpSession 学习笔记
一.会话管理概述 1.什么是会话? 好比一次通话.打开浏览器,点击多次链接(发出多次请求和收到多次的响应),关闭浏览器,这个过程就是一次会话. 有功能 可以 文件 新建会话 2.解决的问题是什么? ...
- Javaweb学习笔记——(十一)——————JSP、会话跟踪、Cookie、HttpSession
JSP1.什么是JSP jsp即java server pages,它是Javaweb的动态资源. jsp = html + java脚本 + jsp动态标签(包含EL表达式)2.JSP中java脚本 ...
- 超全面的JavaWeb笔记day11<JSP&Session&Cookie&HttpSession>
1.JSP 2.回话跟踪技术 3.Cookie 4.HttpSession JSP入门 1 JSP概述 1.1 什么是JSP JSP(Java Server Pages)是JavaWeb服务器端的动态 ...
- JavaWeb之HttpSession
时间:2016-11-17 22:33 --HttpSession一.HttpSession概述 1.HttpSession是由JavaWeb提供的,用来进行会话跟踪的类. 2.sessi ...
- JavaWeb学习笔记——开发动态WEB资源(八)cookies和httpsession
会话: cookies: (1)cookies是WEB服务器发送到浏览器的简短文本信息 (2)cookies可以禁用 httpsession: 一次会话是从你打开浏览器开始到你关闭浏览器结束 提供一种 ...
- JavaWeb学习笔记-使用HttpSession对象跟踪会话
使用HttpSession接口开发的步骤: 1.获取HttpSession对象 2.对HttpSession对象进行读写 3.手工终止HttpSession,或者自动终止 常用方法: getId(): ...
- JavaWeb——Listener
一.基本概念 JavaWeb里面的listener是通过观察者设计模式进行实现的.对于观察者模式,这里不做过多介绍,大概讲一下什么意思. 观察者模式又叫发布订阅模式或者监听器模式.在该模式中有两个角色 ...
- Javaweb学习笔记——上传下载文件
一.前言 在Javaweb中,上传下载是经常用到的功能,对于文件上传,浏览器在上传的过程中是以流的过程将文件传给服务器,一般都是使用commons-fileupload这个包实现上传功能,因为comm ...
- HttpSession
(Cookie是用来设置浏览器保存数据的时间的: Session是只要浏览器不关闭,数据则会存在,一旦关闭浏览器数据即消失 ) 1. HttpSession概述 * HttpSession是由Java ...
随机推荐
- 关于iptables命令
iptables 指令语法:iptables [-t table] command [match] [-j target/jump]-t 参数用来指定规则表,内建的规则表有三个,分别是:nat.man ...
- kali下操作 Apache2
Linux系统为Ubuntu 一.Start Apache 2 Server /启动apache服务 # /etc/init.d/apache2 start or $ sudo /etc/init.d ...
- pycharm安装第三方库失败解决办法
一.报错信息:[file][Default Settint]---Project Interpreter 点击 搜索suds安装模块报错 解决:依据上图提示找到C:\Program Files\Jet ...
- 3.PO如何给开发团队讲好故事
敏捷开发系列文章目录 讲出符合开发团队味口的故事. 上一章说了敏捷开发团队的构成与迭代过程,本章重点说一下迭代第一天的计划会议.熟话说“好的开始就成功了一半”,一个迭代的计划会议做得好不好确实直接注定 ...
- 第四节:Windows系统安装时BIOS设置及注意
BIOS系统 BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统".在IBM PC兼容系统上 ...
- [C++]linux下实现rm()函数删除文件或目录
转载请注明原创:http://www.cnblogs.com/StartoverX/p/4600866.html 在linux下有两个函数可以用来删除文件: #include <unistd.h ...
- Unity扩展编辑器二
Unity支持自行创建窗口,也支持自定义窗口布局,在Project视图中创建一个Editor文件夹,在文件夹中创建一条脚本 自定义窗口需要让脚本继承EditorWindow在设置MenuItem,此时 ...
- d-ary heap实现一个快速的优先级队列(C#)
d-ary heap简介: d-ary heap 是泛化版本的binary heap(d=2),d-ary heap每个非叶子节点最多有d个孩子结点. d-ary heap拥有如下属性: 类似comp ...
- mysql 优化之 doublewrite buffer 机制
是什么? doublewrite buffer是mysql 系统表空间的一块存储区域. 有什么用? 在Innodb将数据页写到数据存储文件之前,存储从Innodb缓存池刷过来的数据页.且只有将数写入d ...
- 浅谈C与Java
Java的方法调用过程 Java变量:基本类型变量.指针变量 push 压入新的栈桢 在栈桢内部创建局部基本类型变量,接收参数值 在栈桢内部创建局部指针变量,接收参数值后,该指针变量指向堆上实例 po ...