你的位置:首页 > ASP.net教程

[ASP.net教程]易买网的思路集成


                天下无难事,只怕有心人。天下天易事,只怕粗心人。——袁枚

    当你看当这句话的时候也许你现在对项目不知所措;也许你现在对项目一知半解;也许你对项目并未满载而归;但是不要放弃、不要气馁,因为我们还有时间、信念和坚持。小伙伴们崛起吧!!!

  一、思路梳理

  1)首先搭建前后台的页面

  2)其次前端开发

    01、登录外加验证码

    02、注册

    03、前台首页(导航栏和左侧栏一级和二级分类)

    04、默认情况下对所有商品进行分页

    05、新闻动态

    06、商品最近浏览

    07、商品详情

    08、单项购买和加入购买车

    09、前台留言

  3)最后后台开发

    01、用户管理

    02、新闻管理

    03、评价管理

    04、商品管理

    05、分类管理

    06、订单管理

  二、难点攻克

  1.注册(Ajax技术)

    ajax的外部引用在js进行引用,在js页面引用,js会转向servlet

 $(function(){    $("#userId").blur(function(){//"userId"是用户的Id      ajax();//调用这个方法    });  });  function ajax(){    //获取用户名    var uname=$("#userId").val();    $.ajax({        url:'/EasyBuy/AjxServlet',        type:'POST',          data:'name='+uname,          //回调函数data代表servlet会送数据          success:function(data){    //mag:false true            if(data=="true"){              //不能注册              $("#userSpan").html("不能注册");            }else{              $("#userSpan").html("可以注册");//这个数据是和数据库进行对比的            }                      }    });  }



    2、购物车的思路

      先在实体类里面定义:一个购物车    一个商品

      其次根据当前需要的条件建立接口和实现类

      接下来建立servlet在将servlet进行调用===============下面是判断购物的商品个数

package cn.happy.servlet;import java.io.IOException;import java.util.LinkedHashMap;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import cn.happy.dao.imp.OrderAddDaoImp;import cn.happy.entity.Cart;import cn.happy.entity.CartItem;import cn.happy.entity.Product;public class ProductServlet extends HttpServlet {  /*      出品人:执念   */  public void doGet(HttpServletRequest request, HttpServletResponse response)      throws ServletException, IOException {    doPost(request, response);  }  /*      出品人:执念   */    public void doPost(HttpServletRequest request, HttpServletResponse response)      throws ServletException, IOException {        LinkedHashMap<String,Cart> map = new LinkedHashMap<String, Cart>(); // 将用到购物车的订单list  k:商品编号  v:商品对象    String oper=request.getParameter("oper");//获取页面的操作值oper    String name=(String)request.getSession().getAttribute("admin");    if(name==null){      request.getRequestDispatcher("/servlet/Login?haha=haha").forward(request, response);    }else {            if(oper!=null && oper!=""){ //判定操作数不等于空不等于空字符串        if(oper.equals("view")){  //传过来的值为view时候          Product proInfoById = dao.getProInfoById(Integer.parseInt(request.getParameter("pid")));//获取当前的id          request.setAttribute("procduct",proInfoById);//根据id进行查询详细信息          request.getRequestDispatcher("/product-view.jsp").forward(request, response);//进行转发到购物车的详情中        }else{          doAdd(request, response);        }              }else{        response.sendRedirect(request.getContextPath()+"/shopping.jsp");      }              }      /*      if(name!=null){  //判断名字不等于null      if(oper!=null && oper!=""){           doAdd(request, response);      }else{        response.sendRedirect("/shopping.jsp");      }    }else{      response.sendRedirect("/login.jsp");  }  */              }      OrderAddDaoImp dao = new OrderAddDaoImp();  private void doAdd(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{        CartItem citem=(CartItem)request.getSession().getAttribute("CartItem");//获取citem进行一个取值        String id= request.getParameter("pid");//获取页面的id        boolean flag=true;//默认当前的状态为true          if(citem==null){ //如果citem获取的值为null            citem = new CartItem();//从新获取            citem.setLmap(new LinkedHashMap<String, Cart>());//将他加入集合里          }           for (String item : citem.getLmap().keySet()) {//遍历集合的数量            Cart cart= citem.getLmap().get(item);            Cart cz=new Cart();            cz.setEp_id(Integer.parseInt(id));//根据id进行+1            if(cart.equals(cz)){//1判断获取页面的值和实体进行对比如果一样进行++              citem.getLmap().get(item).setEp_num(citem.getLmap().get(item).getEp_num()+1);              flag=false;              break;            }          }          if(flag){ //2如果没有添加过那么进行新的添加新的商品            Cart cz=new Cart();              Product proinfo = dao.getProInfoById(Integer.parseInt(id));//获取商品的id              cz.setEp_id(proinfo.getEP_ID());              cz.setOrderName(proinfo.getEP_NAME());              cz.setEq_floatprice(proinfo.getEP_PRICE());              cz.setEp_num(1);              cz.setEP_FILE_NAME(proinfo.getEP_FILE_NAME());              citem.getLmap().put(id,cz);//添加到map集合            }            citem.setOrdermoney();          request.getSession().setAttribute("CartItem",citem);          response.getWriter().print("true");          //response.sendRedirect("/EasyBuy/shopping.jsp");    }}

  三、商品浏览

    主要用到了排序和cookie=========接下来servlert

 

package cn.happy.servlet;import java.io.IOException;import java.util.ArrayList;import java.util.Arrays;import java.util.LinkedList;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import cn.happy.dao.imp.NewsDynamicImp;import cn.happy.dao.imp.OrderAddDaoImp;import cn.happy.entity.News;import cn.happy.entity.Product;import cn.happy.entity.ProductCategory;public class NewsServlet extends HttpServlet {  /**     方言   */  public void doGet(HttpServletRequest request, HttpServletResponse response)      throws ServletException, IOException {     doPost(request, response);  }  /**     方言   */  public void doPost(HttpServletRequest request, HttpServletResponse response)      throws ServletException, IOException {    NewsDynamicImp ndi = new NewsDynamicImp();        OrderAddDaoImp dao = new OrderAddDaoImp();    String hh = request.getParameter("judge");    if(hh!=null&&hh.equals("liulan")){      //获取商品编号      int id = Integer.parseInt(request.getParameter("id"));      try {        //        String proHistory = getHistory(request, String.valueOf(id));        Cookie cookie = new Cookie("proHistory", proHistory);      //  cookie.setMaxAge(3600*60*24*365);        response.addCookie(cookie);                String myid = cookie.getValue();        List mylist = Arrays.asList(myid.split("_"));        Product pro = null;        List<Product> li = new ArrayList<Product>();        for (Object item : mylist) {           //调用根据商品编号获取商品详细信息的方法          pro = ndi.SelectAllCommodityByID(Integer.parseInt(item.toString()));          li.add(pro);        }        request.getSession().setAttribute("pro", li);        Product proInfoById = dao.getProInfoById(id);//获取当前的id//购物车的        request.setAttribute("procduct",proInfoById);//根据id进行查询详细信息        request.getRequestDispatcher("/product-view.jsp").forward(request, response);      } catch (Exception e) {        e.printStackTrace();      }    }else{      List<News> list = null;      List<Product> list1 = null;      List<ProductCategory> list2 = null;      try {        list = ndi.SelectAllNews();        list1 = ndi.SelectAllCommodity();        list2 = ndi.SelectCommodityClassification();      } catch (Exception e) {              e.printStackTrace();      }              request.getSession().setAttribute("list", list);        request.getSession().setAttribute("commodity", list1);        request.getSession().setAttribute("class1", list2);        request.getRequestDispatcher("/servlet/IndexPageServlet").forward(request, response);        //request.getRequestDispatcher("/index.jsp").forward(request, response);          }      }    private String getHistory(HttpServletRequest request, String id){//获取用户所有携带的cookie        //可能情况         //第一次访问:proHistory=null 1  proHistory=1        //非第一次:proHistory=3_2_5 1  proHistory=1_3_2        //非第一次:proHistory=3_1_5 1  proHistory=1_3_5        //非第一次:proHistory=3_2  1  proHistory=1_3_2        //拆解出cookies集合    Cookie[] cookies = request.getCookies();    //浏览过的商品形成的大字符串    String proHistory=null;    for (int i = 0; cookies!=null&&i < cookies.length; i++) {      if(cookies[i].getName().equals("proHistory")){        proHistory=cookies[i].getValue();        break;      }    }    if(proHistory==null){      return id;    }    //根据_分割数据    //在java中 \代表转义字符 \n \t 等,而 \\ 代表一个反斜杠 而.代表一个元字符    //要表示一个.就需要用 要用\.     //所以"\\." 在实际编译中 就代表 .    List mylist = Arrays.asList(proHistory.split("\\_"));    LinkedList<String> list = new LinkedList<String>();    list.addAll(mylist);    if(list.contains(id)){//集合中含有该商品      list.remove(id);      list.addFirst(id);    } else {      if(list.size()>=3){        list.removeLast();        list.addFirst(id);      } else {        list.addFirst(id);      }    }    StringBuffer sb = new StringBuffer();    for (String item : list) {      sb.append(item+"_");    }    return sb.deleteCharAt(sb.length()-1).toString();  }}

   四、商品分类(后台的)

    主要:就是分析一二级菜单主要用到两张表,一级id两张表要一样;二级id两张表要不同。=========servlet

      

package cn.happy.servlet;import java.io.IOException;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import cn.happy.dao.imp.HProductCategoryDaoImpl;import cn.happy.entity.ProductCategory;public class HProductClassServlet extends HttpServlet {  /*      出品人:执念   */  public void doGet(HttpServletRequest request, HttpServletResponse response)      throws ServletException, IOException {      doPost(request, response);        }  /*      出品人:执念   */  HProductCategoryDaoImpl productCategoryDaoImpl=new HProductCategoryDaoImpl();  public void doPost(HttpServletRequest request, HttpServletResponse response)      throws ServletException, IOException {        //解决乱码    request.setCharacterEncoding("utf-8");    String oper=request.getParameter("oper");    if(oper.equals("list")){//进入分类管理页面      load(request,response);      request.getRequestDispatcher("/manage/productClass.jsp").forward(request, response);    }else if(oper.equals("add")){//做中转站,携带数据到add.jsp页面      load(request,response);      request.getRequestDispatcher("/manage/productClass-add.jsp").forward(request, response);    }else if(oper.equals("addtrue")){//进行真正的添加操作      add(request,response);    }else if(oper.equals("delChildCate")){//删除选中的子分类      delChileCate(request,response);    }else if(oper.equals("delPcate")){//删除选中的一级分类      delPCate(request,response);    }else if(oper.equals("modify")){//做中转站 携带数据到modify.jsp页面      modify(request,response);    }else if(oper.equals("modifytrue")){//进行真正的修改操作      modifytrue(request,response);    }  }  /**   * 将所有的一级分类 、 二级分类放入作用域   */  public void load(HttpServletRequest request, HttpServletResponse response){    try {      //所有的一级分类 并放入作用域      List<ProductCategory> parentList=productCategoryDaoImpl.getAllParentCate();      request.setAttribute("parentList", parentList);      //所有的二级分类 并放入作用域      List<ProductCategory> childList=productCategoryDaoImpl.getAllChildCate();      request.setAttribute("childList", childList);    } catch (Exception e) {      e.printStackTrace();    }  }    /**   * 进行真正的添加操作   * */  public void add(HttpServletRequest request, HttpServletResponse response){    //获取待添加分类的根分类    String pcate=request.getParameter("parentId");    //获取待添加的分类的名称    String cate=request.getParameter("className");        ProductCategory productCategory=new ProductCategory();    productCategory.setEPC_NAME(cate);    productCategory.setEPC_PARENT_ID(Integer.parseInt(pcate));        try {      boolean flag=productCategoryDaoImpl.add(productCategory);      if(flag){//添加成功        System.out.println("添加成功!");      }else{        System.out.println("添加失败!");      }      request.getRequestDispatcher("/servlet/HProductClassServlet?oper=list").forward(request, response);    } catch (Exception e) {      e.printStackTrace();    }  }    /**   * 删除选中的二级分类   *   * */  public void delChileCate(HttpServletRequest request, HttpServletResponse response){    //获取选中删除的二级分类的id    String id=request.getParameter("id");    try {      boolean flag=productCategoryDaoImpl.delChildCate(Integer.parseInt(id));      if(flag){//删除成功        System.out.println("删除成功!");      }else{        System.out.println("删除失败!");      }      request.getRequestDispatcher("/servlet/HProductClassServlet?oper=list").forward(request, response);    } catch (NumberFormatException e) {      e.printStackTrace();    } catch (Exception e) {      // TODO Auto-generated catch block      e.printStackTrace();    }  }  /**   * 删除选中的一级分类   * */  public void delPCate(HttpServletRequest request, HttpServletResponse response){    //获取选中的一级分类的id    String pid=request.getParameter("id");    try {      boolean flag=productCategoryDaoImpl.delPcate(Integer.parseInt(pid));      if(flag){        System.out.println("删除成功!");      }else{        System.out.println("删除失败!");      }      request.getRequestDispatcher("/servlet/HProductClassServlet?oper=list").forward(request, response);    } catch (NumberFormatException e) {      e.printStackTrace();    } catch (Exception e) {      e.printStackTrace();    }  }  /**   * 做修改的中转站   * */  public void modify(HttpServletRequest request, HttpServletResponse response){    load(request,response);    //获取要修改的分类的编号    String id=request.getParameter("id");    //根据分类编号查找该分类的信息    try {      ProductCategory productCategory=productCategoryDaoImpl.getInfoById(Integer.parseInt(id));      //将该信息放入作用域,便于前台展示      request.setAttribute("productCategory", productCategory);      //根据查找回来的信息获取其父id 获取父分类的相关信息      ProductCategory PCategory=productCategoryDaoImpl.getInfoById(productCategory.getEPC_PARENT_ID());      //放入作用域      request.setAttribute("PCategory", PCategory);      //转发      request.getRequestDispatcher("/manage/productClass-modify.jsp").forward(request, response);    } catch (NumberFormatException e) {      e.printStackTrace();    } catch (Exception e) {      e.printStackTrace();    }  }    /**   * 进行真正的修改操作   * */  public void modifytrue(HttpServletRequest request, HttpServletResponse response){    //获取要修改的分类的编号    String id=request.getParameter("id");    System.out.println(id);    //获取修改后的内容    String value=request.getParameter("className");    //获取修改后是一级分类还是二级分类 所属分类编号    String pid=request.getParameter("parentId");    ProductCategory productCategory=new ProductCategory();    productCategory.setEPC_ID(Integer.parseInt(id));    productCategory.setEPC_NAME(value);    productCategory.setEPC_PARENT_ID(Integer.parseInt(pid));    //进行修改操作    try {      boolean flag=productCategoryDaoImpl.modifyByid(productCategory);      if(flag){//修改成功        System.out.println("修改成功!");      }else{        System.out.println("修改失败!");      }      request.getRequestDispatcher("/servlet/HProductClassServlet?oper=list").forward(request, response);    } catch (Exception e) {      e.printStackTrace();    }  }}

 

        主要分享这些关键代码。日后更新。