基于JSP网上饰品系统的设计


 

欢迎添加微信互相交流学习哦!

二维码

项目源码:https://gitee.com/oklongmm/biye2





摘 要
JAVA语言是目前Internet上大型的WEB应用程序开发时使用得最热门的编程语言,本文描述了JAVA和JSP技术的特点以及在互联网上的使用情况,介绍这两种技术的重要编程方法和两者之关的联系,并完成一个基于这种技术的网上饰品系统。
目 录
TOC 1-3
HYPERLINK l _Toc137351128 1.1 JSP简介和运行原理 4
1.2 开发背景 5
HYPERLINK l _Toc137351142 3.1 数据库设计 7
HYPERLINK l _Toc137351143 3.1.1 数据库需求分析 7
HYPERLINK l _Toc137351145 第4章 详细设计 10
HYPERLINK l _Toc137351146 4.1 系统概述 10
HYPERLINK l _Toc137351147 4.1.1用户界面部分 10
HYPERLINK l _Toc137351148 4.1.2 管理界面部分 10
4.2 业务逻辑详细代码...........................................................................................................................10
4.2.1用户登录和注册............................................................................................................................10
4.2.2商品显示以及分类处理...................................................................................................................13
4.2.3购物车模块的实现............................................................................................................................16
4.3客户端界面的设计和实现..........................................................18
HYPERLINK l _Toc137351161 第5章 系统测试 25
HYPERLINK l _Toc137351162 5.1 数据库连接 25
6
7
前 言
随着计算机、 网络 、通信技术的发展和日益融合,以及Internet的普及应用,包括电子商务(EC)、视频会议、网上饰品等在内的一些应用已开始引起社会的关注,并逐步走进人们的日常生活。
JSP是Sun公司推出的一种网站开发技术,Sun公司借助自己在Java上的不凡造诣,又把人们引进JSP时代,JSP即Java Server Page,它可以在Servlet和JavaBean的支持下,完成功能强大的Web应用程序。所以,在我的课程设计中,我采用了JSP作为开发工具,构建了一个能实现简单的电子商务的小型动态商务网站——网上饰品销售系统。
通过这次的课程设计,我了解了目前流行的动态商务网站的构成和运作原理,掌握了用JSP构建动态网站的相关知识和技术原理,锻炼了自己的动手实践能力。
第1章 概 述
1-1 JAVA语言简介
  Java是一种简单易用、完全面向对象、具有平台无关性且安全可靠的主要面向Internet的开发工具。自从1995年正式问世以来,Java的快速发展已经让整个Web世界发生了翻天覆地的变化。在早期,Java比较多的用在浏览器上,插入到网页中(即是Java Applet程序),成为最灵活、最强大的网页多媒体的载体,但由于Java虚拟机相对于个人电脑而言,有占用资源大,安全性相对较差等缺点,Applet逐渐的被后起之秀Flash所替代,但随着Java Servlet的推出,Java在电子商务方面开始崭露头角,最新的JSP(Java Server Page)技术的推出,更是让Java成为基于Web的应用程序的首选开发工具,目前的Java技术已成为所有大型电子商务项目的必然选择。
1-2 开发背景
伴随着电子商务技术的不断成熟,电子商务的功能也越来越强大,注册用户可以在网上搜索购买到自己想要的各种商品,初步让人们体会到了足不出户,便可随意购物的快感。我们的课程设计也就正是一个电子商务系统的开发---网上饰品店销售系统。
第2章 JAVA技术简介
2-1 在Windows平台下配置JSP运行环境
  为了使系统能够正常运行JSP和相关程序,必须先配置好能够使用JSP的WEB服务器。各种能使用Servlet技术的WEB服务器中,运用得最多的是Tomcat服务器,如果仅是为了用于测试程序,Tomcat的配置则显得太复杂了,本文推荐使用Resin服务器,Resin据称是最快的Servlet运行平台,不过限于单站点,对传统的一些网关支持不是很好,因此对于商业网站而言,不是最好的选择,不过如果仅是为了测试Servlet,这个Resin的安装可谓有点傻瓜化。
  Resin比较新的版本是3.x,但目前实际用的2.x版本的比较多,Resin可到官方站点下载:http://www.caucho.com/download/本文使用的是2.1.13版本,文件位置:http://www.caucho.com/download/resin-2.1.13.zip
