程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 一個小白寫易買網的自訴,小白自訴

一個小白寫易買網的自訴,小白自訴

編輯:JAVA綜合教程

一個小白寫易買網的自訴,小白自訴


 專業的易買網的後台商品管理模塊講解

數據庫表:SQL Server

  相關聯的表有: 1.商品信息表  EASYBUY_PRODUCT 2.商品分類表  EASYBUY_PRODUCT_CATEGORY   項目架構圖:   dao編寫接口,書寫實現功能的方法
public interface ProductDao_hb {
    
    //獲取所有的商品信息
    public List<Product> getAllInfo() throws Exception;
    //獲取當前頁的商品信息
    public List<Product> getOneProductData(int pageIndex,int pageSize) throws Exception;
    //總記錄數
    public int getAllCount() throws Exception;
    //新增商品
    public boolean AddProduct(Product p) throws Exception;
    //修改商品信息
    public boolean UpProduct(Product p) throws Exception;
    //刪除商品
    public boolean DelProduct(int id) throws Exception;
}

impl實現dao接口並且重寫所有dao方法

這裡一般是執行SQL語句

public class ProductDaoImpl_hb extends BaseDao implements ProductDao_hb{
     //查詢ID,照片,商品名稱
    public List<Product> getAllInfo() throws Exception {
         List<Product> list=new ArrayList<Product>();
         String sql="select EP_ID,EP_FILE_NAME,EP_NAME from EASYBUY_PRODUCT";
         ResultSet rs=executeSelect(sql);
        if (rs!=null) {
            while (rs.next()) {
                //實體類
                 Product pros=new Product();
                pros.setId(rs.getInt("EP_ID"));
                pros.setFileName(rs.getString("EP_FILE_NAME"));
                pros.setName(rs.getString("EP_NAME"));
                list.add(pros);
            }
            
        }
        return list;
    }
    /**
     * 分頁顯示數據
     * pageindex:顯示有幾頁
     * pagesize:顯示幾條數據
     * @throws Exception 
     */
    public List<Product> getOneProductData( int pageIndex,  int pageSize) throws Exception {
         List<Product> list=new ArrayList<Product>();
         String sql="select top "+pageSize+" * from EASYBUY_PRODUCT where EP_ID not in (select top "+(pageIndex-1)*pageSize+" EP_ID  from EASYBUY_PRODUCT)";
         ResultSet rs=executeSelect(sql);
        if(rs!=null){
            while(rs.next()){
                 Product pro=new Product();
                pro.setId(rs.getInt("EP_ID"));
                pro.setFileName(rs.getString("EP_FILE_NAME"));
                pro.setName(rs.getString("EP_NAME"));
                
                list.add(pro);
            }
            
        }
        return list;
    }
    //查詢總記錄數
    public int getAllCount() throws Exception {
        int result=0;
         String sql="select count(1) as num from EASYBUY_PRODUCT";
         ResultSet rs=executeSelect(sql);
        if(rs!=null){
            if (rs.next()) {
                result=rs.getInt("num");
            }    
        }
        return result;
    }
    //添加商品信息
    public boolean AddProduct( Product p) throws Exception {
        boolean flag=false;
         String sql="select EPC_PARENT_ID from dbo.EASYBUY_PRODUCT_CATEGORY where EPC_ID="+p.getChildCategoryId()+"";
         ResultSet rs=this.executeSelect(sql);
        if (rs!=null) {
            while (rs.next()) {
                p.setCategoryId(rs.getInt("EPC_PARENT_ID"));
                flag=true;
            }
        }
        //添加列的名稱
        //(EP_ID, EP_NAME, EP_DESCRIPTION, EP_PRICE, EP_STOCK, EPC_ID, EPC_CHILD_ID, EP_FILE_NAME)
         String Addsql="insert into EASYBUY_PRODUCT values(?,?,?,?,?,?,?)";
         Object[] objs={
                p.getName(),
                p.getDescription(),
                p.getPrice(),
                p.getStock(),
                p.getCategoryId(),
                p.getChildCategoryId(),
                p.getFileName(),
        };
         flag =this.executeUpdate(Addsql, objs);
        return flag;
    }
    //修改商品信息
    public boolean UpProduct( Product p) throws Exception {
        boolean flag=false;
        String sql="update EASYBUY_PRODUCT set EP_NAME=?,EP_DESCRIPTION=?,EPC_ID=?,EPC_CHILD_ID=?,EP_PRICE=?,EP_STOCK=?,EP_FILE_NAME=? where EP_ID=?";
        Object[] paras={
                p.getName(),
                p.getDescription(),
                p.getCategoryId(),
                p.getChildCategoryId(),
                p.getPrice(),
                p.getStock(),
                p.getFileName(),
                p.getId()
        };
        flag=executeUpdate(sql, paras);
        return flag;
    }
    //不修改圖片的方法
    //修改商品信息
        public boolean UpPic( Product p) throws Exception {
            boolean flag=false;
            String sql="update EASYBUY_PRODUCT set EP_NAME=?,EP_DESCRIPTION=?,EPC_ID=?,EPC_CHILD_ID=?,EP_PRICE=?,EP_STOCK=? where EP_ID=?";
            Object[] paras={
                    p.getName(),
                    p.getDescription(),
                    p.getCategoryId(),
                    p.getChildCategoryId(),
                    p.getPrice(),
                    p.getStock(),
                    p.getId()
            };
            flag=executeUpdate(sql, paras);
            return flag;
        }
    //刪除商品信息
    public boolean DelProduct( int id) throws Exception {
        
         String sql ="delete from EASYBUY_PRODUCT where EP_ID=?";
        Object[] prams={id};
        return executeUpdate(sql, prams);
    }    
    //通過id查詢出商品信息並保存到list裡面
     public List<Product> updateInfo(int id) throws Exception{
         List<Product> list=new ArrayList<Product>();
         String sql="select * from EASYBUY_PRODUCT where EP_ID=?";
         Object[] paras={id};
         ResultSet rs=executeSelect(sql,paras);
        if(rs!=null){
            while(rs.next()){
                 Product pro=new Product();
                pro.setId(rs.getInt("EP_ID"));
                pro.setFileName(rs.getString("EP_FILE_NAME"));
                pro.setName(rs.getString("EP_NAME"));
                pro.setDescription(rs.getString("EP_DESCRIPTION"));
                pro.setPrice(rs.getFloat("EP_PRICE"));
                pro.setStock(rs.getInt("EP_STOCK"));
                pro.setCategoryId(rs.getInt("EPC_ID"));
                pro.setChildCategoryId(rs.getInt("EPC_CHILD_ID"));
                list.add(pro);
            }
            
        }
        return list;
     }
}

