购物系统项目的实现大学论文文档格式.docx
《购物系统项目的实现大学论文文档格式.docx》由会员分享,可在线阅读,更多相关《购物系统项目的实现大学论文文档格式.docx(35页珍藏版)》请在冰豆网上搜索。
1)“一次编写,各处执行”特性。
一个JSP程序可以运行于支持JSP的任何应用服务器,而不需要对代码做任何修改。
2)搭配可重用组件。
JSP技术科使用跨平台、可重用的组件(如JavaBean或EnterpriseJavaBean组件)来执行更复杂的运算、数据处理。
3)采用标记化页面开发。
Web页面开发人员可以运用自己定义好的标记,无需再写复杂的Java语法,就能快速开发出动态内容网页。
4)实现了角色的分离。
JSP技术允许将工作分为两类:
页面的图形内容和页面的动态内容。
不具备Java编程语言知识的人员可以创建页面的图形内容,然后由Java程序员向此文档插入Java代码,实现动态内容。
5)N层企业应用架构的支持。
JSP技术主要负责前端显示,而分散性的对象系统则主要依赖EJB(EnterpriseJavaBean)和JNDI(JavaNamingandDirectoryInterface)构建而成。
内部对象说明:
request客户端请求,此请求会包含来自GET/POST请求的参数;
respons网页传回客户端的响应;
pageContext网页的属性是在这里管理;
session与请求有关的会话;
applicationservlet正在执行的内容;
out用来传送响应的输出流;
config代码片段配置对象;
page JSP网页本身;
exception 针对错误网页,未捕捉的例外。
2.1.2Servlet
Servlet是用Java语言编写的服务器端程序,是由服务器端调用和执行的、按照Servlet自身规范编写的Java类。
Servlet程序就是百分之百的Java程序。
Servlet是使用JavaServletAPI编写的,运行在Web服务器端的Java类。
当服务器会加载Servlet,创建Servlet实例,调用Servlet实例的init()方法进行初始化,然后调用service()方法处理请求,最后调用destroy()方法销毁Servlet。
其中,init()方法、destroy()方法均只执行一次。
Servlet控制过程中需要用到ServletContext或者ServletRequest对象和RequestDispacher对象,通过RequestDispacher的forward()方法和include()方法。
2.1.3JavaBean
JavaBean是JavaWeb程序的重要组件,它是一个面向对象编程中封装了属性和方法的类,它封装了数据和业务逻辑;
JavaBean供JSP或Servlet调用,完成数据封装和数据处理等功能。
使用JavaBean可以实现代码的重用。
在JSP中使用JavaBean有三种动作标记:
<
jsp:
useBean>
动作标记、<
getProperty>
setProperty>
动作标记。
JavaBean的设计规范
(1)JavaBean是一个public类。
(2)JavaBean有一个公共的、无参的构造方法。
(3)JavaBean所有的属性定义为private。
(4)JavaBean中,需要对每个属性提供两个公共方法。
:
setXxx():
设置属性xxx的值。
getXxx():
获取属性xxx的值(若属性类型是boolean,则方法名为isXxx())。
(5)定义JavaBean时,通常放在一个命名的包下。
2.2系统需求
2.2.1系统的安全性
本购物系统在管理权限上要严格进行控制,具体要求如下:
1)管理员要想管理本系统的商品信息,必须先要凭用户名和密码登陆到系统中,没有权限的用户不能通过任何方式登录系统查看并修改系统的任何信息和数据,以确保系统的严密性和安全性。
普通用户能在线浏览信息,但是想要把商品加入购物车、购买商品、查看购物车、查看订单等功能。
2)在具体实现中设定不同权限,不同权限用户登录到系统后,不能越级操作,管理员可以使用所有模块,除了修改用户信息;
普通用户能在线浏览信息,不能删除修改商品信息。
2.2.2数据的完整性
1)各种记录信息的完整性,信息记录内容不能为空
2)各种数据间相互联系的正确性
3)相同数据在不同记录中的一致性
2.3界面需求
界面设计目前已经成为评价软件质量的一条重要指标,一个好的用户界面可以增加用户使用系统的信心和兴趣,提高工作效率,JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。
创建动态页面非常方便。
用户界面是指软件系统与用户交互的接口,通常包括输出、输入、人-机对话的界面格式等。
(1)输出设计
输出是由计算机对输入的原始信息进行加工处理,形成高质量的有效信息,并使之具有一定的格式,提供管理者使用,这是输出设计的主要职责和目标。
系统设计的过程正好和实施过程相反,并不是从输入设计到输出设计,而是从输出设计到输入设计,这是因为输出表格直接与使用者相联系,设计的出发点应当是保证输出表格方便地为使用者服务,正确及时反映和组成用于各部门的有用信息。
输出设计的原则是考虑既要全面反映不同管理层的各项需要,又要言简意赅,不要将用户需要和不需要的都提供给用户。
(2)输入设计
输入数据的收集和录入是比较费事的,需要大量的人力和一定设备,并且容易出错。
如果输入系统的数据有错误,则处理后的输出将扩大这些错误,因此输入数据的正确性对于整个系统质量的好坏是具有决定性意义的。
输入设计的原则有如下几点:
1)输入量应保持在能满足处理要求的最低限度。
设计中可采用设置字段初值,下拉式数据窗口等方式尽量减少用户键盘输入量。
输入量越少,错误率就越少,数据准备时间也减少。
2)输入的准备及输入过程应尽量容易进行,从而减少错误的发生。
3)应尽量早对输入数据进行检查(尽量接近原数据发生点),以便使错误及时得到更正。
4)输入数据尽早地用其处理所需的形式被记录,以避免数据由一种介质转移到另一种介质时需要转录而可能发生的错误
三、系统分析与设计
3.1系统架构设计
3.3.1运行环境
操作系统版本:
Win7
开发工具:
MyEclipse10
后台服务器:
apache-tomcat-6.0.30
开发语言:
Java
数据库:
SQLServer2008
浏览器:
搜狗浏览器
3.1.2系统的架构分层
2.3普通用户用户功能模块图
图2.4管理员用户功能模块图
3.2系统详细设计
3.2.1数据库设计
(1)普通用户表(t_user)
列名
数据类型
长度
允许空
是否主键
说明
id
int
4
否
是
用户id
loginname
varchar
50
用户名
loginpw
用户密码
name
真实姓名
sex
性别
age
20
年龄
address
住址
tel
电话
email
qq
qq
(2)商品类别信息表(t_catelog)
4
否
是
类别ID
类别名称
del
是否删除
(3)商品信息表(t_goods)
商品ID
catelog_id
bianhao
商品编号
mingcheng
名称
jieshao
介绍
pinpai
商品品牌
fujian
Date
商品图片
shichangjia
商品价格
(4)公告信息表(t_gonggao)
公告id
title
公告标题
content
公告内容
shijian
发布日期
(5)管理员信息表(t_admin)
userId
编号
userName
用户名
userPw
密码
(6)订单信息表(t_order)
50
用户id
下单时间
zhuangtai
订单状态
songhuodizhi
送货地址
fukuanfangshi
付款方式
jine
总金额
user_id
会员ID
3.2.2数据库的连接
关键代码如下:
publicDBContent(){
StringCLASSFORNAME="
com.microsoft.jdbc.sqlserver.SQLServerDriver"
;
//连接数据库的驱动
Stringurl="
jdbc:
microsoft:
sqlserver:
//localhost:
1433;
databaseName=bs"
Stringuser="
root"
//连接数据库的用户名
Stringpassword="
//连接数据库的密码
try{
Class.forName(CLASSFORNAME);
con=DriverManager.getConnection(url,user,password);
//加载数据库的驱动
stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
}
catch(Exceptionex){
ex.printStackTrace();
}
}
四、系统实现
4.1管理员模块
4.1.1管理员登录
1、说明:
为了提高安全性,防止用户绕过前台进入后台,设置对特定人员的登录,对普通用户进行拦截操作。
在登陆页面输入用户名和密码以,点击提交按钮,跳转到登陆的service中,在该service中会对用户名,密码进行判断,如果正确提示“通过验证”,进入到管理界面,如果错误则提示“用户名和密码不正确”,页面调转到登陆页。
2、loginservice关键代码如下:
publicStringlogin(StringuserName,StringuserPw,intuserType)
{
try
{
Thread.sleep(700);
}catch(InterruptedExceptione)
//TODOAuto-generatedcatchblock
e.printStackTrace();
Stringresult="
no"
if(userType==0)//系统管理员登陆
Stringsql="
fromTAdminwhereuserName=?
anduserPw=?
"
Object[]con={userName,userPw};
ListadminList=adminDAO.getHibernateTemplate().find(sql,con);
if(adminList.size()==0)
{
result="
}
else
WebContextctx=WebContextFactory.get();
HttpSessionsession=ctx.getSession();
TAdminadmin=(TAdmin)adminList.get(0);
session.setAttribute("
userType"
0);
session.setAttribute("
admin"
admin);
result="
yes"
if(userType==2)
returnresult;
4.1.2管理员主页面
说明:
显示管理员可操作的功能。
4.1.3修改个人密码
管理员可修改自己的密码,但不能修改登录名
2、关键代码如下:
publicStringadminPwEdit(StringuserPwNew)
System.out.println("
DDDD"
);
try
}
catch(InterruptedExceptione)
WebContextctx=WebContextFactory.get();
HttpSessionsession=ctx.getSession();
TAdminadmin=(TAdmin)session.getAttribute("
Stringsql="
updatet_adminsetuserPw=?
whereuserId=?
Object[]params={userPwNew,admin.getUserId()};
DBmydb=newDB();
mydb.doPstm(sql,params);
return"
}
4.1.4网站公告管理
服务器收到客户端发出的请求,调用后台的公告Servlet查询出所有的公告信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出公告信息。
还可以对公告进行添加和删除。
publicvoidgonggaoAdd(HttpServletRequestreq,HttpServletResponseres)
Stringid=String.valueOf(newDate().getTime());
Stringtitle=req.getParameter("
title"
Stringcontent=req.getParameter("
content"
Stringshijian=newDate().toLocaleString();
insertintot_gonggaovalues(?
?
)"
Object[]params={id,title,content,shijian};
mydb.closed();
req.setAttribute("
message"
"
操作成功"
path"
gonggao?
type=gonggaoMana"
StringtargetURL="
/common/success.jsp"
dispatch(targetURL,req,res);
publicvoidgonggaoDel(HttpServletRequestreq,HttpServletResponseres)
Stringid=req.getParameter("
id"
deletefromt_gonggaowhereid=?
Object[]params={id};
publicvoidgonggaoMana(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException
ListgonggaoList=newArrayList();
select*fromt_gonggao"
Object[]params={};
mydb.doPstm(sql,params);
ResultSetrs=mydb.getRs();
while(rs.next())
Tgonggaogonggao=newTgonggao();
gonggao.setId(rs.getString("
));
gonggao.setTitle(rs.getString("
gonggao.setContent(rs.getString("
gonggao.setShijian(rs.getString("
shijian"
gonggaoList.add(gonggao);
rs.close();
catch(Exceptione)
gonggaoList"
gonggaoList);
req.getRequestDispatcher("
admin/gonggao/gonggaoMana.jsp"
).forward(req,res);
4.1.5类别信息管理
调用后台的action类查询所有商品,还可以对类别信息进行添加和删除的操作。
publicvoidcatelogAdd(HttpServletRequestreq,HttpServletResponseres)
{
Stringname=req.getParameter("
name"
).trim();
Stringdel="
insertintot_catelog(name,del)values(?
Object[]params={name,del};
catelog?
type=catelogMana"
publicvoidcatelogDel(HttpServletRequestreq,HttpServletResponseres)
updatet_catelogsetdel='
yes'
whereid="
+Integer.parseInt(req.getParameter("
Obje