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

    技术2022-05-11  17

      由于种种原因,部分内容被隐藏,请大家原谅。

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

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

     

     

    授课教师:牟勇 课时: 100 分钟   本章技能目标 n 理解会话跟踪原理 n 会获得Sesison对象 n 会使用session对象进行数据存取 本章重点 nHttpSession的理解 nsession的创建 本章难点 n使用session进行会话跟踪 本章工作任务 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 :预习第四章,试做课后的选择题

    最新回复(0)