1. 用户模块
password--MD5加密(16位或32位)
2. 产品模块
·浏览过的商品(ViewProductAction)--使用cookie实现。特别注意先进先出原则,如用户可以看到过去浏览的10个cookie,如果已经浏览a-b-c-d-e, 此时再浏览c,应将原来的c的cookie清除。
·文件上传
对文件类型进行校验:图片格式校验 + 后缀名校验。
图片格式:图片太大时需进行压缩,jpg,png,gif(非动画)。
存放文件夹最好不要存放太多文件。
3. 购物模块
·存放购物车
用session存放。关闭窗口时,由于session随之关闭,导致原来购物车不可用。解决方法是:将cookie的有效期设为==session的有效期
Cookie cookie = new Cookie("JSESSIONID", request.getSession().getId());
cookie.setMaxAge(request.getSession().getMaxInactiveInterval());
4. 订购模块
·由formBean得到Gender类型值后,需要对其进行类型转换(Gender为Enum型,定义请参考Enum.txt)。
Object convert(Object value){
if(value instanceof Gender) return value; //如果是Gender类型,可以直接返回相应字符串
try{
return Gender.valueof((String)value); //如果value不是Gender类型,将其转为字符串后,转换为相应gender
} catch(Exception e){}
return null;
}
·某些模块需要用户登陆,可以通过过滤器过滤相应请求(/customer/*)显示登陆界面。
购物车界面(shopping/cart) -> 结算,填写收货人信息(address) -> 确认购物信息(confirm), 此时更新购物车后,会重新显示收货人信息界面(address)。解决的方法是:在购物车界面加入参数directUrl(预先使用Base64进行编码,以防止由于特殊字符导致的路径出错问题),使其指向(confirm)界面。
String url = new String(Base64.encodeBase64(url.getBytes())); //Base64.decodeBase64解码
5. 下订单
·OrderItem<订单项>不能与产品Product相关联,有可能会因为产品降价,而导致订单项中显示的某物品降价,使单价与总价不符,影响客户购物。
·订单号orderId一般使用String类型,而不是int
·订单项orderItem一定不要级联保存或删除订单Order。保存:会出现重复订单; 删除:删除单个订单明显不能将总订单删除。
·orderItem的hashcode:itemid == null时,返回0。如果一个order有多个orderItem,会因为几个0值的出现,只保存一个orderItem,导致其他丢失。
自动生成:result = prime * result + ((itemid == null) ? 0 : itemid.hashCode());
修改为: result = prime * result + ((itemid == null) ? super.hashCode() : itemid.hashCode());
·保存order时可以将原来注册时的buyer的contact信息补全。注册时用户可能不会填写很多详细信息,但下订单收货时会填写地址,电话之类的信息,此时可将其同时保存到联系人相应的contact表中。
·order保存后,应将购物车从session中删除。
6. 订单模块
·订单分页列表
·订单信息浏览
·订单信息维护
·订单流转
7. 权限模块
采用领域建模:第一步开发实体。
数据库建模:第一步建立数据表。
·设计DAO
·设计业务bean(service层)
·设计Action