前台商品展示模块_第1页
前台商品展示模块_第2页
前台商品展示模块_第3页
前台商品展示模块_第4页
前台商品展示模块_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

JavaWeb应用开发计算机与软件学院王俊松第3章前台商品展示模块本章要点

前台商品展示功能的详细设计和具体实现

JSP访问数据库前台商品展示功能实现优化网站前台页面的风格统一新品、特价商品展示的详细设计和具体实现使用分页显示技术商品检索功能详细设计和具体实现

JSP隐含对象request、responseJSP的include指令和include动作表单提交及中文处理3.1前台商品展示页面设计前台商品展示页面效果如图3.1前台商品展示页面设计商品信息实体E-R图3.1前台商品展示页面设计商品大类实体E-R图3.1前台商品展示页面设计商品小类实体E-R图3.1前台商品展示页面设计商品信息表结构字段名数据类型是否为空是否主键默认值描述idint(4)NoYesID(自动编号)bigIdint(4)No0所属大类smallIdint(4)No0所属小类goodsNamevarchar(50)YesNULL商品名称goodsFromvarchar(50)YesNULL商品产地introducetext(16)YesNULL商品介绍createTimeSmalldatetime(4)YesNULL商品添加日期originalPriceeMoney(8)Yes0商品原价currentPriceMoney(8)Yes0商品现价numberint(4)Yes0商品销售数量picturevarchar(50)YesNULL商品图片discountbit(1)Yes0商品折扣标志3.1前台商品展示页面设计商品大类表结构字段名数据类型是否为空是否主键默认值描述idint(4)NoYesID(自动编号)bigNamevarchar(50)YesNULL大类名称createTimeSmalldatetime(4)YesNULL大类添加日期3.1前台商品展示页面设计商品小类表结构字段名数据类型是否为空是否主键默认值描述idint(4)NoYesID(自动编号)bigIdint(4))No大类编号smallNamevarchar(50)YesNULL小类名称createTimeSmalldatetime(4)YesNULL小类添加日期3.1前台商品展示页面设计数据表之间的关系3.1前台商品展示页面设计创建数据表

3.1前台商品展示页面设计设置表tb_goods的结构3.1前台商品展示页面设计前台页面功能流程图3.1前台商品展示页面设计创建main.jsp页面3.1前台商品展示页面设计创建main.jsp页面3.1前台商品展示页面设计加载数据驱动

在JDBC连接到数据库之前,必须要加载数据库驱动程序,例如加载SQLServer的驱动。<%...Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();//加载数据库驱动...%>3.1前台商品展示页面设计加载数据驱动到工程中3.1前台商品展示页面设计加载数据驱动到工程中

3.1前台商品展示页面设计加载数据驱动到工程中

3.1前台商品展示页面设计创建数据库连接

创建数据库连接需要创建Connection(java.sql包)类的一个实例。连接代码如下:

<%...connection=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=shopping","sa","123456");//加载数据库连接

...%>3.1前台商品展示页面设计查询商品信息代码如下:

<%...

st=connection.createStatement();