在servlet用來:請求對象的信息,處理請求,訪問其他資源,獲得需要的信息

public class Servlet extends HttpServlet {
    
    public void doGet( HttpServletRequest request,  HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }
    
    ProductDaoImpl_hb pdimpl=new ProductDaoImpl_hb();
    ProoductCategoryDaoImpl_hyj pcdimpl=new ProoductCategoryDaoImpl_hyj();
    
    public void doPost( HttpServletRequest request,  HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        String opr=request.getParameter("opr");
        
        if(opr!=null){
    
            if(opr.equals("addProduct")){
                //----------加載下拉框中的信息
                String name=request.getParameter("name");
                
                try {
                    //1獲取一級分類
                    List<ProductCategory> listOnes=pcdimpl.getAllOneLeveInfo(3);
                    List<ProductCategory> listOne=pcdimpl.getAllOneLeveInfo(0);
                    //2.獲取二級分類
                    List<ProductCategory> listTwo=pcdimpl.getAllTowLeveInfo(0); 
                    for ( ProductCategory item : listOne) {
                        System.out.println(item.getName());
                    }
                    //3.設置到作用域中
                    request.getSession().setAttribute("listOne",listOne);
                    request.getSession().setAttribute("listTwo",listTwo);
                    request.getSession().setAttribute("listOnes",listOnes);
                    //4.跳轉到添加頁面 進行判斷跳轉頁面
                    if (name.equals("in")) { //修改頁面
                            String id=request.getParameter("nid");
                            int nid=0;
                            if (id!=null&&!(id.equals(""))) {
                                nid=Integer.parseInt(id);
                            }
                             try {
                                List<Product> list=pdimpl.updateInfo(nid);
                                request.setAttribute("cid",list.get(0).getChildCategoryId());
                                System.out.println(list.get(0).getChildCategoryId());
                                request.setAttribute("list",list);
                                request.getRequestDispatcher("/manage/product-modify.jsp").forward(request, response);
                            } catch (Exception e) {
                                e.printStackTrace();
                            }    
                    }else{//新增頁面
                        request.getRequestDispatcher("/manage/product-add.jsp").forward(request, response);
                    }
                    } catch ( Exception e) {
                        e.getMessage();
                    }
            }
            if(opr.equals("addNewProduct")){
            //添加商品
            try {
                 Product p=AddProduct(request,response);
                 boolean flag=pdimpl.AddProduct(p);
                if (flag) {
                    request.getRequestDispatcher("/manage/manage-result.jsp").forward(request, response);
                }
            } catch ( Exception e) {
                e.printStackTrace();
            }
            
            }
            //刪除
            if(opr.equals("delete")){
            String pid=request.getParameter("name");
            if(pid!=null){
                int id =Integer.parseInt(pid);
                try {
                    boolean flag=pdimpl.DelProduct(id);
                    if (flag) {
                        request.getRequestDispatcher("/manage/manage-result.jsp").forward(request, response);
                        
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        
            }
            //修改
            if (opr.equals("update")) {
            try {
                 Product p=new  Product();
                 boolean flag=false;
                  p= AddProduct(request,response);
                  p.setId(Integer.parseInt(request.getParameter("id")));
                  if (p.getFileName()==null) {
                      flag=pdimpl.UpPic(p);
                 }else{
                    flag=pdimpl.UpProduct(p);
                 }
                 if (flag) {
                    request.getRequestDispatcher("/manage/manage-result.jsp").forward(request, response);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            }
            if(opr.equals("list")){
             ProductDaoImpl_hb dao=new ProductDaoImpl_hb();
            //分頁
            try {
                //實例化page對象,給page的index和size賦值
                //顯示第一頁
                 Page_hb page=new Page_hb();
                //顯示的數量
                 int pageSize=3;
                page.setPageSize(pageSize);
                int myindex=1;
                //當前頁
                 String pageIndex=request.getParameter("pageIndex");
                if (pageIndex!=null&&(!pageIndex.equals(""))) {
                    myindex=Integer.parseInt(pageIndex);
                
                int mypageCount=0;
                //總頁數
                 int pageCount=dao.getAllCount();
                if (pageCount%pageSize==0) {
                    mypageCount=pageCount/pageSize;
                }else {
                    mypageCount=pageCount/pageSize+1;
                }
                page.setPageCount(mypageCount);
                }
                if (myindex<1) {
                    myindex=1;
                }else if(myindex>page.getPageCount()){
                    myindex=page.getPageCount();
                }
                //當前頁賦值
                page.setPageIndex(myindex);
                 List<Product> list=dao.getOneProductData(page.getPageIndex(), page.getPageSize());
                page.setList(list);
                request.setAttribute("listone", page);
                request.getRequestDispatcher("/manage/product.jsp").forward(request, response);
            } catch ( Exception e) {
                e.printStackTrace();
            }
        
            }
        }    
    }
    //添加商品方法
    public Product AddProduct( HttpServletRequest request,  HttpServletResponse response)
            throws Exception {
         Product p = new Product();
         request.setCharacterEncoding("utf-8");
        //文件上傳
        //上傳文件名
        String uploadFileName="";
        //表單字段元素
        String fieldName="";
        //請求信息中的額內容是否是multipart類型
         boolean isMultipart=ServletFileUpload.isMultipartContent(request);
        //上傳文件存儲路徑(服務器文件系統上的絕對路徑)
         String uploadFilePath=request.getSession().getServletContext().getRealPath("/images/product/");
        if (isMultipart) {
            request.setCharacterEncoding("utf-8");
             FileItemFactory factory=new DiskFileItemFactory();
            //解析器
             ServletFileUpload upload=new ServletFileUpload(factory);
            try {
                //解析from表單中所有文件
                 List<FileItem> items = upload.parseRequest(request);
                 Iterator<FileItem> iter =items.iterator();
                while (iter.hasNext()) {
                    //依次處理每個文件
                     FileItem item=(FileItem) iter.next();
                    //普通表單字段
                    if (item.isFormField()) {
                        fieldName= item.getFieldName();        //表單字段的name屬性
                         if(fieldName.equals("productName")){
                             //輸出表單阻斷的值
                             //System.out.println(item.getString("utf-8"));    
                             p.setName(item.getString("utf-8"));
                         }else if(fieldName.equals("productDetail")){
                             //System.out.println(item.getString("utf-8"));
                             p.setDescription(item.getString("utf-8"));
                         }else if(fieldName.equals("parentId")){
                             //System.out.println(item.getString("utf-8"));
                             p.setChildCategoryId(Integer.parseInt(item.getString("utf-8")));
                         }else if(fieldName.equals("productPrice")){
                             //System.out.println(item.getString("utf-8")); 
                             p.setPrice(Float.valueOf(item.getString("utf-8")));
                         }else if(fieldName.equals("productNumber")){
                             p.setStock(Integer.parseInt(item.getString("utf-8")));
                         }
                        }else{        //文件表單字段
                             String fileName=item.getName();      //文件名字
                            if(fileName!=null && !fileName.equals("")){
                                File fullFile=new File(item.getName()); 
                                File saveFile = new File(uploadFilePath,fullFile.getName());
                                item.write(saveFile);
                                uploadFileName=fullFile.getName();        //上傳文件名
                                p.setFileName(uploadFileName);
                        }
                        
                    }
                        
                }
                
            } catch ( Exception e) {
                e.printStackTrace();
            }
        }
        return p;
    }

}

這裡我講解一下分頁吧

            //分頁
            try {
                //實例化page對象,給page的index和size賦值
                //顯示第一頁
                 Page_hb page=new Page_hb();
                //顯示的數量
                 int pageSize=3;
                page.setPageSize(pageSize);
                int myindex=1;
                //當前頁
                 String pageIndex=request.getParameter("pageIndex");
                if (pageIndex!=null&&(!pageIndex.equals(""))) {
                    myindex=Integer.parseInt(pageIndex);
                
                int mypageCount=0;
                //總頁數
                 int pageCount=dao.getAllCount();
                if (pageCount%pageSize==0) {
                    mypageCount=pageCount/pageSize;
                }else {
                    mypageCount=pageCount/pageSize+1;
                }
                page.setPageCount(mypageCount);
                }
                if (myindex<1) {
                    myindex=1;
                }else if(myindex>page.getPageCount()){
                    myindex=page.getPageCount();
                }
                //當前頁賦值
                page.setPageIndex(myindex);
                 List<Product> list=dao.getOneProductData(page.getPageIndex(), page.getPageSize());
                page.setList(list);
                request.setAttribute("listone", page);
                request.getRequestDispatcher("/manage/product.jsp").forward(request, response);
            } catch ( Exception e) {
                e.printStackTrace();
            }    

這是分頁的代碼,眾所周知當你在網上happy(搜索信息)的時候,當前的頁面沒有你需要信息你會點擊下一頁來繼續尋找信息,我所書寫的功能和這個類似吧

工具類:

/**
 *提供分頁使用的工具類
 * @author HYJ
 *
 */
public class Page_hb {
    private int pageIndex=1;//當前顯示第幾頁數據
    private int pageSize=3;//每頁顯示幾條數據
    private int pageSum;//總記錄數
    private int pageCount;//總頁數
    private List<Product> list;//保存商品分頁信息的集合
    public Page_hb() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Page_hb(int pageIndex, int pageSize, int pageSum, int pageCount,
            List<Product> list) {
        super();
        this.pageIndex = pageIndex;
        this.pageSize = pageSize;
        this.pageSum = pageSum;
        this.pageCount = pageCount;
        this.list = list;
    }
    public int getPageIndex() {
        return pageIndex;
    }
    public void setPageIndex(int pageIndex) {
        //pageindex是外界調用這個方法傳過來的值,當pageIndex的值大於總頁數的,就讓他顯示最後一頁
        if(pageIndex>pageCount){
            pageIndex=pageCount;//把pageIndex的值改為總頁數顯示最後一頁
        }
        else if(pageIndex<0){//如果傳過來的值小於0,就讓pageIndex的值為1,顯示第一頁的數據
            pageIndex=1;
        }
        else{
            this.pageIndex = pageIndex;
            
        }
    }
    public int getPageSize() {
        return pageSize;
    }
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
    public int getPageSum() {
        return pageSum;
    }
    public void setPageSum(int pageSum) {
        this.pageSum = pageSum;
    }
    public int getPageCount() {
        return pageCount;
    }
    public void setPageCount(int pageCount) {
        this.pageCount = pageCount;
    }
    public List<Product> getList() {
        return list;
    }
    public void setList(List<Product> list) {
        this.list = list;
    }
    
}

根據工具類:設置設置顯示的數量

//實例化page對象,給page的index和size賦值
//顯示第一頁
 Page_hb page=new Page_hb();
//顯示的數量
int pageSize=3;
page.setPageSize(pageSize);

設置當前頁,和根據從數據庫中查詢的count值除每頁顯示的數量=總頁數

並且判斷當前頁的值和1去比較如果小於1那麼就顯示第一頁的數據

沒有理由別問我

                int myindex=1;
                //當前頁
                 String pageIndex=request.getParameter("pageIndex");
                if (pageIndex!=null&&(!pageIndex.equals(""))) {
                    myindex=Integer.parseInt(pageIndex);
                
                int mypageCount=0;
                //總頁數
                 int pageCount=dao.getAllCount();
                if (pageCount%pageSize==0) {
                    mypageCount=pageCount/pageSize;
                }else {
                    mypageCount=pageCount/pageSize+1;
                }
                page.setPageCount(mypageCount);
                }
                if (myindex<1) {
                    myindex=1;
                }else if(myindex>page.getPageCount()){
                    myindex=page.getPageCount();
                }

把當前頁的值賦給頁面

                //當前頁賦值
                page.setPageIndex(myindex);
                 List<Product> list=dao.getOneProductData(page.getPageIndex(), page.getPageSize());
                page.setList(list);
                request.setAttribute("listone", page);
                request.getRequestDispatcher("/manage/product.jsp").forward(request, response);

 

寫這個項目的大概流程就是這些了

可能寫的不是太好,請大家多多理解

謝謝欣賞

public interface ProductDao_hb {
    
    //獲取所有的商品信息
    public List<Product> getAllInfo() throws Exception;
    //獲取當前頁的商品信息
    public List<Product> getOneProductData(int pageIndex,int pageSize) throws Exception;
    //總記錄數
    public int getAllCount() throws Exception;
    //新增商品
    public boolean AddProduct(Product p) throws Exception;
    //修改商品信息
    public boolean UpProduct(Product p) throws Exception;
    //刪除商品
    public boolean DelProduct(int id) throws Exception;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved