JavaWeb应用商品的显示与查询.ppt_第1页
JavaWeb应用商品的显示与查询.ppt_第2页
JavaWeb应用商品的显示与查询.ppt_第3页
JavaWeb应用商品的显示与查询.ppt_第4页
JavaWeb应用商品的显示与查询.ppt_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目三 网上商城商品的显示与查询,3. 任务实施 (1)任务1 网上商城商品信息实体分析与设计 (2)任务2 完成网上商城商品信息的查询 (3)任务3 实现网上商城商品信息的分页显示,2. 相关知识 (1)Java Bean 基础 (2)Java Bean的使用 (3)Java Bean的设计 (4)数据库分页设计,1. 项目引入,课程目标,理解JavaBean的概念和特点,掌握编写、编译、调试、布置Bean的方法; 掌握表单与Bean的交互方法;程序片中使用JavaBean的方法; 掌握数据库分页技术。,能力目标,能熟练部署JavaBean,能编写JavaBean,并利用JavaBean实现对网上商城中商品数据库的访问。 实现网上商城商品信息的分页显示。,项目引入,商品显示是商品展现的一种方式,客户登陆网站后首先看到的商品的分类,客户可以点击分类查询各种分类 商品的信息。 商品检索是方便客户使用的一种功能,客户可以输入单个条件查询商品信息,也可以通过复合查询商品信息。 本项目主要内容是利用Java Bean技术完成网上商城中商品的显示与查询。,2019/5/27,5,商品显示与检索业务流程分析,2019/5/27,6,商品显示与检索业务流程分析,任务3.1 商品信息实体分析与设计,【步骤】 (1)分析后台管理相关实体,得到商品信息实体; (2)设计商品信息实体属性,详见表3-1; (3)创建数据库,将上述实体转换成实际存储的表; (4)利用Java技术完成数据库的连接; (5)利用JavaBean技术完成商品信息实体类的建立。,任务3.1商品信息实体分析与设计,表3-1 goods表,3.1.1 任务相关知识点,(1)JSP+JavaBean开发模式 (2)JavaBean设计规范 (3)创建与布署JavaBean,3.1.1 相关知识JavaBean基础知识,2019/5/27,10,项目2中开发模式存在的问题分析及解决方法: Jsp页面由html和Java程序片组成,如果程序片和Html大量混在一起,就显得页面混杂,不易维护。 Jsp页面将数据的处理过程指派给一个或几个beans来完成。一方面减少代码量,另一方面容易维护。 使用JSP+JavaBean开发模式,实现页面与数据处理真正地分离。 什么是JavaBean JavaBean是Java程序设计中的一种组件技术。Sun公司把JavaBean定义为一个可重复使用的软件组件,类似于电脑CPU、硬盘等组件。从程序员编程的角度看,实际上JavaBean组件就是Java开发中的一个类,通过封装属性和方法成为具有某种功能和接口的类,简称Bean。,3.1.1 相关知识JavaBean基础知识,2019/5/27,11,JavaBean规范 编写JavaBean必须满足以下几点: JavaBean类必须有一个无参构造方法,用于使用实例化JavaBean类时调用; 所有JavaBean必须放在一个包中; JavaBean必须声明成public class类型文件名称与类名称一致; 所有的属性必须封装即申明为private; 设置和取得属性可以通过setXxx、getXxx方法。即: set和get方法名称与属性名称之间必须对应,也就是:如果属性名称为xxx,那么set和get方法的名称必须为setXxx()和getXxx()。,3.2.1 相关知识在JSP中使用JavaBean,2019/5/27,12,Java命名规范: 包命名:全部字母小写:cn.mldn.lxh 类命名:单词的首字母大小:SimpleBean 属性名称:第一个单词的首字母小写,之后每个单词的首字母大写:studentName; 方法命名:与属性命名相同:public void sayHello(); 常量命名:全部单词大写:final String DBDEIVER=”NLDN”,3.2.1 相关知识在JSP中使用JavaBean,2019/5/27,13,举例:在项目2的基础上进行修改,创建项目user login及其UserBean.java;创建辅助类DBConn.java实现与用户数据库的连接。,LoginCl.jsp 验证用户,Login.jsp 用户登录界面,wel.jsp 欢迎界面,登录请求,不合法,合法,数据库 (user表),Model1模式(jsp+javaBean),userBeanCljava (业务逻辑),userBean.java 表示user表,ConnDB.java 得到连接,界面(Veiw),模型(Model),操作数据库,调用,分页请求,分页请求,分页处理,3.1.1 相关知识JavaBean基础知识,2019/5/27,14,举例:UserBean定义格式如下: package com.lx.model; /必须创建包 public class UserBean private String userName; /私有的属性 private String passWord; public UserBean() /构造函数公共且无参 public String getUsername() /一组set、get方法 return username; public void setUsername(String username) this.username = username; public String getPassword() return password; public void setPassword(String password) this.password = password; ,3.1.1 相关知识JavaBean基础知识,2019/5/27,15,举例:辅助类DBConn.java : package com.lx.model; import java.sql.*; public class DBConn private Connection ct=null; public Connection getConn() try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); ct=DriverManager.getConnection(“jdbc:odbc:student“,“sa“,“sa“); catch(Exception e) e.printStackTrace(); return ct; ,3.1.1 相关知识JavaBean基础知识,2019/5/27,16,创建与布署JavaBean: 1. 借助Java开发工具(如MyEclipse),按Bean的规范创建Bean; 2. 为了让Tomcat6.0找到JavaBean类,类文件必须保存在特定的目录中:即当前Web服务目录中WEB-INFclasses子目录下。WEB-INF结构如下: userlogin /项目名即WEB服务目录 |WEB-INF |classes/:此目录存储会用到的Java类(.class) |lib/:此目录存储Web程序会用到的第三方jar文件 |web.xml:此文件为网站结构部署描述符,记载每个网站程序的设定 注意:Tomcat服务器,在默认情况下是不能读取修改后的JavaBean, 必须重新启动服务器 观察项目userlogin,并发布该项目,在发布目录中查看UserBean.class及DBConn.class类文件所在目录。,2019/5/27,17,3.1.2 任务实施,完成以下任务: 1. 仿照userlogin项目完成本项目ConnDB.java设计,实现 数据库的连接 2. 完成GoodsBean的设计。 3. 具体代码实现参见项目:goodsmanager,GoodsShowCl.jsp 处理控制,Index.jsp 商品浏览,GoodsShow.jsp 查询结果显示,分页请求,分页显示,查询成功,数据库 (goods表),Model1模式(jsp+javaBean),goodsBeanCljava (业务逻辑),goodsBean.java 表示goods表,Conn DB.java 得到连接,界面(Veiw),模型(Model),操作数据库,调用,查询请求,任务小结,(1)JSP+JavaBean开发模式 (2)JavaBean设计规范 (3)创建与布署JavaBean,2019/5/27,18,课后习题,思考题 (1) 纯JSP模式与JSP+JavaBean模式的区别? (2) 在创建JavaBean时,要注意些什么? (3) 如何布署JavaBean?,任务3.2 商品信息的查询,本任务主要是在上一任务的基础上完成网上商城中商品信息的查询,如查找成功,则在查询结果显示页面,显示该商品的详细内容,不成功则返回到商品浏览主页面。,3.2.1 任务相关知识点,(1)在JSP中使用JavaBean对象 (2)JSP中获取JavaBean属性值 (3)JSP中设置JavaBean属性值,3.2.1 相关知识在JSP中使用JavaBean,2019/5/27,22,在JSP中使用JavaBean : 1. 使用 导入命令: 如Java程序中一样,通过创建JavaBean对象,调用其相关方法来使用Bean. 具体实现参见userlogin项目中的loginCL.jsp,3.2.1 相关知识在JSP中使用JavaBean,2019/5/27,23,在JSP中使用JavaBean对象 : 2. 使用JSP的动作标签: 在JSP中专门提供了三个动作标签来与JavaBean交互,分别是: 、 (1) 在JSP中使用JavaBean对象: / 对象所属的包.类名称路径 或: ,3.2.1 相关知识在JSP中使用JavaBean,2019/5/27,24,在JSP中使用JavaBean对象: scope:指定JavaBean的作用范围,有4种取值类型: Page:JavaBean只能在当前页面中使用。JSP页面执行完毕后,该JavaBean将会被进行垃圾回收。 Request :除了当前网页之外,当使用或标签跳转到下一页时,亦可以存取到原来的网页产生的JavaBean。 Session:该bean的有效期是客户的会话期间,也就是说,如果客户在多个页面中相互连接,每个页面都含有一个useBean标签,这些useBean标签的id的值相同,并且scope的值都是session,那么该客户在这些页面得到的beans是相同的。如果客户改变了某个页面beans的属性,其它页面的这个beans的属性也将发生变化。 Application:只要服务器不重新启动开机,它就一直存在服务器内存中。在当前整个Web应用的范围内有效,但占有过量的内存。 应用举例: page:(pageJBDemo01.jsp 、pageJBDemo02.jsp ) Request:(requestJBDemo01.jsp 、requestJBDemo02.jsp) Session:(sessionJBDemo01.jsp、sessionJBDemo02.jsp),3.2.1 相关知识在JSP中使用JavaBean,2019/5/27,25,在JSP中使用JavaBean : (2)JavaBean属性的取得方法 可以用动作标签取得JavaBean中的属性,并且以字符串的形式显示给用户。在使用之前,必须使用标签获得一个Bean。 格式如下: 或: 注意:name属性值与中的id属性值相同,用来指定要获取的是哪个Beans的属性值;property取值是该beans的一个属性的名字。,3.2.1 相关知识在JSP中使用JavaBean,2019/5/27,26,当需要指定某个属性设置内容的时候,可以在property中指定参数 :自动匹配 :可以根据自己的需要,设置需要的属性 :可以根据自己的需要,任意选择传递的参数,其中property指定Bean中的属性名,param指定request中的参数名,如果Bean属性和request参数的名字不同,就必须指定。 :根据用户的需要,自己设置参数的值,如果输入的值是一个变量,则需要用表达式输出。 注意:使用JavaBean的setProperty方法,可以自动将传递过来的只有数字的字符串,变为整型,之后将内容赋值给具体的属性很智能,3.2.1 相关知识在JSP中使用JavaBean,2019/5/27,27,在JSP中使用JavaBean : (3)JavaBean属性的设置方法 JSP提供了四种方法设定JavaBean的属性值。 :自动匹配 :可以根据自己的需要,设置需要的属性 :可以根据自己的需要,任意选择传递的参数,其中property指定Bean中的属性名,param指定request中的参数名,如果Bean属性和request参数的名字不同,就必须指定。 :根据用户的需要,自己设置参数的值,如果输入的值是一个变量,则需要用表达式输出。 /注意:name属性值与中的id属性值相同。,(3)JavaBean属性的设置方法 通过Http表单的参数来设置beans的所有属性的值:(反射机制) 要求:表单参数的名字必须与beans属性的名字相同,Jsp引擎会自动将字符串转换为beans属性的类型。 例如 logincl1.jsp、login.html 注意:只有提交了和该beans相对应的表单后,该指令标签才被执行,2019/5/27,28,3.2.1 相关知识在JSP中使用JavaBean,3.2.1 相关知识在JSP中使用JavaBean,2019/5/27,29,分析属性自动匹配的原理: 为什么能够通过property=”*”的方法,将内容设置到Bean中,其根本原因是使用Java的反射机制,根据传递参数的名称找到相应的方法(注意:此参数是指表单中请求的参数),比如:参数名称为name,则自动找到setName方法 原则: 使用JavaBean自动设置内容时,一定要让参数名称与Bean中的属性名称一致,这样通过Java的命名规范,可以达到统一。,(3)JavaBean属性的设置方法 通过Http表单的参数来设置beans的相应属性的值:(反射机制) 要求:request参数的名字必须与beans属性的名字相同。 例如: logincl2.jsp 、login.html 注:只有提交了和该beans相对应的表单后,该指令标签才被执行。,2019/5/27,30,3.2.1 相关知识在JSP中使用JavaBean,(3)JavaBean属性的设置方法 将通过request的参数值来设定beans相应属性的值 要求:request参数的名字可以与beans属性的名字不相同。 例如: logincl3.jsp、 login1.html 注:只有提交了和该beans相对应的表单后,该指令标签才被执行。,2019/5/27,31,3.2.1 相关知识在JSP中使用JavaBean,(3)JavaBean属性的设置方法 将beans的属性设置为一个表达式的值或字符串 Beans的属性的值设置为一个表达式的值: ” / Beans的属性的值设置为一个字符串: 注:如果表达式的值设置为beans属性的值,表达式值的类型必须和beans属性的类型一致。 如果将字符串设置为beans属性的值,这个字符串会自动转换为beans属性的类型。 修改logincl3.jsp、 login1.html 结合以上案例,讨论JavaBean的作用域。(分别将scope的属性改为不同的值,看一下在login_success.jsp中能否取得JavaBean的属性值),2019/5/27,32,3.2.1 相关知识在JSP中使用JavaBean,2019/5/27,33,3.2.2 任务实施,GoodsShowCl.jsp 查询处理控制,Index.jsp 商品浏览,GoodsShow.jsp 查询结果显示,分页请求,分页显示,查询成功,数据库 (goods表),Model1模式(jsp+javaBean),goodsBeanCljava (业务逻辑),goodsBean.java 表示goods表,Conn DB.java 得到连接,界面(Veiw),模型(Model),操作数据库,调用,查询请求,3.2.2 任务实施,完成以下任务: 仿照用户登录管理项目中用户登录验证的方法,完成网上商城中商品信息的查询: 1. GoodsShowCl.jsp设计,当用户根据商品ID号要查询某个具体的商品时, GoodsShowCl首先通过GoodsBeanCL业务逻辑进行查询,如果存在该商品,则返回成功信息,并跳转到GoodsShow.jsp进行显示。否则给出提示信息:此商品不存在,同时返回查询页,等待下一步的操作。 2. GoodsShow.jsp的设计,该页用于显示某一具体的商品。 3. 完成GoodsBeanCL.java的设计,此处完成信息查询处理。 4. 具体代码实现参见项目:goodsmanager,2019/5/27,34,任务小结,(1)JSP中JavaBean有两种不同的使用方法。 (2)JavaBean对象有不同的作用域,理解各不同的作用域下的区别。,2019/5/27,35,课后习题,思考题 (1) JavaBean如何使用? (2) 如何取得JavaBean的属性值? (3) 如何设置JavaBean的属性值? (4) 理解JavaBean对象的作用范围。,任务3.3 商品信息的分页显示,本任务主要是在上一任务的基础上完成网上商城中商品信息的分页显示,当首次登录商城主页时,只显示第一页的内容,之后根据用户的选择,显示指定页的内容,在进行分页显示时,由GoodsBeanCL与数据库连接,获得该页要显示的内容,即结果集,并将每条记录的信息封装成一个GoodsBean对象,放入集合ArrayList中,最后由GoodsBeanCL返回ArrayList对象给商城主页,显示这一页上要显示的内容。,3.3.1 任务相关知识点,(1)分页算法的描述 (2)集合类ArrayList及应用,3.3.1 相关知识分页显示处理,2019/5/27,39,1.分页算法: 分页:是由于记录太多,不能在一个页面中显示 我们需要定义四个变量,它们有各自的用处 int pageSize:每页显示多少条记录 int pageCount:一共有多少页 int pageNow:希望显示第几页 int rowCount:一共有多少条记录 说明: pageSize是指定的,pageNow是用户选择的 rowCount是从表中查询得到的 pageCount是计算出来的,该计算式为 if(rowCount%pageSize=0) pageCount=rowCount/pageSize; else pageCount=rowCount/pageSize+1; ,3.3.1 相关知识分页显示处理,2019/5/27,40,1.分页算法: 我们使用如下select语句获得某页要显示的记录集: select top pageSize 字段名列表 from 表名 where id not in ( select top pageSize*(pageNow-1) id from 表名) 以我们前面的users表为例,显示第2页,该查询语句就是: select top 3 * from users where userId not in (select top 3 userId from users),3.3.1 相关知识分页显示处理,2019/5/27,41,2. ArrayList类: 实现大小可变的数组列表。是一个集合类,相当于一个容器,可以加入一个个的对象。它是java.util包中的类。 常用的方法: (1) public ArrayList()-构造方法 构造一个初始容量为 10 的空列表。 如 ArrayList al = new ArrayList(); (2) public int size() 返回此列表中的元素数。 如 int count=la.size();,3.3.1 相关知识分页显示处理,2019/5/27,42,常用的方法: (3) public boolean add(E e) 将指定的元素添加到此列表的尾部。 如:UserBean ub = new UserBean(); ub.setUserId(1); ub.setUsername(“aa”); ub.setPasswd(“123”); ub.setGrade( 2); al.add(ub); / 将ub放到arrayList中 (4) public E get(int index) 返回此列表中指定位置上的元素。 如: UserBean ub =al.get(0); (5) public E remove(int index) 移除此列表中指定位置上的元素。向左移动所有后续元素(将其索引减 1)。 如:al.remove(0);,3.3.1 相关知识分页显示处理,2019/5/27,43,为什么在UserBeanCl中我们返回ArrayList集合,而不是直接返回ResultSet? 1.如果返回ResultSet,那么我们在使用ResultSet时,是不能关闭与该ResultSet相互关联的数据库连接等资源,从而造成资源浪费。 2. 如果返回ResultSet,我们只能使用rs.getInt(?),rs.getStrin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论