一.注册
1.register.jsp
header.jsp
top.jsp
simpleSearch.jsp
registerPage.jsp
footer.jsp
2.ForeServlet.register()
String name = request.getParameter("name");
String password = request.getParameter("password");
name = Html.Utils.htmlEscape(name);
//把账号里的特殊字符转译
System.out.println(name);
boolean exist = userDAO.isExist(name);
if(exist){
request.setAtrribute("msg","用户名已经被使用");
return "register.jsp";
}
User user = new User();
user.setName(name);
user.setPassword(password);
System.out.println(user.getName());
System.out.println(user.getPassword());
userDAO.add(user);
return "@registerSuccess.jsp";
3.registerSuccess.jsp
header.jsp
top.jsp
simpleSearch.jsp
registerSuccessPage.jsp
footer.jsp
二.登录
1.login.jsp
header.jsp
login.jsp
footer.jsp
2.ForeServlet.login()(跟注册差不多呢)
String name = request.getParameter("name");
name = HtmlUtils.htmlEscape(name);
String password = request.getParameter("password");
User user = userDAO.get(name,password);
if(null = user){
request.setAttribute("msg","账号密码错误");
return "login.jsp";
}
request.getSession().setAtrribute("user",user);
return "@forehome";
三.退出
1.ForeServlet.logout()
request.getSession().removeAttribute("user");
return "@forehome";
四.产品页
1.ForeServlet.product()
int pid = Interger.parseInt(request.getParameter("pid"));
Product p = productDAO.get(pid);
List<productImage> productSingleImages = productImageDAO.list(p,ProductImageDAO.type_single);
List<productImage> productDetailImages = productImageDAO.list(p,ProductImageDAO.type_detail);
p.setProductSingleImages(productSingleImages);
p.setProductDetailImages(productDetailImages);
List<PropertyValue> pvs = propertyValueDAO.list(p.getId());
List<Review> reviews = reviewDAO.list(p.getId());
productDAO.setSaleAndReviewNumber(p);
request.setAttribute("reviews",reviews);
request.setAttribute("p",p);
request.setAttribute("pvs",pvs);
return "product.jsp";
2.product.jsp
header.jsp
top.jsp
simpleSearch.jsp
productPage.jsp
imgAndInfo.jsp//显示5个单张图片和基本信息
//这里的加入购物车,购买,模态登陆和切换大图用到了ajax
productReview.jsp//评价信息
productDetail.jsp//显示属性值和详情图片
footer.jsp
五.模态登陆
1.imgAndInfo.jsp
立即购买和购物车这两个按钮的监听放在imgAndInfo.jsp
都会通过JQuery的.get方法用异步ajax的方式访问forecheckLogin获取当前是否登陆状态
如果返回的不是"success"即表明是未登录状态,打开登陆的模态窗口
$("#loginModal").modal('show');
//使用js控制Bootstrap模态窗口
2.ForeServlet.checkLogin()
上一步的ajax访问路径/forecheckLogin会导致ForeServlet.checkLogin()方法被调用
获取session中的"user"对象
User user =(User)
request.getSession().getAttribute("user");
if(null!=user)
return "%success";
return "%fail";
3.modal.jsp
被footer.jsp所包含,所以每个页面都是加载了的
通过imgAndInfo中的购买或者加入购物车按钮显示出来
点击登陆按钮时,使用imgAndInfo.jsp页面中的ajax代码进行登陆验证
4.ForeServlet.loginAjax()
在上一步modal.jsp中,点击了登录按钮之后,访问路径/foreloginAjax,导致ForeServlet.loginAjax()方法被调用
String name = request.getParameter("name");
String password = request.getParameter("password");
User user = userDAO.get(name,password);
if(null==user){
return "%fail";
}
request.getSession().setAttribute("user", user);
return "%success";
六.分类页
1.5个Comparator比较器
1. ProductAllComparator 综合比较器
把 销量x评价 高的放前面
public class ProductAllComparator implements Comparator<Product>{
@Override
public int compare(Product p1, Product p2) {
return
p2.getReviewCount()*p2.getSaleCount()-
p1.getReviewCount()*p1.getSaleCount();
}
}
2. ProductReviewComparator 人气比较器
把 评价数量多的放前面
3. ProductDateComparator 新品比较器
把 创建日期晚的放前面
4. ProductSaleCountComparator 销量比较器
把 销量高的放前面
5. ProductPriceComparator 价格比较器
把 价格低的放前面
2.ForeServlet.category()
int cid = Interger.parseInt(request.getParameter("cid"));
Category c = new CategoryDAO().get(cid);
new ProductDAO().fill(c);
new ProductDAO.setSaleAndReviewNumber(c.getProducts())
String sort = request.getParameter("sort");
if(null != sort){
switch(sort){
case "review":Collections.sort(c.getProducts(),new ProductReviewComparator());
break;
case "date" :
Collections.sort(c.getProducts(),new ProductDateComparator());
break;
case "saleCount" :
Collections.sort(c.getProducts(),new ProductSaleCountComparator());
break;
case "price":
Collections.sort(c.getProducts(),new ProductPriceComparator());
break;
case "all":
Collections.sort(c.getProducts(),new ProductAllComparator());
break;
}
}
request.setAttribute("c", c);
return "category.jsp";
3.category.jsp
header.jsp
top.jsp
search.jsp
categoryPage.jsp
sortBar.jsp
productsByCategory.jsp
footer.jsp
七.搜索
1.search.jsp以及simpleSearch.jsp
这两个页面都提供了一个form,提交数据keyword到foresearch这个路径
首页和搜索结果页包含search.jsp其他页面包含simpleSearch.jsp
2.ForeServlet.search()
String keyword = request.getParameter("keyword");
List<Product> ps= new ProductDAO().search(keyword,0,20);
productDAO.setSaleAndReviewNumber(ps);
request.setAttribute("ps",ps);
return "searchResult.jsp";
3.searchResult.jsp
header.jsp
top.jsp
search.jsp
searchResultPage.jsp
productsBySearch.jsp
footer.jsp
网友评论