您的位置:首页 > 编程语言 > Java开发

教案:《开发基于JSPServletJavaBean的网上交易系统》教案—第3章 基于Servlet的会话跟踪(一)

2008-05-08 14:35 736 查看
由于种种原因,部分内容被隐藏,请大家原谅。

如果有什么问题,可以与我联系,我会尽快解答。

如果你觉得这篇文章对你有用,请回贴,谢谢。





授课教师:牟勇
课时:100分钟

l 本章技能目标
n理解会话跟踪原理
n会获得Sesison对象
n会使用session对象进行数据存取
l 本章重点
nHttpSession的理解
nsession的创建
l 本章难点
n使用session进行会话跟踪
l 本章工作任务
n升级E-Book电子书店实现购物车功能
u 显示书籍列表
u 单击书籍后,显示书籍的详细信息
l 整章授课思路
n本章依次讲解三个问题:回顾HTTP协议的无状态,会话跟踪原理,实现E-Book电子书店显示和查看书籍。
n回顾HTTP协议的无状态:通过计算机在网络中遇到的问题,进行疑问式阐述HTTP的无状态,而这种无状态在很多情况下无法完成程序的需要。在这种情况下,只有通过会话跟踪来实现。
n会话跟踪原理:服务器可以为客户端分配一个唯一的ID号,从而来区分不同的客户端。并说明会话是如何创建,使用的,以及会话的存在周期。
n实现E-Book电子书店显示和查看书籍:首先获得所有书籍的信息并显示,当用户单击某一本书籍时,显示该书籍的详细信息,以供用户选择是否购买。
回顾: [5分钟]
request、response 对象有哪些常用方法?
web.xml文件的作用?
如何理解Servlet的生命周期?
实现页面跳转有几种方式?它们之间有哪些区别?
如何理解HTTP协议?
预习检查: [5分钟]
如何理解会话(session)?
使用什么方法来获得HttpSession对象?
课程知识点讲解:
回顾HTTP协议的无状态:[20分钟]
问题1:HTTP有什么特点?
答案:无状态
问题2:什么是无状态?
答案:HTTP协议不记录用户的访问信息。
问题3:如何显示张三和李四分别访问了多少次服务?
答案:HTTP协议无法做到,只能另想别的办法,记录用户张三和李四的访问次数。
问题4:在线购物中如何对不同的用户进行区别?
答案:HTTP协议无法做到,只能另想别的办法。
分析:问题3和4归纳起来,其实只要解决一个问题:如何标识一个用户?
解决方案:由服务器提供唯一标识(ID号),每次用户访问时检查这个ID号,以便识别用户。这个方案就是我们平时所说的会话跟踪。

会话跟踪原理[30分钟]
HttpSession对象
v 服务器为每个会话创建一个HttpSession对象
v 每个会话对象都有一个唯一的ID
v 把用户的数据保存在相应的HttpSession对象内
什么是会话?
Session的中文意思就是会话。它是指当前浏览器与服务器间多次的请求、响应关系,
示例:记录不同用户的访问次数

public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
HttpSession session = request.getSession(true); //获得Session对象
Object count = session.getAttribute("COUNTER");//取值
int counter = 0;
if (count == null) {
counter = 1;
//将第一次计数存入session
session.setAttribute("COUNTER", new Integer(1));//存值
} else {
counter = ((Integer) count).intValue();
counter++;//计数加一
//将计数存入session
session.setAttribute("COUNTER", new Integer(counter));
}
}

教员应详细讲解重点代码(红色部分)
会话的创建
使用HttpServletRequest 的 getSession() 方法创建会话,
语法如下:

public HttpSession getSession();
public HttpSession getSession( boolean value);


教员应说明两个getSession方法之间的区别。
会话的使用
保存数据,取出数据

public void setAttribute(String param,Object value);
public Object getAttribute(String param);


说明:保存数据时,数据应以对象的形式进行保存,取出时,数据的类型为Object,所以需要进行类型转换。
session对象的存在周期
v session的创建
n 浏览器访问服务器时,服务器为每个浏览器创建不同的session对象
v session的关闭
n 调用session. invalidate()方法,使session对象失效
n 访问时间间隔大于非活动时间间隔, session对象失效
n 关闭浏览器时,session对象失效
现场编程:在登录页面用户已录入用户名,现编写一个Servlet接收该数据,并把用户名值保存在HttpSession对象内


