版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、模块模块3 MVC3 MVC模式中购物车业务类模式中购物车业务类JavaBeanJavaBean的设计的设计项目四 使用Servlet实现网上商城商品的管理2工作任务任务一 创建商品表的JAVABEAN;任务二 用普通方法在JSP中对商品表的JAVABEAN进写读写操作;任务三 用JSP标准动作在JSP中对商品表的JAVABEAN进写读写操作任务四 实现网上商店用户JAVABEAN与html登陆界面的数据交互;任务五 用JAVABEAN与内置对象实现网上商店购物车;课堂演示课堂演示3任务一任务一创建商品表的创建商品表的JAVABEANJAVABEAN 学习目标学习目标Java bean的使用重
2、点难点重点难点创建javabean4组件开发请求请求ServletJavaBeanJSP页面页面执行执行调用调用转向转向响应响应JSTL使用使用访问访问返回数据返回数据客户端客户端5为什么需要JAVABEANpublic int saveOrder(String username,String zipcode,String phone, String creditcard,double total) try con = ConnectionManager.getConnction(); String strSql = insert into BookOrder(username,zipcode
3、,phone, + creditcard,total) values(?,?,?,?,?); pStatement = con.prepareStatement(strSql); pStatement.setString(1, username); /设置其它参数值设置其它参数值 result = pStatement.executeUpdate(); catch (SQLException sqlE) sqlE.printStackTrace(); return result;参数过多参数过多,且为对象属性且为对象属性如何按照如何按照OO设计参数?设计参数?使用使用JavaBean进行参数的
4、传递进行参数的传递参数的使用6JAVABEAN介绍qJavaBean的来源qBean:豆子qJavaBean是应用程序的组成部分public class SecondLevelTitle public SecondLevelTitle() private int id; private String titleName; private int parentTitleId; private String creator; public int getId() return this.id; public void setId(int id) this.id=id; /其它其它setter、ge
5、tter方法方法7封装数据的JAVABEANpublic class Order private String userName;/ 用户名用户名 private String zipcode;/ 邮编邮编 private String phone;/ 电话电话 private String creditcard;/ 信用卡信用卡 private double total;/ 总额总额 public Order() public void setUserName(String userName) this. userName = userName; public String getUserN
6、ame() return username; /其它属性的其它属性的setter、getter方法方法JavaBean - Order.java将属性声明为私有属性将属性声明为私有属性无参的公有构造方法无参的公有构造方法公有的设置属性值方法公有的设置属性值方法setXxx( )公有的获取属性值方法公有的获取属性值方法getXxx( )8创建JAVABEANq 使用Eclipse工具自动生成getter/setter方法9课堂实践课堂实践创建商品表数据封装的创建商品表数据封装的javabeanjavabean改错与调试? 课堂实践课堂实践10拓展提高封装业务的封装业务的JavaBean - Or
7、derOperation.javapublic class OrderOperation public int saveOrder(Order order) int result = 0; try Connection con = ConnectionManager.getConnction(); String strSql = insert into BookOrder(username,zipcode,phone, + creditcard,total) values(?,?,?,?,?); PreparedStatement pStatement = con.prepareStateme
8、nt(strSql); pStatement.setString(1, order.getUserName(); /设置其它的参数值设置其它的参数值 result = pStatement.executeUpdate(); catch (SQLException sqlE) sqlE.printStackTrace(); return result; 把封装好数据的对象作为参数把封装好数据的对象作为参数从对象中取数据从对象中取数据演示示例演示示例1: OrderOperation.java11任务小结使用JavaBean封装数据的方法使用javabean封装业务的方法学生自评、互评学生自评、互
9、评 教师抽查小组验收教师抽查小组验收 12任务二任务二在在JSPJSP中对中对JAVABEANJAVABEAN进写读写操作进写读写操作 学习目标学习目标Java bean的使用重点难点重点难点Jsp中使用javabean13JAVABEAN与JSPq广义讲,符合规范的Java类都是JavaBeanqJavaBean的作用q封装数据q处理业务逻辑qJSP与JavaBean如何结合使用呢?qScriptletqJSP标准动作14课堂实践 q用Scriptlet访问javabeanq改错与调试q? 课堂演示与实践课堂演示与实践15任务三任务三用用J JSPSP标准动作读写标准动作读写JAVABEAN
10、JAVABEAN 学习目标学习目标掌握Java bean的使用重点难点重点难点标准动作读写javabean16为什么需要JSP标准动作q通过Java 脚本使用后台JavaBeanq美工难以维护q使用JSP标准动作qJSP标准动作包括:JSP 标准动作标准动作17USEBEAN 动作.quseBean动作创建或者获得一个对象qJavaBean 的scope设置 :创建对象的名称创建对象的名称创建对象的类型创建对象的类型指定对象的范围指定对象的范围范围范围说明说明pageBean 对象只能在当前页面使用,当加载新页面时就会被销毁requestBean对象在一个请求过程中存在sessionBean对
11、象在一个会话中存在,直至会话其终止或被删除为止applicationBean对象在整个应用程序中均可使用18SETPROPERTY和GETPROPERTY动作. .value设置设置 JavaBean 的该属性值的该属性值property指定指定 JavaBean 的属性名称的属性名称q 设置JavaBean的属性值q 获取JavaBean中属性的值.name 属性指定对属性指定对 JavaBean 类类的引用,与的引用,与useBean中的中的id一致一致property指定指定 JavaBean 的属性名称的属性名称name 属性指定对属性指定对 JavaBean 类的引用类的引用19JS
12、P标准动作示例使用使用JSP标准动作显示数据标准动作显示数据 - processorder.jsp jsp:setProperty name=order property=userName value=/ /设置其它属性值设置其它属性值 用户名:用户名: . 邮编:邮编: . 电电 话:话: . 信用卡:信用卡: . 总价:总价: . 获得属性值,并显示在页面上获得属性值,并显示在页面上获得用户提交数据,并为属性赋值获得用户提交数据,并为属性赋值20PARAM的使用使用使用param显示数据显示数据 - processorder.jsp /设置其它属性值设置其它属性值用户名:用户名: . /显
13、示显示order对象其它属性值对象其它属性值姓姓 名名: .总总 价价: . 获得用户提交数据获得用户提交数据获得属性值,并显示在页面上获得属性值,并显示在页面上自动转换数据类型自动转换数据类型21JSP标准动作调用JAVABEANq JSP标准动作与JavaBean的getter、setter方法public class Simplebean private String name; private int age; public Simplebean() /无参的构造函数无参的构造函数System.out.println(调用无参构造方法,创建实例调用无参构造方法,创建实例!); publ
14、ic String getName() /属性的属性的getter方法方法System.out.println(调用了调用了getName()方法,获取方法,获取name值值);return name; public void setName(String username) /属性的属性的setter方法方法name = username;System.out.println(调用了调用了setName()方法,设置方法,设置name值值); SimpleBean.java方法是谁调用的?方法是谁调用的?在在 JSP 中使用中使用 JavaBean 姓名:姓名: 年龄:年龄:setPrope
15、rty动作调用动作调用JavaBean的的setter方法方法getProperty动作调用动作调用JavaBean的的getter方法方法22课堂实践q请使用JSP标准动作创建和使用商品表数据封装JavaBean对象,对该对象的属性进行赋值课堂实践课堂实践23常见错误 要与表单元素名称对应要与表单元素名称对应数据显示为数据显示为null24常见错误 应该是应该是userName这是什么错误?这是什么错误?在在Order中没有找到属性中没有找到属性userName2属性名称错误属性名称错误25常见错误 应该是应该是“order”,要与,要与useBean中的中的id一致一致引用名称错误引用名称
16、错误这是什么错误?这是什么错误?26任务小结标准动作读写javabean学生自评、互评学生自评、互评 教师抽查小组验收教师抽查小组验收 27任务四任务四实现网上商店用户实现网上商店用户JAVABEANJAVABEAN与与HTMLHTML登陆界面的数登陆界面的数据交互据交互 学习目标学习目标掌握Java bean的使用重点难点重点难点JAVABEAN与html登陆界面的交互 28(1)编写实现特定功能的JavaBean;(2)应用在JSP页面中声明并初始化JavaBean,这个JavaBean有一个唯一的id标志,还有一个生存范围scope(根据具体的需要进行指定),同时还要指定JavaBean
17、的class来源(如mybean.LoginBeanr);(3)调用JavaBean提供的public方法或者直接使用标签来得到JavaBean中属性的值。 (4)调用JavaBean中的特定方法完成指定的功能。 任务实施步骤29上机实训JavaBean与HTML表单的交互:在Web程序中,客户端通常是通过HTML表单与应用程序交互,HTML表单中提交的信息存放在request对象中,并且是名称-值对的形式进行传递,应用JavaBean可以实现HTML表单元素与JavaBean属性的映射,从而实现JavaBean属性与HTML表单的输入参数之间的交互。课堂演示与实践课堂演示与实践30拓展提高p
18、ublic boolean getValid() Connection con = ConnectionManager.getConnection(); PreparedStatement pStatement = null; String sql = select * from userinfo where loginname = ?; try pStatement = con.prepareStatement(sql); pStatement.setString(1, getName(); ResultSet rs = pStatement.executeQuery(); if (rs.n
19、ext() & rs.getString(password).equals(getPassword() valid = true; else valid = false; catch (Exception ex) ex.printStackTrace(); return valid;UserManager.java判断是否存在该用户判断是否存在该用户演示示例演示示例2: UserManager.javaq使用标准动作实现登录验证31拓展提高q使用JSP标准动作和JavaBean进行数据验证 创建创建UserManager对象,并为属性赋值对象,并为属性赋值调用验证方法,判断用户是否存在
20、调用验证方法,判断用户是否存在JSP标准动作,转发到标准动作,转发到page属性指定的页面,等价属性指定的页面,等价与与RequestDispatcher对象的对象的forward(req,res)方法方法根据结果,转发到相应页面根据结果,转发到相应页面register.jsp32任务小结Html与javabean的交互学生自评、互评学生自评、互评 教师抽查小组验收教师抽查小组验收 33任务五任务五用用JAVABEANJAVABEAN与内置对象实现网上商店购物与内置对象实现网上商店购物车车 学习目标学习目标Java bean的使用Session的使用重点难点重点难点javabean与sessi
21、on综合应用34提出任务问题q实现电子商城的购物车需求描述 查看所有商品查看所有商品选择商品选择商品放入购物车放入购物车继继续购物续购物结账结账满载而归满载而归35HTTP协议1、HTTP协议有什么特点?q无状态访问访问访问访问我刚刚被访问了两次,但是我我刚刚被访问了两次,但是我不知道,是一个人访问了两次?不知道,是一个人访问了两次?还是两个人各访问一次还是两个人各访问一次HTTP协议不记录用户的信息协议不记录用户的信息2、 什么是无状态 ?36HTTP是无状态协议 3、如何显示张三和李四分别访问某一网页多少次?请求请求请求请求响应响应响应响应张三张三李四李四为了区分用户,需要为了区分用户,需
22、要为不同用户作登记为不同用户作登记37HTTP是无状态协议购买购买2个商品个商品张三张三李四李四4、在线购物系统中如何对用户进行区分?购买购买3个商品个商品一共购买了一共购买了5个商品,个商品,钱应该从谁的帐户上扣呢?钱应该从谁的帐户上扣呢?38HTTP是无状态协议Web程序能不能程序能不能像银行卡号那样,根据像银行卡号那样,根据卡号锁定一个用户呢?卡号锁定一个用户呢?请求请求响应响应响应的时候,由服务器响应的时候,由服务器给我分配一个唯一给我分配一个唯一ID号,号,这样就能区别不同的用户了这样就能区别不同的用户了再次请求的时候,再次请求的时候,我带着我带着ID号,号,告诉服务器告诉服务器“我
23、是谁我是谁”如何标识用户?39会话跟踪qHttpSession对象q服务器为每个会话创建一个HttpSession对象q每个会话对象都有一个唯一的IDq把用户的数据保存在相应的HttpSession对象内第一次请求第一次请求响应响应服务器创建一个服务器创建一个HttpSession对象对象并把该对象的并把该对象的ID返回给用户返回给用户同时,服务器在内存中开辟同时,服务器在内存中开辟一空间,用来保存该对象数据一空间,用来保存该对象数据把把ID发送给客户端发送给客户端第二次请求把第二次请求把ID一一起发送给服务器起发送给服务器根据根据ID号服务器寻找号服务器寻找内存中相应的数据内存中相应的数据4
24、0会话跟踪请求请求 1请求请求 2请求请求 n.q什么是会话q当前浏览器与服务器间多次的请求、响应关系,被称作一个会话41使用会话的事例public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException HttpSession session = request.getSession(true); Object count = session.getAttribute(COUNTER);int counter = 0;if (count
25、= null) counter = 1; /将第一次计数存入将第一次计数存入session session.setAttribute(COUNTER, new Integer(1); else counter = (Integer) count).intValue(); counter+;/计数加一计数加一/将计数存入将计数存入sessionsession.setAttribute(COUNTER, new Integer(counter); 取出取出session对对象内存储的值象内存储的值把数据存储在把数据存储在session对象内对象内记录不同用户的访问次数 演示示例演示示例1:网页计算
26、网页计算Counter.java获得获得session对象对象42会话的创建和使用 public HttpSession getSession(); public HttpSession getSession( boolean value);q 会话的创建q使用HttpServletRequest 的 getSession() 方法创建会话, 语法如下:q 会话的使用q使用HttpSession接口的方法,进行q保存数据:q取出数据:public void setAttribute(String param,Object value);public Object getAttribute(St
27、ring param);获取获取session对象的方法对象的方法getSession( )getSession(boolean bool )getSession( true )truefalse返回与当前关联的返回与当前关联的会话,如果没有就会话,如果没有就创建后将其返回创建后将其返回返回与当前关联返回与当前关联的会话,如果没的会话,如果没有返回有返回null使用时,将其转换成原来数据类型使用时,将其转换成原来数据类型43SESSION对象的存在周期q session对象的存在周期qsession的创建q浏览器访问服务器时,服务器为每个浏览器创建不同的session对象qsession的关闭
28、q调用session. invalidate()方法,使session对象失效q访问时间间隔大于非活动时间间隔, session对象失效q关闭浏览器时,session对象失效请求请求在内存开辟空间在内存开辟空间保存数据信息保存数据信息清空内存内当前浏清空内存内当前浏览器相关数据信息览器相关数据信息44课堂实践 在登录页面用户已录入用户名,现编写一个在登录页面用户已录入用户名,现编写一个Servlet接接 收该数据,并把用户名值保存在收该数据,并把用户名值保存在HttpSession对象内对象内public void doGet(HttpServletRequest request, HttpS
29、ervletResponse response) throws ServletException, IOException String userName=request.getParameter(userName);HttpSession session=request.getSession();if (userName!=null & .equals(userName)session.setAttribute(userName, userName);elseresponse.sendRedirect(index.html);.45购物车的设计分析q设计分析q购物车中对象的设计q使用
30、Servlet实现添加书籍到购物车q使用JSP实现查看购物车的书籍列表选择商品选择商品放入购物车放入购物车继继续购物续购物结账结账满载而归满载而归本章要完成内容本章要完成内容购物车如何设计呢?购物车如何设计呢?46购物车中对象的设计q 对象的设计书籍本身信息书籍本身信息书籍购买数量书籍购买数量书籍名称书籍名称书籍编号书籍编号书籍价格书籍价格书籍版本号书籍版本号BookBean购买书籍的数量购买书籍的数量public class CartItemBean implements Serializable private BookBean book; /当前商品当前商品 private int qu
31、antity; /购物车中的数量购物车中的数量 public CartItemBean( BookBean bookToAdd, int number ) book = bookToAdd; quantity = number; public void setQuantity( int number ) quantity = number; public int getQuantity() return quantity; /其他的其他的setter、getter方法方法对象属性对象属性构造方法构造方法属性的属性的getter、setter方法方法演示示例演示示例1:购物车商品信息类购物车商品
32、信息类CartItemBean.java47购物车的实现q使用购物车存放商品装入购物车装入购物车方便存取商品方便存取商品48购物车的实现q使用Map实现购物车BookBeanHashMapsessionkeyvalue存放到存放到存放到存放到书籍数量书籍数量CartItemBeanisbncart49MAP回顾什么是什么是Map?Map的特点是什么?的特点是什么?Map的对象如何创建?的对象如何创建?如何向如何向Map中添加数据?中添加数据?如何从如何从Map中取数据?中取数据?50实现添加商品到购物车q添加书籍到购物车 q获得session对象q从session中取出BookBean对象q创
33、建HashMap对象,并添加一个条目到Map中public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException HttpSession session = request.getSession(false); BookBean book = (BookBean)session.getAttribute(bookToAdd); Map cart = new HashMap(); cart.put(book.getISBN(), new
34、CartItemBean(book, 1); session.setAttribute(cart, cart);获得获得session对象对象从从session中取出书籍信息中取出书籍信息把数据存入到把数据存入到session中中51实现添加商品到购物车q判断购物车中是否存在该书籍q存在:数量加一q不存在:添加条目到Map中 HttpSession session = request.getSession(false); Map cart = (Map) session.getAttribute(cart); if (cart = null) cart = new HashMap(); ses
35、sion.setAttribute(cart, cart); BookBean book = (BookBean) session.getAttribute(bookToAdd); CartItemBean cartItem = (CartItemBean) cart.get(book.getISBN(); if (cartItem != null) cartItem.setQuantity(cartItem.getQuantity() + 1); else cart.put(book.getISBN(), new CartItemBean(book, 1); 如果如果session中存在该书
36、籍,数量加中存在该书籍,数量加1如果如果session中不存在该书籍,添加条目数量为中不存在该书籍,添加条目数量为1判断判断session中是否存在中是否存在cart对象对象演示示例演示示例2:向购物车中添加商品向购物车中添加商品AddBookToCart.java52查看购物车的商品列表q转向viewCart.jspq从session中取出Mapq从Map中取出CartItemBean数据Map cart = (Map) session.getAttribute(cart);Set cartItems = cart.keySet();Object isbn = cartItems.toArr
37、ay();BookBean book;int i = 0;while (i isbn.length) cartItem = (CartItemBean) cart.get(String)isbni); book = cartItem.getBook(); /在页面上显示在页面上显示book数据,如数据,如:book.getTitle(); i+;viewCart.jsp从从session中取出中取出Map得到得到Map中中key值的值的Set集合,再转换成数组,集合,再转换成数组,以便使用循环进行遍历以便使用循环进行遍历通过通过key值取值取value演示示例演示示例3:显示购物车内商品显示购
38、物车内商品viewCart.jsp53SET介绍Set接口继承关系和常用方法接口继承关系和常用方法Collection接口接口Set接口接口HashSet类类TreeSet类类int size( )boolean isEmpty() Object toArray() boolean add(Object o) 继承继承实现实现实现实现返回返回Set集合元素数集合元素数返回一个包含返回一个包含 Set 中所有元素的数组中所有元素的数组 向向Set中添加元素中添加元素判断判断Set中是否包含元素,不包含返回中是否包含元素,不包含返回true54集合接口和类(2-1)q 集合接口、类关系图Colle
39、ction接口接口 List接口接口Set接口接口ArrayList类类LinkedList类类HashSet类类TreeSet类类继承继承 继承继承 实现实现 实现实现 List及实现类是可变及实现类是可变大小的列表大小的列表 ,适用于,适用于按数值索引访问元素按数值索引访问元素 Set集合中不允许集合中不允许有重复的数据有重复的数据 55集合接口和类(2-2)q 集合接口、类关系图Map接口接口 HashMap类类 Properties类类Map中以键中以键-值对值对形式存储数据形式存储数据 实现实现 56现场编程添加商品到购物车的实现步骤是什么?并写出相关代码。q首先从session中取
40、出Map对象q判断Map中是否存在该数据q存在:数量加一q不存在:添加,数量为一57显示购物车数据q如何显示购物车内Map中所有数据q可不可以使用Map的size()进行循环获得key、value值qMap 不具有整数索引,不能利用size()进行循环q使用Set接口qSet接口继承了Collection接口,但是它不允许集合中存在重复项 qSet接口在Map中的使用Map cart = (Map) session.getAttribute(cart);for(int i=0;icart.size();i+) CartItemBean cartItem =(CartItemBean)cart.get(i); Map没有整数索引,参数应该是没有整数索引,参数应该是key值值Map cart = (Map) session.getAttribute(cart);Set cartItem
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024 年自建住宅租赁协议标准格式版B版
- 暨南大学《当代资本主义研究》2023-2024学年第一学期期末试卷
- 汽车改装技术 课件 6.4内饰塑料件喷漆改色认知
- 垃圾处理与资源化服务合同2024
- 2024年度建筑工程合同工程量清单2篇
- 酒店垃圾分类培训
- 腹腔穿刺术护理
- 谈论休闲活动英语
- 防火门品牌保护与维权服务合同(二零二四年版)3篇
- 施工现场综合应急预案
- 2019新人教版高中生物必修二全册重点知识点归纳总结(遗传与进化复习必背)
- 畜牧兽医法规课件
- 国开电大《建筑测量》实验报告5
- 《网络心理学》第七课 网络与记忆 何凌南 13-11-8课件
- 冷食加工流程图3.2.1
- 双减背景下小学语文作业的有效设计课件
- 集训营quite a number of things have been done一、破冰方案
- 园林绿化苗木、种子进场报验表
- 北京科技大学第二批非教学科研岗位招考聘用(必考题)模拟卷
- 开利变风量空气处理机组BFP(X)样本
- 竣工决算审计服务方案
评论
0/150
提交评论