jsp网上商城系统(网上购物系统设计) 第8页
5.3各功能模块的实现
5.3.1数据库的连接
出于安全性的考虑,我们将与数据库的连接,单独写出来并进行编译,也就是数据库连接的javabean文件,编译出来的.class文件是无法被修改的只能通过源文件进行修改,我们在JSP页面中只用直接调用改方法即可,在本系统中我们将其命名为为.faq
存放在class/ckstudio/db下设其id为mdb,我们在需要对数据库进行操作的时候只需在页面上添加这样一个标签<jsp:useBean id="mdb" class="ckstudio.db.faq" scope="page"/>即可。连接关键代码如下:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");定义驱动类型
String strDirPath=application.getRealPath(request.getRequestURI());
strDirPath=strDirPath.substring(0,strDirPath.lastIndexOf('\\'))+"\\";
得到数据库的存放路径
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};
DBQ="+strDirPath+"db.mdb";
定义连接地址
Connection conn = DriverManager.getConnection(url);
连接数据库
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
返回操作结果
5.3.2用户登陆模块的实现
用户登陆模块是防止非法用户登陆的第一道防线,通过它可以保护后台数据库的安全性,当用户要进行定购时,首先要进入的就是身份验证界面,只有在密码正确的情况下才能进行以后的购物,如果输入的密码不正确,则不能进行定购。如果用户以浏览者的身份进入网站,则只能进行一般的商品浏览和搜索,而不能进行选购,在点击添加购物车后,系统会判断该用户是否是登陆用户,如果不是则弹出提示页面,提示用户必须先登陆才能定购商品,如果是第一次登陆,请先注册。
主页面的效果图如下:
图5.2 主页面示意图
登陆的具体实现要通过一个全程变量,即Session变量来实现,在系统中则由一个单独的session.jsp页面来放置该session。用户登录的界面dengluyufou.jsp,从member表查得用户提交的帐户名和密码正确后,用一个全局变量,即Session变量保存这一消息(该变量名称为Session(“user_name”))。具体的判断过程为:
若session中user为空即session.getAttribute("user_name")==null,表明没有经过登陆与否的验证,则立即跳转到dengluyufou.jsp,请用户登录;并将用户登陆的帐号和密码通过
user_name=request.getParameter("user_name");
user_pass=request.getParameter("user_pass");
分别赋给变量user_name,和user_pass,然后将其与数据库中的相应信息进行比较
String sql="select * from member where user_name='"+user_name+"'";
如果user_name存在的话则判断其密码是否正确
user_pass.equals(rs.getString("user_pass"))
如果为真则将用户信息赋给session session.setAttribute("user_name",""+rs.getString("user_name")+"");
以方便系统对用户在操作一些会员功能时进行用户身份验证。
如果用户还不是会员则提示用户进行注册,用户提交信息之后,系统开始判断用户的注册信息是否有效,首先是用户名是否为空,(该处存在用户名命名规则的问题,后面问题中会详细解决)用户输入的两次密码是否一致,然后依次往后判断用户所填写的各项信息是否符合要求,直到所有信息均正确无误,系统将该用户注册信息写入会员表即member并提示用户注册成功,用户登陆后,就可以进行有效的购物了。
注册页面的效果图如下: 图5.3注册页面示意图
系统对用户的注册信息的验证实现如下:
用户输入的各项信息分别对应字段
user_name,user_pass,user_pass2,user_adds,
user_tel,user_mail,user_postcode;
先判断用户名是否为空request.getParameter("user_name").equals("")
如果不为空则将该值传给变量user_name user_name=getStr(request.getParameter("user_name"));
同样道理对密码进行判断
request.getParameter("user_pass").equals(""))
request.getParameter("user_pass2").equals(""))
判断两次输入是否一致user_pass.equals(user_pass2)
其他选项与上面类似,如果条件符合则将该值赋给各个字段
用户名重复的验证代码为:
sql="select * from member where user_name='"+user_name+"'";
rs=mdb.executeQuery(sql);
if(rs.next()){
errmsg=errmsg+"用户名已被别人注册";
founderr=true;
}
当所有条件都符合的时候,系统将数据写入数据表,并返回成功页面,显示用户所填的注册信息,写入关键语句为:
sql="Insert into member(user_name,user_pass,user_adds,user_mail,user_tel,user_regip,user_namec)values('"+user_name+"','"+user_pass+"','"+user_adds+"','"+user_mail+"','"+user_tel+"','"+request.getRemoteHost()+"','"+getStr(request.getParameter("user_namec")))";
用户在注册之后也可以对自己的资料进行修改,在点击主页面的修改资料之后,弹出这样的一个页面,用户可以直接在文本框里修改,然后确认。
图5.4用户资料修改示意图
修改这一过程的具体实现过程为
user_name=request.getParameter("user_name");
sql="select * from member where user_name='"+user_name+"'";
ResultSet rs;rs=mdb.executeQuery(sql);
根据用户名将该用户的所有信息列出来,以供用户修改,
修改的方法采用的是rs.updateString("user_pass",user_pass);其他的类似。
5.3.3 购物车模块的实现
当用户登陆成功以后,如果找到了希望定购的物品,在点击物品下方的定购以后,系统会弹出一个新的页面,显示该物品已经添加进购物车,然后用户需要选择定购的数量。页面效果如下:
图5.5购物车示意图
在点击确认以后,该物品信息被后台添加到购物车表即basket表中,如果用户需要继续购物,可以继续选择,不断添加,系统会自动将所有信息写入basket表,同时显示用户所购买的物品列表,及合计价格。
其具体代码实现过程为:
从session中取得该用户的信息
user_name=(String)session.getValue("user_name");
user_type=(String)session.getValue("user_type");
对商品的信息进行提取以写入购物车表
String hw_ids=request.getParameter("hw_id");
String counts=request.getParameter("count");
String hw_cashs=request.getParameter("hw_cash");
hw_name=request.getParameter("hw_name");
具体的写入语句为:
sql="insert into basket(hw_id,user_name,basket_count,hw_name,hw_cash)";
sql=sql+"values('"+hw_ids+"','"+user_name+"','"+counts+"','"+hw_name+"','"+hw_cashs+"')";
mdb.executeInsert(sql);
如果用户在去收银台结帐前对已经选购的物品不满意时,可选择清空购物车,同时系统也将basket表中相关信息删除。用户完成选购之后,可点击收银台付款,系统返回最终选购物品列表和合计价格,如图所示:
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>