易买网的思路集成

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

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

  一、思路梳理

  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();
        }
    }

}

 

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

posted @ 2016-07-28 11:28  葉子。  阅读(2136)  评论(1编辑  收藏  举报