// 若购买购物车中的商品,由于存在session中的,要修改数据,对购物车修// 因此可以直接返回
if (method != null && method.equals(\ }
// 购买某种商品 if (id > 0) { }
return \
// 为了保证购买单本商品,如果还没有下订单,则重新选择商品时,列表if (mySession.get(\null) { }
ICommodityDao commodityDao = DaoFactoryUtil.getCommodityDao(); Commodity dbCommodity = commodityDao.findById(id);
SelectedCommodity selectedCommodity = new SelectedCommodity(); selectedCommodity.setCommodity(dbCommodity); selectedCommodity.setNum(1);
selectedCommodity.setSubtotal(selectedCommodity.getNum() List
selectedCommodities
=
* new
mySession.remove(\
commoditiesInfo = (CommodityContainer) mySession.get(\// 移出出之前存放的myCar mySession.remove(\
mySession.put(\return \
改就可以了,
中应是一本新书
dbCommodity.getPrice()); ArrayList
selectedCommodities.add(selectedCommodity); commoditiesInfo = new CommodityContainer();
commoditiesInfo.setSelectedCommodities(selectedCommodities); commoditiesInfo.setKinds(1);
commoditiesInfo.setAllPrice(selectedCommodity.getNum()
* selectedCommodity.getCommodity().getPrice());
mySession.put(\
30
4.2.3购物车管理模块的实现 (1)主要实现要点
购物车是通过商品容器来构造的,其次就是要实现当购物车中出现了来自不同商家的商品时,是不能同时支付的。
(2)实现查看购物车的部分java 代码如下:
if(mySession.containsKey(\null){
myCar=(CommodityContainer) mySession.get(\//更新购物车商品列表 List
if(canAddMyCar(selectedCommodities,commodity)){
SelectedCommodity selectedCommodity=new SelectedCommodity(); selectedCommodity.setCommodity(commodity); selectedCommodity.setNum(1);
selectedCommodities=myCar.getSelectedCommodities();
selectedCommodity.setSubtotal(selectedCommodity.getCommodity().getPrice(
}
}
myCar.setSelectedCommodities(selectedCommodities); //更新购物车,总价格,商品件数
myCar.setAllPrice(carDao.getAllPrice(selectedCommodities)); myCar.setKinds(selectedCommodities.size()); mySession.remove(\mySession.put(\//更新是否包含不相同的经营者商品
haveDifferOper=carDao.haveDifferOperator(selectedCommodities); mySession.put(\return \
selectedCommodities.add(selectedCommodity); message=\添加成功!\
message=\你已经添加过商品!\
)*selectedCommodity.getNum());
}else{
31
4.2.4安全中心模块的实现 (1)主要实现要点
1)在同一个jsp页面中要实现展示不同的情况,首先是看当前是否为找回密码的状态,然后根据当前的Session中是否含有在线用户信息,若没有,则展示输入找回密码信息,若有,则看该用户是否设置密保,设置了,则展示密保信息,但是不能修改问题,如果没有设置,则展示可以设置密保问题和答案。
2)在实现找回密码时,首先在数据中查询该用户名,看看有没有用户信息,如果有,且两个问题和所对应的答案必须配对成功,方可找回密码。 (2)其中实现找回密码的部分java 代码如下:
if(!name.equals(\tAnswer().equals(\
&&!mySecurity2.getQuestion().equals(\
User user =DaoFactoryUtil.getUserDao().findByName(name); boolean find1=false,find2=false; if(user!=null){ }
if(find1&&find2){
password=user.getUserPass(); }else{
32
(\
ISecurityDao securityDao=DaoFactoryUtil.getSecurityDao(); mySecurities=securityDao.findByUserId(user.getId()); for(Security security:mySecurities){
if(security.getQuestion().equals(mySecurity1.getQuestion())&&
}
find1=true;
security.getAnswer().equals(mySecurity1.getAnswer())){
}else }
find2=true;
if(security.getQuestion().equals(mySecurity2.getQuestion())&&
security.getAnswer().equals(mySecurity2.getAnswer())){
}
}
}
message=\很抱歉,未找到!\
}else{
message=\输入项不能为空!\
return \
4.3 Chat后台管理子系统的实现
4.3.1管理员管理模块的实现 (1)主要实现要点
内置6种角色,超级管理员可以添加其它管理员,不同的角色拥有着不同的权限,在jsp页面实现的效果是用strut2标签中的if判断语句,根据角色不同而展示不同的功能。
(2)其中实现增加管理员的部分java 代码如下:
}
IAdminDao adminDao=DaoFactoryUtil.getAdminDao();
String regex=\//登录名只出现单词字符 } try { }
return \
adminDao.saveAdmin(admin); message=\系统故障,请联系管理员\} catch (Exception e) {
if(!(admin.getAdminName().length()>0&&admin.getAdminName().length()<=20)){
message=\真实姓名格式不对\return \
message=\登录名格式不对\return \
}else if(!admin.getAdminCode().matches(regex)){
} else if(!admin.getAdminPass().matches(regex)){
message=\密码格式不对\return \
33
4.3.2用户管理模块的实现 (1)主要实现要点
在用户管理模块中,主要实现要点是管理员权限不能修改用户信息,只能是查看和删除。
(2)其中实现查询所有用户的部分java 代码如下:
IUserDao userDao=DaoFactoryUtil.getUserDao(); totalPage=userDao.totalPage(myPage); if(page!=0){ }
users=userDao.findByPage(myPage); return \
myPage.setPage(page);
4.3.3报表管理模块的实现 (1)主要实现要点
这里主要是用hibernate查询sql语句时,怎样获取结果集。 (2)其中实现统计用户信息的部分java 代码如下: @Override
public Object[] statisUser() {
Session session=SessionUtil.getSession(); Object[] userObjs=new Object[5]; //统计用户数量
String hql=\Query query=session.createQuery(hql);
Integer userNums=Integer.valueOf(query.uniqueResult().toString()); userObjs[0]=userNums; //统计会员数
hql=\query=session.createQuery(hql);
Integer memberNums=Integer.valueOf(query.uniqueResult().toString()); userObjs[1]=memberNums; //统计卖家数
hql=\query=session.createQuery(hql);
Integer sellerNums=Integer.valueOf(query.uniqueResult().toString());
34