如果你的电脑上已装好JDK,直接把下载的resin包解压到D:盘根目录解压后即D: esin-2.1.13为服务器的目录,把本文的源程序jspweb文件夹也放在D:盘根目录,即是D:jspweb为网站根目录,打开D: esin-2.1.13conf resin.conf(是一份XML形式的配置文件),找到doc这里改为D:jspweb,然后运行D: esin-2.1.13inttpd.exe,在浏览器输入http://localhost:8080/j1.jsp,看到了我是JSP!”的字样了吧,你的Servlet服务器就这样配置成功了,为了能编译Servlet类,还需要做的事情是:把D: esin-2.1.13lib加入到windows的CLASSPATH的环境变量中。
2-2 JSP、ASP和PHP技术之比较
JSP与ASP、PHP技术都是目前网上最流行的在服务器端运行的脚本技术,JSP能用JavaBeans技术封装,达到商业逻辑的目的,ASP对应之的是COM组件,因此两者都能用于开发商业逻辑,PHP则更像于一个纯脚本,仅适合于普通的网站开发,而不能用作商业逻辑而被冠以Person Home Page”的名称,这是最贴切不过的了。
JSP与ASP相比,JSP具有跨平台、安全、强大的可伸缩性的特点,而果硬要挑一些毛病,JSP相对别的脚本更加难掌握,因为精通JSP必须精通Java语言,对于中小型项目,我们要考虑开发人员、开发速度、开发成本等问题,在这方面ASP和PHP会比JSP更容易胜出。
值得一提的是,ASP的最新版本ASP.NET与原来的ASP性质完全是不同的,它和JSP一样,都是一种编译性的脚本,本身完全与强大的Net框架结合,完美的支持Xml的各种应用,与昔日的ASP不可同日而语,但是无论是ASP还是ASP.NET,它都摆脱不了Windows平台本身,这是ASP一个致命的缺点。
2-3 JSP语法基础
2-3-1嵌入了JAVA语言的HTML文件
把下面网页保存为:j1.jsp
这就成了一个最简单的JSP页面了,其中
是声明输出的文件类型为text/html,字符编码是gb2312,在JSP中里的内容表示的是JSP编译时的一些选项或向客户端发送的头信息的JSP指令,里的内容就是Java语言,如果有必要,更改适当设定,还可以使用javascript作为脚本,不过实际应用中很少有人这样做。
2-3-2 request、out & response--与访问者的交互
接收客户端的请求和向客户端返回信息是动态网页最常做的事情,在JSP中,主要通过request、response、out 三大对象实现这些功能。
request 对象的作用是接收用户通过URL或通过表单向发服务器发送请求信息和与用户计算机相关的一些信息。
response 对象用于网页传回用户端的回应。
out 用于传送回应的输出,即向客户端返回信息。
把上面的例子稍作修改:
  
保存为j2.jsp在浏览器上输入:http://localhost:8080/j1.jps?msg=我是JSP”看一下效果,这和j1.jsp的结果一样吧?但它输出的是客户端返回的信息,这在意义上完全不同于前者。
2-3-3 session--保持访问者的会话状态
会话状态维持是 Web 应用开发者必须面对的问题。有多种方法可以用来解决这个问题,如使用 Cookies 、隐藏的表单输入域,或直接将状态信息附加到 URL 中。Java Servlet 提供了一个在多个请求之间持续有效的会话对象,该对象允许用户存储和提取会话状态信息,JSP也内置了这个对象。
Session最基本的用法是:
创建一个会话 session.putValue(名称,值);
获得一个会话的值session.getValue(名称);
2-3-4 JSP其它基本内置对象
JSP有九大内置对象,除了上述四种以外,还包括:
pageContext 网页的属性是在这里管理
application Servlet正在执行的内容
config Servlet的构架部件
page JSP网页本身
exception 针对错误网页,未捕捉的例外
这些基本的内置对象是构成JSP页面的重要因子。
第3章 系统设计
本系统采用三层架构设计,它的工作原理如图3-1所示。
图3-1三层架构模型
采用三层构架以后,用户界面层通过统一的接口向业务层发送请求,业务层按自己的逻辑规则将请求处理之后进行数据库操作,然后将数据库返回的数据封装成类的形式返回给用户界面层。
3.1数据库设计
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。
3.1.1 数据库需求分析
针对一般在线饰品的需求,得出如下需求信息。
 用户分为游客和已注册用户。
 订单分为单张详细订单和总订单。
 一个用户可以购买多个饰品。
 一个用户对应一张订单。
