美文网首页
前台无需登录模块

前台无需登录模块

作者: ticktackdong | 来源:发表于2018-05-16 14:46 被阅读0次

一.注册

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

相关文章

网友评论

      本文标题:前台无需登录模块

      本文链接:https://www.haomeiwen.com/subject/wespdftx.html