public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {

String userName=request.getParameter("userName");
HttpSession session=request.getSession();
if (userName!=null && "".equals(userName))
session.setAttribute("userName", userName);
else
response.sendRedirect("index.html");
}
...

教员应请一至二位学员完成该练习。
实现E-Book电子书店显示和查看书籍[30分钟]
实现电子书店的购物车
根据幻灯片,说明电子书店购物车的业务流程。
电子书店演示
v 显示所有书籍的列表
v 点击某本书,显示书籍的详细信息
v 添加当前书籍到购物车
电子书店的数据库设计
见幻灯片19
电子书店的实体对象设计-书(Book)
见幻灯片20
书籍类--BookBean.java

import java.io.Serializable;
public class BookBean implements Serializable {
private String ISBN; //ISBN编号
private String title; //书名
private String copyright; //版权
private String imageFile; //封面图像
private int editionNumber; //版本
private int publisherID; //出版商ID
private double price; //价格
public void setISBN(String isbn) { // 设定ISBN编号
ISBN = isbn;
}
public String getISBN() { // 返回ISBN编号
return ISBN;
}

}
...

教员详细说明实体Bean的一般写法(私有变量,默认构造方法,setXXX()与getXXX()方法)
购物车的设计----书籍清单
见幻灯片21
数据库连接类

public class ConnectionManager {

//打开数据库连接
public static Connection getConnction() {
Connection dbConnection = null;
try {
Class.forName("driver");
dbConnection = DriverManager
.getConnection("url", "user", "pass");
} catch (Exception e) {
e.printStackTrace();
}
return dbConnection;
}
//关闭数据库连接

}

简要说明数据库连接类(打开,关闭,如果有时间,可以现场演示)
数据库访问类

public List getTitles() {
List titlesList = new ArrayList();
try {
connection = ConnectionManager.getConnction();
titlesQuery = connection.prepareStatement("select* form titles");
ResultSet results = titlesQuery.executeQuery();
while (results.next()) {
BookBean book = new BookBean();
book.setISBN(results.getString("isbn"));
... //设置其他的属性值
titlesList.add(book);
}
}catch (Exception exception) {
exception.printStackTrace();
}
return titlesList;
}

简要说明上面的代码(如果有时间,可以现场演示,或请学员来做)
显示所有商品列表--books.jsp

<%
TitlesBean titlesBean = new TitlesBean();
List titles = titlesBean.getTitles();

session.setAttribute( "titles", titles );
//显示titles内数据
for(int i=0;i<titles.size( );i++){
%>
<td>
<A href="displayBook.jsp?isbn=<%= currentBook.getISBN() %>">
<IMG height=110
src="/store/images/<%=currentBook.getImageFile() %>">
</A>
</td>
<% } %>

简要说明上面的代码(如果有时间,可以现场演示或请学员来做)
显示书籍详细信息――displayBook.jsp

<%
List titles = (List) session.getAttribute("titles");
int size = titles.size();
BookBean book = null;
String isbn = request.getParameter("isbn");
int i = 0;
while (i < size) {
book = (BookBean) titles.get(i);
if (isbn.equals(book.getISBN())) { session.setAttribute("bookToAdd", book); // 保存书籍到session对象 break; // isbn 匹配当前书籍
}
i++;
}
%>
<td><IMG src="/store/images/<%=book.getImageFile() %>" /></td>

简要说明上面的代码(如果有时间,可以现场演示或请学员来做)

本章总结 [10分钟]
在Web项目中为什么需要使用会话?
会话是如何创建的?
如何结束一个会话?
如何在会话中保存和取得数据?
考核点
如何创建会话
如何结束一个会话
如何在会话中保存和取得数据
扩展部分:
暂无
学员问题汇总:
暂无
作业:
习题1:71页至72页选择题
习题2:72页第1,2,3,4题
习题3:预习第四章,试做课后的选择题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