针对本系统功能分析,总结出如下的需求信息。
 用户,包括数据项:用户名、密码。
 饰品,包括数据项:饰品编号、饰品名、价格、饰品介绍。
 订单列表,包括数据项:订单编号、饰品编号、购买数量。
 订单,包括数据项:订单编号、用户编号、下单时间。
从本系统中规划出的实体有:用户实体、饰品实体、订单实体、订单列表实体。
实体之间关系的E-R图如图3-5所示。
1 1 N
N
图3-5实体关系E-R图
关系图
3.1.2 数据库逻辑结构设计
在线饰品数据库中各个表的设计结果如下面的标和所示。
表3.1为用户信息列表User_info。
表3.2商品信息表goodsInfo。
表3.3订单表goodsOrder。
表3.4订单详情表goodsOrder。
第4章 详细设计
4.1 系统概述
4.1.1用户界面部分
商品选购
购物车功能。
查看商品详细信息。
用户注册。
用户登录。
查看用户的订单信息。
修改用户个人信息。
4.1.2 管理界面部分
现有饰品管理:修改,删除,查看。
用户管理:查看,修改,删除。
订单管理:查看订单清单,更新订单付款,出货状态,删除订单。
添加新饰品。
添加饰品分类。
4.2 业务逻辑详细代码
4.2.1、用户登录和注册
这是一个以客户为中心的交易平台,只有成为了系统的合法用户才能够使用这个系统,因此需要检验每个用户的合法性,管理用户登录正是要完成这样的功能。
(1)该类实现用户登录验证
public boolean UserLognIn(String name,String pword)
{
boolean success=false;
try {
ct=new connDB().getConnection();
ps=ct.prepareStatement( select UserName,UserPassWd from UserInfo where UserName=?);
ps.setString(1, name);
rs=ps.executeQuery();
rs.next();
if(name.equals(rs.getString(1)) && pword.equals(rs.getString(2)))
{
success=true;
}
else
{
success=false;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
this.close();
}
return success;

(2) }
(3)该类实现用户注册认证
public class register extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取数据乱码处理
request.setCharacterEncoding(gb2312);
//获取客户端发送过来的信息
String name = request.getParameter(name);
String password=request.getParameter(password);
String email = request.getParameter(email);
String trueName=request.getParameter(trueName);
String sex = request.getParameter(sex);
String birthday=request.getParameter(birthday);
String address = request.getParameter(address);
String postcode = request.getParameter(postcode);
String phone = request.getParameter(phone);
String mphone = request.getParameter(mphone);
String question = request.getParameter(question);
String answer = request.getParameter(answer);

UserBean user = new UserBean();
UserBeanBO userbo=new UserBeanBO();
user.setUserName(name);
user.setUserPassWd(password);
user.setEmail(email);
user.setTrueName(trueName);
user.setSex(sex);
user.setBirthday(birthday);
user.setAddress(address);
user.setPostcode(postcode);
user.setPhone(phone);
user.setMphone(mphone);
user.setQuestion(question);
user.setAnswer(answer);
if(userbo.UserRegister(user))
{
response.sendRedirect(success.jsp);
}
else{
response.sendRedirect(failed.jsp);
}
}
}
4.2.2、商品显示以及分类处理
为了使用上的方便,我们把对商品的管理,包括商品的添加,删除,修改,查询等集合成一个管理类。
下面是该类的部分函数:
public goodsBean getGoodsBean(String id)
{
goodsBean gb=new goodsBean();
try{
ct=new connDB().getConnection();
ps=ct.prepareStatement(select * from GoodsInfo where goodsNum=?);
ps.setString(1, id);
rs=ps.executeQuery();
while(rs.next())
{
gb.setGoodsNum(rs.getInt(1));
gb.setGoodsName(rs.getString(2));
gb.setPrice(rs.getInt(3));
gb.setStyle(rs.getString(4));
gb.setClass1(rs.getString(5));
gb.setClass2(rs.getString(6));
gb.setClass3(rs.getString(7));
gb.setInfo(rs.getString(8));
gb.setPhoto1(rs.getString(9));
gb.setPhoto2(rs.getString(10));
gb.setPhoto3(rs.getString(11));
gb.setPhoto4(rs.getString(12));
gb.setRecommend(rs.getInt(13));
gb.setNow_volume(rs.getInt(14));
gb.setStore_volume(rs.getInt(15));
gb.setSale_volume(rs.getInt(16));

}
}catch(Exception e){
e.printStackTrace();
}finally{
this.close();
}
return gb;

}
//获得热销商品的编号
public String[] GetSaleNum(){
String[] Number=new String[500];
int i=0;
try {
ct=new connDB().getConnection();
ps=ct.prepareStatement(select goodsNum from GoodsInfo order by sale_volume desc);
rs=ps.executeQuery();
while(rs.next()){

Number[i]=rs.getString(1);
i++;

}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
this.close();
}

return Number;
}
//获得推荐商品的编号
public String[] GetRecNum(){
String[] Number=new String[8];
int i=0;
try {
ct=new connDB().getConnection();
ps=ct.prepareStatement(select goodsNum from GoodsInfo where recommend=?);
ps.setString(1, 1);
rs=ps.executeQuery();
while(rs.next()){

Number[i]=rs.getString(1);
i++;
if(i>8){break;}

}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
this.close();
}

return Number;
}
//查询分类函数
public ArrayList getclassGoods(String s)
{
ArrayList al=new ArrayList();

try {
ct=new connDB().getConnection();
ps=ct.prepareStatement(select * from goodsInfo where class1=? or class2=? or class3=? );

ps.setString(1, s);
ps.setString(2, s);
ps.setString(3, s);
rs=ps.executeQuery();
while(rs.next())
{
goodsBean gb=new goodsBean();
gb.setGoodsNum(rs.getInt(1));
gb.setGoodsName(rs.getString(2));
gb.setPrice(rs.getInt(3));
gb.setStyle(rs.getString(4));
gb.setClass1(rs.getString(5));
gb.setClass2(rs.getString(6));
gb.setClass3(rs.getString(7));
gb.setInfo(rs.getString(8));
gb.setPhoto1(rs.getString(9));
gb.setPhoto2(rs.getString(10));
gb.setPhoto3(rs.getString(11));
gb.setPhoto4(rs.getString(12));
gb.setRecommend(rs.getInt(13));
gb.setNow_volume(rs.getInt(14));
gb.setStore_volume(rs.getInt(15));
gb.setSale_volume(rs.getInt(16));
al.add(gb);

}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
this.close();
}

return al;
}
//关闭资源函数
public void close(){
try{//关闭rs
if(rs!=null)
{
rs.close();
rs=null;
}//关闭ps
if(ps!=null)
{
ps.close();
ps=null;
}//关闭ct
if(ct!=null)
{
ct.close();
ct=null;
}
}catch(Exception e){
e.printStackTrace();
}
}
}
4.2.3、购物车的实现模块
购物车实现使用了集合类hashMap,该集合类的许多函数刚好适合做购物车,方便商品的添加、删除以及清空购物车等。下面是该类的代码:
public class CartBo {
//定义一个HashMap用于储存购物车中的商品ID和数量

HashMap hm=new HashMap();
//1、添加商品
public void addGoods(String goodsId,String goodsNum){
hm.put(goodsId, goodsNum);
}
//2、删除商品
public void delGoods(String goodsId){
hm.remove(goodsId);
}
//3、清空购物车
public void clear(){
hm.clear();
}
//4、修改商品数量
public void updateGoodsNum(String goodsId,String NewNum){
hm.put(goodsId, NewNum);
}
//5、显示购物车
public ArrayList showMyCart(){
ArrayList al=new ArrayList();
Iterator it=hm.keySet().iterator();
while(it.hasNext())
{
goodsBean gb;
goodsBeanBO gbb=new goodsBeanBO();
String goodsId=(String)it.next();
String s=(String)hm.get(goodsId);
gb=gbb.getGoodsBean(goodsId);
int volume=Integer.parseInt(s);
gb.setVloume(volume);
al.add(gb);

}
return al;

}
}
其他功能的代码请看源代码
4.3客户端界面设计与实现
1、主界面设计
为了提高代码的重用性,我把客户界面部分相同的头和尾作成两个独立的块,分别命名为 head.jsp和back.jsp如下图。
Head.jsp设计页面
Back.jsp设计页面
图4-1主界面显示效果
2、用户注册模块的设计。
为了检验用户是否合法,首先需要注册用户名和密码来验证用户的合法性,用户注册模块刚好完成这样的一个功能,该模块要用到ajax技术。效果图如下:图4-2
图4-2用户注册界面
3、个人中心模块
在该模块用户登录到自己的主页,可以查看自己的个人信息,还可以跳转到其他的模块,例如查看购物车,查看订单信息等。

