登陆的具体实现要通过一个全程变量,即Session变量来实现用户登录的界面UserLogin.jsp,从shopuser表查得用户提交的帐户名和密码正确后,用一个全局变量,即Session变量保存这一消息(该变量名称为Session(“user”))。具体的判断过程为:
若session中user为空即session.getAttribute(\,表明没有经过登陆与否的验证,则立即跳转到UserLogin.jsp,请用户登录;并将用户登陆的帐号和密码通过
通过UserService 的check 方法,先判断是否存在这个用户如果不存在这个用户则抛出自己定义的一个异常UserNotFoundException ,如果存在这个用户再和输入的密码做对比,如果密码不正确则抛出自己定义的PasswordWrongException异常。对应Action中分别截获这两种不同的异常来判断对应的错误信息。具体代码实现如下:
String username = request.getParameter(\String password = request.getParameter(\try {
User u = User.check(username, password); session.setAttribute(\
} catch (UserNotFoundException e) {
out.println(e.getMessage()); return;
} catch (PasswordNotCorrectException e) {
out.println(e.getMessage()); return; }
5.2.2新会员注册模块的实现
如果用户还不是会员则提示用户进行注册,用户提交信息之后,系统开始判断用户的注册信息是否有效,首先是用户名是否为空,(该处存在用户名命名规则的问题,后面问题中会详细解决)用户输入的两次密码是否一致,然后依次往
后判断用户所填写的各项信息是否符合要求,直到所有信息均正确无误,系统将该用户注册信息写入会员表即member并提示用户注册成功,用户登陆后,就可以进行有效的购物了。注册页面的效果图如下:
图5.2注册页面界面
系统对用户的注册信息的验证实现如下:用户输入的各项信息分别对应字段 username,password,phone,addr, 再添加用户之前要有一个前台校验: function check{
var username=document.register.username.value; var password=document.register.password.value; var password2=document.register.password2.value; var addr=document.register.addr.value; if(username.length==0){ alert(“用户名不能为空”); ruturn false;
}else if(username.length<6){
Document.register.username.value=’’; alert(“用户名长度不能小于6位”); return false;
}else if(password.length<6){
alert(“用户名长度不能小于6位”); return false;
}else if(password!=password2){
alert(“两次输入的密码不一样,请返回重新输入!”); ruturn false;
}else if(addr.length==0){ }
return true; }
5.2.3 购物车模块的实现
当用户登陆成功以后,如果找到了希望定购的物品,在点击物品下方的定购以后,系统会弹出一个新的页面,显示该物品已经添加进购物车,然后用户需要选择定购的数量。页面效果如下:
alert(“地址不能为空”); return false;
图5.3购物车界面
在点击确认以后,该物品信息被后台添加到购物车中,如果用户需要继续购
物,可以继续选择,不断添加,买的物品列表,及合计价格。
购物车类: public class Cart { {
}
public double getTotalMemberPrice() {
double d = 0.0;
for(Iterator
CartItem current = it.next();
d += current.getProduct().getMemberPrice() * }
items.add(ci);
CartItem item = iter.next();
if(item.getProduct().getId() == ci.getProduct().getId()) { }
item.setCount(item.getCount() + 1); return;
List
public void setItems(List
public void add(CartItem ci) {
for (Iterator
this.items = items; return items;
current.getCount();
} return d;