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 ...
随机推荐
- 20155238 2016-2017-2 《Java程序设计》第一周学习总结
教材内容总结 浏览教材,根据自己的理解每章提出一个问题 1.Java语言跨平台的依据是什么?标准的出现是否会限制JAVA的开发与发展? 2.怎样理解类?PATH对于Java编写的意义是什么? 3.Ja ...
- 2018下学期C语言学习总结
怎么说呢,2018年下学期已经过去了,2019年的上学期又来了,在2018年没有达到自己想要的结果,希望2019年可以达到,加油!我希望我以后可以又快又准确的完成C语言的编程,学习好所以关于电脑的基础 ...
- centos 中sshd莫名其妙不见了?
发现问题 遇到问题:首先莫要慌:事出有因:先检查一波: 首先呢,看一下/var/log/yum.log 是否有误删的记录: 如有被误删的操作的话:可以去看看日志:到底咋回事: 然后么 yum ins ...
- springmvc controller转发setViewName时找不到路径的问题以及转发视图时出现找不到样式的问题
注释掉的部分是错误的写法,@RequestMapping 需要将方法放置在要转发的视图所在目录下,不然视图会找不到样式(无法正确的加载css文件), 如果将方法放在了视图所在目录下,那么 setUie ...
- Windows:任务调度器
Windows 服务器系列: Windows:查看IP地址,IP地址对应的机器名,占用的端口,以及占用该端口的应用程 Windows:使用Dos命令管理服务(Services) Windows:任务调 ...
- iframe的简单使用方法
1.父页面调用子页面的元素(a代表iframe的id或者class,b代表子页面) $('a').contents().find("b") 2.子页面调用父页面的元素(c代表父页面 ...
- 机器学习之利用KNN近邻算法预测数据
前半部分是简介, 后半部分是案例 KNN近邻算法: 简单说就是采用测量不同特征值之间的距离方法进行分类(k-Nearest Neighbor,KNN) 优点: 精度高.对异常值不敏感.无数据输入假定 ...
- Cisco Packet Tracer中通过集线器组网
Cisco Packet Tracer中可以通过集线器将多台电脑完成通信. Cisco Packet Tracer 6.2.0 一.添加三台电脑设备 1.按照下图1.2步骤操作,2步骤执行三次,拖拽P ...
- 私有Docker仓库login Error response from daemon: Get https://x.x.x.x/v2/: dial tcp x.x.x.x:443: connect: connection refused
一.登陆私有仓库错误: docker login --username=evan 192.168.0.203 Error response from daemon: Get https://192.1 ...
- Linux学习之常用系统工作命令(一)
由于centos和RHEL互通,两个版本可以相互学习,所以截图有两个界面 Linux系统与win系列是两个几乎完全不同的操作系统,但是就应用范围来说,是win系统更胜一筹,然而,这反而也成为win系 ...