图4-3个人中心效果显示
个人中心页面模块主要代码如下:














 

我的交易
  
  •  
  • 我的购物车
  • 已卖到的宝贝
  • 我的收藏
     
个人资料
  
  •  
  • 基本信息
  • 修改信息    
  • 修改密码
     


4:购物车模块页面设计。
在购物车这个模块当中用户可以修改购买数量,可以删除已选饰品,可以提交购物车,也可以清空购物车,同时也可以继续购物。该模块运行时效果如图4-4所示:
图4-4购物车模块显示效果
页面核心代码如下cart.jsp:


















<%for(int i=0;i
<%goodsBean gb=(goodsBean)al.get(i); %>();i++){>








/<%=gb.getPhoto1() %> width=80px height=80px/>
  target=_black><%=gb.getGoodsName() %>
<%=gb.getPrice()%>
 ¥=color:red>=center>=showgoods?goodsid=<%=gb.getgoodsnum()%>=vertical-align:middlesrc=images>=left>




<%count+=gb.getVloume()*gb.getPrice(); %>
<%} %>










商品总价(不含运费): <%=count %> ¥  =6align=rightclass=mycartstyle=background:#ffffff;font-size:16px>



清空购物车=3align=leftclass=mycartstyle=background:#ffffff>



 

 
  •  
  • 返回首页
  • 今日特价
  • 超值套餐
  • 项链
  • 耳环
  • 手链
  • 戒指
  • 情侣专区
     
 