rs=st.executeQuery("select

picture,goodsName,

originalPrice,introduce,idfromtb_goodsorderbyidDESC");...%>3.1前台商品展示页面设计展示商品信息代码如下:<%...while(rs.next()){%><divalign="center"><imagesrc="<%=rs.getString("picture")%>"width="110"height="100"/></div>...%>3.1前台商品展示页面设计关闭数据库连接,释放资源代码如下:

<%...

rs.close();

st.close();

conn.close();...%>3.1前台商品展示页面设计main.jsp的显示效果3.1.4JSP与数据库JDBC数据库访问机制3.1.4JSP与数据库ResultSet对象的遍历3.2前台商品展示页面功能实现优化概述CRUD操作提高开发效率,页面简洁,提高代码的可维护性在页面中不使用SQL语句直接操作数据,而将数据库连接和操作功能独立实现对页面功能的优化3.2前台商品展示页面功能实现优化优化设计

1.设计类DBConnection封装与数据库的连接。

2.设计类GoodsDao封装与数据库商品信息表的操作,查询结果用java实用类链表返回。

3.设计类GoodsEntity代表商品实体,类的成员变量与数据库中商品信息表字段相对应,成员方法设计对各成员变量的getXxx()和setXxx()方法。3.2前台商品展示页面功能实现优化创建类DBConnection/*定义数据库链接类*/packagecom.mycompany.util;importjava.sql.*;publicclassDBConnection{privateStringdbDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";privateStringurl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=shopping";//URL地址

publicConnectionconnection=null;publicDBConnection(){try{

Class.forName(dbDriver).newInstance();//加载数据库驱动

connection=DriverManager.getConnection(url,"sa","sa");//加载数据库

}catch(Exceptionex){

System.out.println("数据库加载失败");}}}3.2前台商品展示页面功能实现优化创建类GoodsDao(数据库商品信息表操作类)创建类GoodsEntity(代表商品实体的类)修改前台商品展示页面main.jsp3.3网站前台页面风格页面风格统一

一个大型的Web最好使用一致的外观风格,如Tomcat技术文档的页面。常用方法:利用<table>划分为几个区域插入一个HTML\JSP3.3网站前台页面风格<html><body><tableborder="0"width="95%"><tr><tdcolspan="2"><!--此处插入Banner的内容--></td></tr><tr><tdwidth="30%"><!--此处插入菜单选择的的内容--></td><tdwidth="70%"><!—此处插入查询结果内容--></td></tr><tr><tdcolspan="2"><!--此处插入版权信息等的内容--></td></tr></table></body></html>页面风格统一实现上述框架的代码3.3网站前台页面风格设计与实现在JSP页面内包含其他JSP内容的方法有两种:

使用JSP指令中的指令@include替换<!--此处插入Banner的内容-->:<%@includefile="include/Banner.html"%>

使用JSP动作中的动作<jsp:include>替换<!--此处插入菜单选择的内容-->:<jsp:includepage="include/Left.jsp"%>

3.3.3JSP的include指令和include动作include指令JSP编译时在<%@include%>出现的地方插入文件。这个包含的过程是静态的,编译时就能确定包含文件的内容。包含的文件可以是HTML文件、文本文件或JSP文件等。如果包含文件被改变,包含此文件的JSP文件也需要重新编译,才能反映修改效果。3.3.3JSP的include指令和include动作<jsp:include>动作包含文件:静态。仅仅把包含文件的内容,与include指令包含静态文件的效果一样。动态。包含文件被JSP引擎单独编译执行,由<jsp:include>动作请求执行,并将传送回来一个响应输出到<jsp:include>动作所在的位置。当这个包含文件执行完毕后,JSP引擎继续执行原JSP文件余下的部分。3.4新品及特价商品展示功能说明需求:价格有折扣--特价商品,否则为新品。商品展示的风格与main.jsp保持一致,并在页面上实现分页效果。数据库设计是否打折discount、商品现价currentPrice两个字段。discount初始值设定为“0”。当商品被设置为特价商品时,discount值设定为“1”,同时设置商品的现价currentPrice,并在前台特价商品展示页面中出现。3.4新品及特价商品展示数据库访问设计对数据库商品信息表操作类goodsDao进行修改,在goodsDao.java中添加方法selectGoodsDiscount,根据方法的参数查询新品或特价商品,参数为“0”查询新品,参数为“1”则查询特价商品,方法的返回值为新品或特价商品的链表。3.4新品及特价商品展示分页主要有两种思路:“指针分页”适合数据量和并发量不是很高的应用系统,不适合海量的数据查询。

“主键分页”适合海量的数据查询,看多少取多少,需要主键来配合使用。3.4新品及特价商品展示分页显示实现步骤1)取得originalList对象中的商品总数,存放到页面变量pageNumber中,并将此值作为总页数的初始值,后根据每页显示商品的数量在做修改:

int

pageNumber=originalList.size();//计算出记录总数

int

maxPage=pageNumber;//计算有多少页数2)初始化一些必要参数,其中request.getParameter(“pageNum”)是使用request内置对象的getParameter方法获取参数名为pageNum的请求参数值,在这里是用户要显示的页码。3.4新品及特价商品展示<%for(inti=start;i<over;i++){

GoodsEntity

originalGoods=(GoodsEntity)originalList.get(i);%>

显示分页导航

<tralign="center">