编号 名称 单价 数量    
 
 
 
<%=i+1%>
value=<%=gb.getVloume() %> />
) />
&type=del target=_self>删除

target=_black>查看

 
 
 

=carttype=imageοnclick=addgoods()src=images>=carttype=imageοnclick=keepshopping()src=images>


第5章 实验遇到的问题及解决办法
5.1 数据库连接
在系统的整个开发工程中,我们最容易碰到的难题是数据库连接这个模块。在JavaBean中连接数据库注意的一些事项有:
1 首先要下载Microsoft SQL Server 2000 Driver for JDBC 这个包,并安装。
2把Microsoft SQL Server 2000 Driver for JDBC 的 lib文件夹下的:msbase.jar,mssqlserver.jar,msutil.jar 三个文件拷贝到Tomcat安装目录下的commen/lib文件夹下。
3 把msbase.jar,mssqlserver.jar,msutil.jar 三个文件的路径添加到CLASSPATH中。
4 如果使用的操作系统是Windows xp 在安装 SQL Server2000 后必须下载SP4补丁并安装,否则打不开1433端口号或者该端口。
在数据库连接中出现问题将会出现异常提示信息:
org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)

java.lang.NullPointerException
bookshop.run.login.execute(login.java:83)
org.apache.jsp.bookshop.admin.adm_005flogin_jsp._jspService
......
如图5-1所示:
这个时候可能出现的问题是数据库服务器没有开启,或者是没有安装Microsoft SQL Server 2000 Driver for JDBC 这个包。
第6章 总结
本文论述了一个基于WEB的网上饰品销售系统,基本上体现了电子商务各方面的优点。我所设计的网上饰品店,主要是熟悉和掌握JSP的技术以及对电子商务进行初步的探讨和设计。
在软件开发编码阶段我才用原型法,先设计出个一个实现简单功能的系统在更具需求一步步完善系统的功能。由于是才采用面向对象的设计所以系统中由很多类和方法,我将他们归类将经常使用的方法放在单独的类文件中,在以后的编码中只要通过对名称空间的引用就能调用他们。本系统在实现传统的网上饰品功能基础上对增强系统的安全性进行了初步的尝试,但是由于这方面研究的不深所以实现的与需求还有一定的差距。
在设计和制作网上饰品这一个整体项目的过程中,也培养了自己的综合能力和从全局考虑的思想。将复杂的问题简单化,作为电子商务应用的一个缩影,我所涉及的模块项目完成了其具有的基本功能,使自己对于web的了解更加深入和明了。
当然,其中也遗留下了一些待解决的问题,但出于自己水平有限,作为一个网上饰品系统,该项目上有一些不完善和函待改进之处,特别是在网站信息的安全性上需要进一步加强。
 

你可能感兴趣的:(基于JSP网上饰品系统的设计)