实现页面显示页码总数、记录总数和当前页码数:

<tdwidth="13%">共为<%=maxPage%>页</td><tdwidth="18%">共有<%=pageNumber%>条记录</td><tdwidth="26%">当前为第<%=number+1%>页</td><tdwidth="15%"><%if((number+1)==1){//目前显示的是第1页

%>

上一页

<%}else{//目前显示的不是第1页%>3.4.4JSP内置对象request和responserequest对象九种内置对象之一,javax.servlet.http.HttpServletRequest和javax.servlet.ServletRequest类的子类对象。封装了用户的信息3.4.4JSP内置对象request和responserequest对象方法取得请求参数的方法StringgetParameter(stringname):获取客户端传送服务器的参数值,该参数是由Name指定的,通常是表单中的参数。EnumerationgetParameterNames():获得客户端传送到服务器端的所有参数的参数名字,其结果是一个枚举实例。String[]getParameterValues(stringname):获取指定参数的所有值,参数由name指定。该方法多用于获取请求参数中有多个值的参数。

3.4.4JSP内置对象request和responserequest对象方法储存和取得属性的方法voidsetAttribute(String

name,java.lang.Object

objt):设置名字为name的request参数的值。EnumerationgetAttributeNamesInScope(intscope):取得所有scope范围的属性。EnumerationgetAttributeNames():返回request对象的所有属性的名字集合,其结果是一个枚举的实例。ObjectgetAttribute(Stringname):返回由name指定的属性值,如果指定的属性不存在,则会返回一个null值。voidremoveAttribute(Stringname):删除请求中的一个属性3.4.4JSP内置对象request和response使用request对象获取客户请求信息实例3.4.4JSP内置对象request和responseresponse对象response对象包含了服务器对客户的请求做出动态的响应,向客户端发送数据。和request一样,response对象也由JSP引擎(容器)产生,可以使用response对象提高的方法对响应进行操作。3.4.4JSP内置对象request和responseresponse对象的主要方法voidsetContentType(stringcontentType):设置响应MIME(媒体)类型。voidsetstatus(intsc):设定响应状态码。状态码状态摘要信息含义100Continue初始的请求已经接受,客户应当继续发送请求的其余部分。(HTTP1.1新)200OK请求成功302Found临时移动-请求消息临时驻留在不同的URI。如果驻留位置是新的URI,则响应中的Location标题会给出新的URI。当客户端被服务器重定向时,通常会使用此状态代码。3.4.4JSP内置对象request和response状态码状态摘要信息含义400BadRequest请求出现语法错误。401Unauthorized未授权-请求需要通过身份验证和/或授权403Forbidden资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。404NotFound无法找到指定位置的资源。500InternalServerError服务器遇到了意料不到的情况,不能完成客户的请求。3.4.4JSP内置对象request和responseresponse对象的主要方法voidsendRedirect(String

localtion):重新定向客户端的请求。3.4.4JSP内置对象request和responseresponse对象的主要方法设置CookieVoidaddCookie(Cookiec):将cookie加到response对象上,发送到客户端保存。Cookie是Web服务器保存在用户硬盘上的一段文本。Cookie允许一个Web站点在用户的电脑上保存信息并且随后再取回它。产生新的Cookie对象如下:

Cookiec=newCookie("username","john");当cookie对象产生以后,JSP中如果要将封装好的Cookie对象传送到客户端,使用response的addCookie()方法:response.addCookie(c);3.4.4JSP内置对象request和response如果JSP读取保存到客户端的Cookie,可以使用request对象的getCookies()方法,执行时将所有客户端传来的Cookie对象以数组的形式排列,如果要取出符合需要的Cookie对象,就需要循环比较数组内每个对象的关键字。例:

cookie!=null)//请求中包含有cookies

for(inti=0;i<cookie.length;i++){

if("username".equals(cookie[i].getName()))

out.println(cookie[i].getName()+":"+cookie[i].getValue());}3.5商品检索流程分析与设计

搜索内容的提交页面frameLeft.jsp,表单元素searchForm搜索结果显示页面goodsShowSearch.jsp3.5商品检索编程详解1.在GoodsDao类中,

温馨提示

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

评论

0/150

提交评论