smbms項目(四)

  • 供應(yīng)商管理頁面--->頁面跳轉(zhuǎn)
  • ProviderServlet
req.getRequestDispatcher("/jsp/providerlist.jsp").forward(req,resp);
  • web.xml
    <!--ProviderServlet-->
    <servlet>
        <servlet-name>ProviderServlet</servlet-name>
        <servlet-class>com.vigil.servlet.provider.ProviderServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ProviderServlet</servlet-name>
        <url-pattern>/provider/providerlist.html</url-pattern>
    </servlet-mapping>

(一)萝毛、供應(yīng)商管理頁面

1、根據(jù)供應(yīng)商編碼或者供應(yīng)商名稱查詢供應(yīng)商總數(shù)

  • 1.1 ProviderDao
//根據(jù)供應(yīng)商編碼或者供應(yīng)商名稱查詢供應(yīng)商總數(shù)
    public int getProCount(Connection connection, String proCode, String proName) throws SQLException;
  • 1.2 ProviderDaoImpl
public int getProCount(Connection connection, String proCode, String proName) throws SQLException {
        PreparedStatement pstm = null;
        ResultSet rs = null;
        int count = 0;
        //通過StringBuffer追加sql語句
        if(connection != null) {
            StringBuffer sql = new StringBuffer();
            ArrayList<String> list = new ArrayList();
            sql.append("select count(1) as count from smbms_provider");

            if(proCode != null) {//追加 供應(yīng)商編碼的查詢判斷
                sql.append(" where proCode like ?");
                list.add("%" + proCode + "%");
                // 追加 供應(yīng)商名稱的查詢判斷,在供應(yīng)商編碼不為空的情況下
                if(proName != null) {
                    sql.append(" and proName like ?");
                    list.add("%" + proName + "%");
                }
            }

            if(proCode == null && proName != null) {//追加 供應(yīng)商編碼為空但名稱不為空的情況
                sql.append(" where proName like ?");
                list.add("%" + proName + "%");
            }

            Object[] params = list.toArray();

            System.out.println("ProviderDaoImpl.getProCount().SQL:" + sql);
            System.out.println("List:" + list.toString());

            rs = BaseDao.execute(connection,pstm,rs,sql.toString(),params);

            if(rs.next()) {//從結(jié)果集中獲取最終的數(shù)量
                count = rs.getInt("count");
            }
        }
        BaseDao.closeResource(null,pstm,rs);
        return count;
    }
  • 1.3 ProviderService
//根據(jù)供應(yīng)商編碼或者供應(yīng)商名稱查詢供應(yīng)商總數(shù)
    public int getProCount(String proCode, String proName);
  • 1.4 ProviderServiceImpl
//業(yè)務(wù)層都會調(diào)用dao層,所以要引入dao層
    ProviderDao providerDao = null;
    public ProviderServiceImpl() {
        providerDao = new ProviderDaoImpl();
    }

    //根據(jù)供應(yīng)商編碼或者供應(yīng)商名稱查詢供應(yīng)商總數(shù)
    public int getProCount(String proCode, String proName) {

        Connection connection = BaseDao.getConnection();
        int count = 0;
        try {
            count = providerDao.getProCount(connection,proCode,proName);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            BaseDao.closeResource(connection,null,null);
        }
        return count;
    }

    @Test
    public void test() {
        System.out.println(new ProviderServiceImpl().getProCount("1","2"));
    }

2糯而、通過條件查詢獲得供應(yīng)商列表

  • 2.1 ProviderDao
//通過條件查詢獲得供應(yīng)商列表
    public List<Provider> getProList(Connection connection, String proCode, String proName, int currentPageNo, int pageSize) throws SQLException;
  • 2.2 ProviderDaoImpl
public List<Provider> getProList(Connection connection, String proCode, String proName, int currentPageNo, int pageSize) throws SQLException {
        PreparedStatement pstm = null;
        ResultSet rs = null;
        List<Provider> proList = new ArrayList<Provider>();
        if(connection != null) {
            StringBuffer sql = new StringBuffer();
            sql.append("select * from smbms_provider");
            List list = new ArrayList();

            if(proCode != null && proCode.length() > 0) { //追加 供應(yīng)商編碼的查詢判斷
                sql.append(" where proCode like ?");
                list.add("%" + proCode + "%");
                // 追加 供應(yīng)商名稱的查詢判斷峭状,在供應(yīng)商編碼不為空的情況下
                if(proName != null && proName.length() > 0) {
                    sql.append(" and proName like ?");
                    list.add("%" + proName + "%");
                }
            } else if(proName != null && proName.length() > 0) {//追加 供應(yīng)商編碼為空但名稱不為空的情況
                sql.append(" where proName like ?");
                list.add("%" + proName + "%");
            }

            //在數(shù)據(jù)庫中克滴,分頁使用    limit(傳的兩個數(shù)值分別是開始位和總數(shù))   startIndex,pageSize 优床;總數(shù)
            //startIndex  = (當(dāng)前頁-1)*頁面大小--->對應(yīng)前端頁面的第幾頁
            //0劝赔,5            1 - 1 = 0 * 01234
            //5,5            2 - 1 = 1 * 5胆敞,56789
            //10望忆,5           3 - 1 = 2 * 10 10,11竿秆,12,13稿壁,14
            sql.append(" order by creationDate limit ?,?");
            currentPageNo = (currentPageNo - 1) * pageSize;
            list.add(currentPageNo);
            list.add(pageSize);

            Object[] params = list.toArray();
            System.out.println("ProviderDaoImpl.getProCount().SQL:" + sql);
            System.out.println("List:" + list.toString());

            rs = BaseDao.execute(connection, pstm, rs, sql.toString(), params);
            while(rs.next()) {
                Provider tPro = new Provider();
                tPro.setId(rs.getInt("id"));
                tPro.setProCode(rs.getString("proCode"));
                tPro.setProName(rs.getString("proName"));
                tPro.setProDesc(rs.getString("proDesc"));
                tPro.setProContact(rs.getString("proContact"));
                tPro.setProPhone(rs.getString("proPhone"));
                tPro.setProAddress(rs.getString("proAddress"));
                tPro.setProFax(rs.getString("proFax"));
                tPro.setCreatedBy(rs.getInt("createdBy"));
                tPro.setCreationDate(rs.getDate("creationDate"));
                tPro.setModifyBy(rs.getInt("modifyBy"));
                tPro.setModifyDate(rs.getDate("modifyDate"));
                proList.add(tPro);
            }
            BaseDao.closeResource(null, pstm, rs);
        }
        return proList;
    }
  • 2.3 ProviderService
//通過條件查詢獲得供應(yīng)商列表
    public List<Provider> getProList(String queryProCode, String queryProName,int currentPageNo, int pagaSize);
  • 2.4 ProviderServiceImpl
//通過條件查詢獲得供應(yīng)商列表
    public List<Provider> getProList(String queryProCode, String queryProName,int currentPageNo, int pagaSize) {
        Connection connection = null;
        List<Provider> providers = null;
        System.out.println("queryProCode-->" + queryProCode);
        System.out.println("queryProName-->" + queryProName);
        System.out.println("currentPageNo-->" + currentPageNo);
        System.out.println("pagaSize-->" + pagaSize);

        try {
            connection = BaseDao.getConnection();
            providers = providerDao.getProList(connection,queryProCode,queryProName,currentPageNo,pagaSize);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            BaseDao.closeResource(connection,null,null);
        }
        return providers;
    }

    @Test
    public void test() {
        ProviderServiceImpl providerService = new ProviderServiceImpl();
        List<Provider> proList = providerService.getProList("", "", 1, 5);
        for(Provider provider : proList) {
            System.out.println(provider);
        }
    }
  • 2.5 ProviderServlet
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String method = req.getParameter("method");
        System.out.println("要執(zhí)行的操作是:" + method);
        if("query".equals(method)) {
            getProList(req, resp);
        } else {
            getProList(req, resp);
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }

    public void getProList(HttpServletRequest req, HttpServletResponse resp) {
        //查詢獲得用戶列表
        ProviderService providerService = new ProviderServiceImpl();
        List<Provider> providerList = null;

        //第一次請求幽钢,是可以固定頁面大寫和頁數(shù)的,還有下拉欄默認(rèn)值,建議把這些數(shù)值寫到配置文件傅是,方便后期修改
        int pageSize = 5;
        int currentPageNo = 1;

        //從前端獲取數(shù)據(jù)
        String queryProCode = req.getParameter("queryProCode");
        String queryProName = req.getParameter("queryProName");
        String pageIndex = req.getParameter("pageIndex");
        if(pageIndex != null) {
            currentPageNo = Integer.parseInt(pageIndex);
        }
        System.out.println("queryProName:" + queryProName + " 匪燕,queryProCode: " + queryProCode + " ,pageIndex: " + pageIndex);

        //獲得用戶的總數(shù)(分頁:上一頁喧笔、下一頁的情況)
        int totalCount = providerService.getProCount(queryProCode, queryProName);
        //總頁數(shù)支持
        PageSupport pageSupport = new PageSupport();
        pageSupport.setCurrentPageNo(currentPageNo);//當(dāng)前頁面
        pageSupport.setPageSize(pageSize);//頁面大小
        pageSupport.setTotalCount(totalCount);//用戶總數(shù)

        int totalPageCount = pageSupport.getTotalPageCount();//總頁數(shù)
        //控制首頁和尾頁
        //如果頁面要小于1帽驯,就顯示第一頁的東西
        if(currentPageNo < 1) {
            currentPageNo = 1;
        } else if (currentPageNo > totalPageCount) {//當(dāng)前頁大于最后一頁
            currentPageNo = totalPageCount;
        }

        //獲取供應(yīng)商列表展示
        providerList = providerService.getProList(queryProCode, queryProName, currentPageNo, pageSize);
        req.setAttribute("providerList",providerList);
        req.setAttribute("totalCount",totalCount);
        req.setAttribute("currentPageNo",currentPageNo);
        req.setAttribute("totalPageCount",totalPageCount);
        req.setAttribute("queryProCode",queryProCode);
        req.setAttribute("queryProName",queryProName);

        //返回前端
        try {
            req.getRequestDispatcher("/jsp/providerlist.jsp").forward(req,resp);
        } catch (ServletException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

(二)、供應(yīng)商查看頁面

根據(jù)供應(yīng)商id查詢供應(yīng)商信息书闸,供應(yīng)商管理頁面 下的 查看請求

  • ProviderDao
    //根據(jù)供應(yīng)商id查詢供應(yīng)商信息
    public Provider getProByProId(Connection connection, int proId) throws SQLException;
  • ProviderDaoImpl
//根據(jù)供應(yīng)商id查詢供應(yīng)商信息
    public Provider getProByProId(Connection connection, int proId) throws SQLException {
        PreparedStatement pstm = null;
        ResultSet rs = null;
        Provider pro = new Provider();
        if(connection != null) {
            StringBuffer sql = new StringBuffer();
            sql.append("select * from smbms_provider where id = ?");
            Object[] params = {proId};

            rs = BaseDao.execute(connection, pstm, rs, sql.toString(), params);
            System.out.println("ProviderDaoImpl.getProByProId().SQL:" + sql);
            System.out.println(sql + "---- ?=" + proId);
            if(rs.next()) {
                pro.setId(rs.getInt("id"));
                pro.setProCode(rs.getString("proCode"));
                pro.setProName(rs.getString("proName"));
                pro.setProDesc(rs.getString("proDesc"));
                pro.setProContact(rs.getString("proContact"));
                pro.setProPhone(rs.getString("proPhone"));
                pro.setProAddress(rs.getString("proAddress"));
                pro.setProFax(rs.getString("proFax"));
                pro.setCreatedBy(rs.getInt("createdBy"));
                pro.setCreationDate(rs.getDate("creationDate"));
                pro.setModifyBy(rs.getInt("modifyBy"));
                pro.setModifyDate(rs.getDate("modifyDate"));
            }
            BaseDao.closeResource(null, pstm, rs);
        }
        return pro;
    }
  • ProviderService
    //根據(jù)供應(yīng)商id查詢供應(yīng)商信息
    public Provider getProByProId(int proId);
  • ProviderServiceImpl
//根據(jù)供應(yīng)商id查詢供應(yīng)商信息
    public Provider getProByProId(int proId) {
        Connection connection = null;
        Provider pro = null;
        try {
            connection = BaseDao.getConnection();
            pro = providerDao.getProByProId(connection,proId);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return pro;
    }

    @Test
    public void test() {
        ProviderServiceImpl providerService = new ProviderServiceImpl();
        Provider pro = providerService.getProByProId(1);
        System.out.println(pro);
    }
  • ProviderServlet
//根據(jù)供應(yīng)商id查詢供應(yīng)商信息
    public Provider getProByProId(HttpServletRequest req, HttpServletResponse resp) {
        //獲得前端數(shù)據(jù)
        String id = req.getParameter("proid");
        System.out.println(id);
        if(id != null) {
            int proId = Integer.parseInt(id);
            //調(diào)用業(yè)務(wù)層處理
            ProviderService providerService = new ProviderServiceImpl();
            Provider pro = providerService.getProByProId(proId);
            System.out.println(pro.getId());
            return pro;
        }
        return null;
    }

    //給前端設(shè)置數(shù)據(jù)并跳轉(zhuǎn)頁面-->providerview.jsp
    public void view(HttpServletRequest req, HttpServletResponse resp) {
        Provider pro = getProByProId(req, resp);
        req.setAttribute("provider",pro);
        try {
            req.getRequestDispatcher("/jsp/providerview.jsp").forward(req,resp);
        } catch (ServletException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

  • web.xml
    <servlet-mapping>
        <servlet-name>ProviderServlet</servlet-name>
        <url-pattern>/provider/provider.do</url-pattern>
    </servlet-mapping>

(三)尼变、供應(yīng)商修改頁面

1. 頁面跳轉(zhuǎn)

根據(jù)供應(yīng)商id 獲取供應(yīng)商信息,并返回前端浆劲,這和查看供應(yīng)商信息的功能一樣嫌术,只是跳轉(zhuǎn)的頁面不一樣,只要修改Servlet就行

  • ProviderServlet
    public Provider getProByProId(HttpServletRequest req, HttpServletResponse resp) {
        //獲得前端數(shù)據(jù)
        String id = req.getParameter("proid");
        System.out.println(id);
        if(id != null) {
            int proId = Integer.parseInt(id);
            //調(diào)用業(yè)務(wù)層處理
            ProviderService providerService = new ProviderServiceImpl();
            Provider pro = providerService.getProByProId(proId);
            System.out.println(pro.getId());
            return pro;
        }
        return null;
    }
    //給前端設(shè)置數(shù)據(jù)并跳轉(zhuǎn)頁面-->providermodify.jsp
    public void modify(HttpServletRequest req, HttpServletResponse resp) {
        Provider pro = getProByProId(req, resp);
        //給前端設(shè)置數(shù)據(jù)并跳轉(zhuǎn)頁面
        req.setAttribute("provider",pro);
        try {
            req.getRequestDispatcher("/jsp/providermodify.jsp").forward(req,resp);
        } catch (ServletException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

2. 修改供應(yīng)商信息

  • 2.1 ProviderDao
    //通過Provider中保存要修改的供應(yīng)商信息牌借,在數(shù)據(jù)庫中修改對應(yīng)供應(yīng)商信息
    public int updatePro(Connection connection, Provider pro) throws SQLException;
  • 2.2 ProviderDaoImpl
//追加set 或者逗號
    public boolean appendSet(StringBuffer sql, boolean flag) {
        if(flag) {
            sql.append(" set");
        } else {
            sql.append(",");
        }
        return false;
    }

    //通過Provider中保存要修改的供應(yīng)商信息度气,在數(shù)據(jù)庫中修改對應(yīng)供應(yīng)商信息
    public int updatePro(Connection connection, Provider pro) throws SQLException {
        PreparedStatement pstm = null;
        int count = 0;
        if(connection != null) {
            StringBuffer sql = new StringBuffer();
            List list = new ArrayList();
            sql.append("update smbms_provider");

            //set proCode = ?, proName = ?, proAddress = ?, proContact = ?, proDesc = ?,
            // proFax = ?, proPhone = ?, modifyDate = ?, modifyBy = ? where id = ?
            boolean flag = true;//true : 第一次追加set語句
            if(pro.getProCode() != null) {
                flag = appendSet(sql,flag);
                sql.append(" proCode = ?");
                list.add(pro.getProCode());
            }
            if(pro.getProName() != null) {
                flag = appendSet(sql,flag);
                sql.append(" proName = ?");
                list.add(pro.getProName());
            }
            if(pro.getProAddress() != null) {
                flag = appendSet(sql,flag);
                sql.append(" proAddress = ?");
                list.add(pro.getProAddress());
            }
            if(pro.getProContact() != null) {
                flag = appendSet(sql,flag);
                sql.append(" proContact = ?");
                list.add(pro.getProContact());
            }
            if(pro.getProDesc() != null) {
                flag = appendSet(sql,flag);
                sql.append(" proDesc = ?");
                list.add(pro.getProDesc());
            }
            if(pro.getProFax() != null) {
                flag = appendSet(sql,flag);
                sql.append(" proFax = ?");
                list.add(pro.getProFax());
            }
            if(pro.getProPhone() != null) {
                flag = appendSet(sql,flag);
                sql.append(" proPhone = ?");
                list.add(pro.getProPhone());
            }
            if(pro.getModifyDate() != null) {
                flag = appendSet(sql,flag);
                sql.append(" modifyDate = ?");
                list.add(pro.getModifyDate());
            }
            if(pro.getModifyBy() != null) {
                flag = appendSet(sql,flag);
                sql.append(" modifyBy = ?");
                list.add(pro.getModifyBy());
            }
            if(pro.getId() != null) {//id不能為空,否則不進(jìn)行更改E虮ā磷籍!
                sql.append(" where id = ?");
                list.add(pro.getId());

                Object[] params = list.toArray();
                //執(zhí)行更改語句
                count = BaseDao.execute(connection, pstm, sql.toString(), params);
            }
            System.out.println("ProviderDaoImpl.updatePro.sql: " + sql);
            System.out.println(list.toString());

        }
        //關(guān)閉資源
        BaseDao.closeResource(null,pstm,null);
        return count;
    }
  • 2.3 ProviderService
    //通過Provider中保存要修改的供應(yīng)商信息,在數(shù)據(jù)庫中修改對應(yīng)供應(yīng)商信息
    public boolean updatePro(Provider pro);
  • 2.4 ProviderServiceImpl
//通過Provider中保存要修改的供應(yīng)商信息现柠,在數(shù)據(jù)庫中修改對應(yīng)供應(yīng)商信息
    public boolean updatePro(Provider pro) {
        //取當(dāng)前(北京)時間
        Date nowdate = new Date();
        //轉(zhuǎn)換時間格式
        SimpleDateFormat simpleDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //設(shè)置更改時間院领,但是存入數(shù)據(jù)庫會少了8小時?
        pro.setModifyDate(Timestamp.valueOf(simpleDate.format(nowdate)));

        Connection connection = null;
        boolean flag = false;
        try {
            connection = BaseDao.getConnection();
            flag = (providerDao.updatePro(connection, pro)) > 0 ? true : false;
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {//關(guān)閉資源
            BaseDao.closeResource(connection,null,null);
        }
        return flag;
    }

    @Test
    public void test() {
        ProviderServiceImpl providerService = new ProviderServiceImpl();
        Provider pro = new Provider();
        pro.setId(19);
        pro.setProName("魚佬大老板");
        pro.setModifyBy(1);
        boolean b = providerService.updatePro(pro);
        System.out.println(b);
    }
  • 2.5 ProviderServlet
//供應(yīng)商修改頁 提交修改保存請求晒旅,將數(shù)據(jù)保存到Provider實例對象中栅盲,頁面轉(zhuǎn)發(fā)到 供應(yīng)商管理頁面
    public void modifyexe(HttpServletRequest req, HttpServletResponse resp) {
        Provider pro = new Provider();
        //獲得當(dāng)前Session的id,是執(zhí)行修改操作的用戶
        Object o = req.getSession().getAttribute(Constants.USER_SESSION);
        if(o != null) {
            pro.setModifyBy(((User)o).getId());
            System.out.println("操作修改的用戶id:" + pro.getModifyBy());
        }
        //從前端獲取數(shù)據(jù)
        String proCode = req.getParameter("proCode");
        String proName = req.getParameter("proName");
        String proContact = req.getParameter("proContact");
        String proPhone = req.getParameter("proPhone");
        String proAddress = req.getParameter("proAddress");
        String proFax = req.getParameter("proFax");
        String proDesc = req.getParameter("proDesc");
        String id = req.getParameter("id");

        //供應(yīng)商id
        pro.setId(Integer.parseInt(id));
        System.out.println("供應(yīng)商id:" + id);
        //供應(yīng)商編碼
        pro.setProCode(proCode);
        System.out.println("供應(yīng)商編碼:" + proCode);
        //供應(yīng)商名稱
        pro.setProName(proName);
        System.out.println("供應(yīng)商名稱:" + proName);
        //聯(lián)系人
        pro.setProContact(proContact);
        System.out.println("聯(lián)系人:" + proContact);
        //聯(lián)系電話
        pro.setProPhone(proPhone);
        System.out.println("聯(lián)系電話:" + proPhone);
        //聯(lián)系地址
        pro.setProAddress(proAddress);
        System.out.println("聯(lián)系地址:" + proAddress);
        //傳真
        pro.setProFax(proFax);
        System.out.println("傳真:" + proFax);
        //描述
        pro.setProDesc(proDesc);
        System.out.println("描述:" + proDesc);

        //調(diào)業(yè)務(wù)層執(zhí)行方法
        ProviderService providerService = new ProviderServiceImpl();
        providerService.updatePro(pro);
//        //頁面轉(zhuǎn)發(fā)到 供應(yīng)商管理頁面
//        getProList(req, resp);
        //返回前端
        try {
            req.getRequestDispatcher("/jsp/providermodify.jsp").forward(req,resp);
        } catch (ServletException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
  • 2.6 web.xml
    <servlet-mapping>
        <servlet-name>ProviderServlet</servlet-name>
        <url-pattern>/provider/providermodifysave.html</url-pattern>
    </servlet-mapping>

(四)废恋、供應(yīng)商添加頁面

1. 添加頁面跳轉(zhuǎn)

  • 1.1 ProviderServlet
    //跳轉(zhuǎn)頁面-->provideradd.jsp
    public void add_jsp(HttpServletRequest req, HttpServletResponse resp) {
        try {
            req.getRequestDispatcher("/jsp/provideradd.jsp").forward(req,resp);
        } catch (ServletException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
  • 1.2 web.xml
    <servlet-mapping>
        <servlet-name>ProviderServlet</servlet-name>
        <url-pattern>/provider/provideradd.html</url-pattern>
    </servlet-mapping>

2. 查詢供貨商編碼

查詢?nèi)康墓┴浬叹幋a(dao)
確定供貨商編碼是否未被使用谈秫、給前端設(shè)置數(shù)據(jù)(Servlet)

  • 2.1 ProviderDao
    //查詢?nèi)康墓┴浬叹幋a
    public List<String> getAllProCode(Connection connection) throws SQLException;
  • 2.2 ProviderDaoImpl
    //查詢?nèi)康墓┴浬叹幋a
    public List<String> getAllProCode(Connection connection) throws SQLException {
        PreparedStatement pstm = null;
        ResultSet rs = null;
        List<String> list = new ArrayList<String>();
        if(connection != null) {
            String sql = "select proCode from smbms_provider";
            rs = BaseDao.execute(connection, pstm, rs, sql, new Object[]{});
            while(rs.next()) {
                list.add(rs.getString("proCode"));
            }
            //關(guān)閉資源
            BaseDao.closeResource(null,pstm,rs);
            System.out.println("ProviderDaoImpl.getAllProCode.sql:" + sql);
        }
        return list;
    }
  • 2.3 ProviderService
    //查詢?nèi)康墓┴浬叹幋a
    public List<String> getAllProCode();
  • 2.4 ProviderServiceImpl
//查詢?nèi)康墓┴浬叹幋a
    public List<String> getAllProCode() {
        Connection connection = null;
        List<String> list = null;
        try {
            connection = BaseDao.getConnection();
            list = providerDao.getAllProCode(connection);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {//關(guān)閉資源
            BaseDao.closeResource(connection,null,null);
        }
        return list;
    }

    @Test
    public void test() {
        ProviderServiceImpl providerService = new ProviderServiceImpl();
        System.out.println(providerService.getAllProCode());
    }
  • 2.5 ProviderServlet
//供應(yīng)商 添加頁 異步請求:確定新增供貨商的 編碼是否可用(未被使用)
    public void ucexist(HttpServletRequest req, HttpServletResponse resp) {
        String proCode = req.getParameter("proCode");
        ProviderService proService = new ProviderServiceImpl();
        List<String> list = proService.getAllProCode();
        boolean flag = true;//默認(rèn)新供貨商編碼可用
        if(proCode != null) {
            System.out.println("proCode = " + proCode);
            for (int i = 0; i < list.size() && !flag; i++) {
                flag = !proCode.equals(list.get(i));//若相同會返回true扒寄,那么取反,說明不可用
            }
        }
        System.out.println("是否存在同名:" + !flag + "拟烫。是否為可用編碼:" + flag);

        //給頁面返回json對象的數(shù)據(jù)
        Map<String,String> map = new HashMap<String, String>();
        if(flag) {
            map.put("userCode","noexist");
        } else {
            map.put("userCode","exist");
        }

        try {
            resp.setContentType("application/json");
            PrintWriter writer = resp.getWriter();
            /*
            JSONArray,工具類该编,轉(zhuǎn)換格式,將map轉(zhuǎn)換為json
             */
            writer.write(JSONArray.toJSONString(map));
            writer.flush();
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
  • 2.6 web.xml
    <servlet-mapping>
        <servlet-name>ProviderServlet</servlet-name>
        <url-pattern>/provider/ucexist.html</url-pattern>
    </servlet-mapping>

3. 添加用戶

  • 3.1 ProviderDao
//獲得所有用戶中最大的id
    public Integer getAllProMaxId(Connection connection) throws SQLException;

    //添加供應(yīng)商
    public int addPro(Connection connection, Provider pro) throws SQLException;
  • 3.2 ProviderDaoImpl
//獲得所有用戶中最大的id
    public Integer getAllProMaxId(Connection connection) throws SQLException {
        int maxId = 0;
        PreparedStatement pstm = null;
        ResultSet rs = null;
        if(connection != null) {
            String sql = "select max(id) as max from smbms_provider";
            rs = BaseDao.execute(connection,pstm,rs,sql,new Object[]{});
            if(rs.next()) {
                maxId = rs.getInt("max");
            }
            //關(guān)閉資源
            BaseDao.closeResource(null,pstm,rs);
            System.out.println("ProviderDaoImpl.getPorId.sql:" + sql);
            System.out.println(maxId);
        }

        return maxId;
    }

    //添加供應(yīng)商
    public int addPro(Connection connection, Provider pro) throws SQLException {
        PreparedStatement pstm = null;
        int count = 0;
        if(connection != null) {
            String sql = "insert into smbms_provider(id, proCode, proName, proDesc, proContact, proPhone, proAddress, proFax, createdBy, creationDate, modifyDate, modifyBy) value (?,?,?,?,?,?,?,?,?,?,?,?)";
            List list = new ArrayList();
            //供應(yīng)商id
            list.add(pro.getId());
            //供應(yīng)商proCode
            list.add(pro.getProCode());
            //供應(yīng)商proName
            list.add(pro.getProName());
            //供應(yīng)商proDesc
            list.add(pro.getProDesc());
            //供應(yīng)商proContact
            list.add(pro.getProContact());
            //供應(yīng)商proPhone
            list.add(pro.getProPhone());
            //供應(yīng)商proAddress
            list.add(pro.getProAddress());
            //供應(yīng)商proFax
            list.add(pro.getProFax());
            //供應(yīng)商createdBy
            list.add(pro.getCreatedBy());
            //供應(yīng)商creationDate
            list.add(pro.getCreationDate());
            //供應(yīng)商modifyDate
            list.add(pro.getModifyDate());
            //供應(yīng)商modifyBd
            list.add(pro.getModifyBy());
            //如果是null硕淑,且數(shù)據(jù)庫設(shè)置了default值课竣,那么是注入null呢?還是default值
            Object[] params = list.toArray();

            count = BaseDao.execute(connection, pstm, sql, params);
            System.out.println("ProviderDaoImpl.addPro.SQL:" + sql);
            System.out.println(list);
            //關(guān)閉資源
            BaseDao.closeResource(null,pstm,null);
        }
        return count;
    }
  • 3.3 ProviderService
    //獲得所有用戶中最大的id
    public Integer getAllProMaxId();

    //添加供應(yīng)商
    public boolean addPro(Provider pro);
  • 3.4 ProviderServiceImpl
//獲得所有用戶中最大的id
    public Integer getAllProMaxId() {
        Connection connection = null;
        Integer maxId = 0;
        try {
            connection = BaseDao.getConnection();
            maxId = providerDao.getAllProMaxId(connection);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {//關(guān)閉資源
            BaseDao.closeResource(connection,null,null);
        }
        return maxId;
    }

    //添加供應(yīng)商
    public boolean addPro(Provider pro) {
        int flag = 0;
        Connection connection = null;
        if(pro != null) {
            //設(shè)值供貨商id置媳,比最大的大1
            pro.setId(getAllProMaxId() + 1);
            //取當(dāng)前(北京)時間
            Date nowdate = new Date();
            //轉(zhuǎn)換時間格式
            SimpleDateFormat simpleDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            //設(shè)置創(chuàng)建用戶的時間于樟,但是存入數(shù)據(jù)庫會少了8小時?
            pro.setCreationDate(Timestamp.valueOf(simpleDate.format(nowdate)));
            System.out.println("id =" + pro.getId() + "...   date = " +nowdate.toString());
            try {
                connection = BaseDao.getConnection();
                flag = providerDao.addPro(connection,pro);
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                BaseDao.closeResource(connection,null,null);
            }
        }
        return flag > 0;
    }

    @Test
    public void test() {
        ProviderServiceImpl providerService = new ProviderServiceImpl();
        System.out.println(providerService.getAllProMaxId());
        Provider pro = new Provider();
        pro.setProCode("111");
        pro.setProName("111");
        pro.setProDesc("111");
        pro.setProAddress("111");
        pro.setCreatedBy(1);
        boolean b = providerService.addPro(pro);
        System.out.println("是否添加成功:" + b);
    }
  • 3.5 ProviderServlet
//供應(yīng)商 添加頁 的提交請求拇囊,向數(shù)據(jù)庫添加該供貨商信息
    public void add(HttpServletRequest req, HttpServletResponse resp) {
        Provider pro = new Provider();
        //獲得當(dāng)前Session的id迂曲,是執(zhí)行修改操作的用戶
        Object o = req.getSession().getAttribute(Constants.USER_SESSION);
        if(o != null) {
            pro.setCreatedBy(((User)o).getId());
            System.out.println("操作修改的用戶id:" + pro.getCreatedBy());
        }
        //從前端獲取數(shù)據(jù)
        String proCode = req.getParameter("proCode");
        String proName = req.getParameter("proName");
        String proContact = req.getParameter("proContact");
        String proPhone = req.getParameter("proPhone");
        String proAddress = req.getParameter("proAddress");
        String proFax = req.getParameter("proFax");
        String proDesc = req.getParameter("proDesc");

        //供應(yīng)商編碼
        pro.setProCode(proCode);
        System.out.println("供應(yīng)商編碼:" + proCode);
        //供應(yīng)商名稱
        pro.setProName(proName);
        System.out.println("供應(yīng)商名稱:" + proName);
        //聯(lián)系人
        pro.setProContact(proContact);
        System.out.println("聯(lián)系人:" + proContact);
        //聯(lián)系電話
        pro.setProPhone(proPhone);
        System.out.println("聯(lián)系電話:" + proPhone);
        //聯(lián)系地址
        pro.setProAddress(proAddress);
        System.out.println("聯(lián)系地址:" + proAddress);
        //傳真
        pro.setProFax(proFax);
        System.out.println("傳真:" + proFax);
        //描述
        pro.setProDesc(proDesc);
        System.out.println("描述:" + proDesc);

        //調(diào)業(yè)務(wù)層執(zhí)行方法
        ProviderService providerService = new ProviderServiceImpl();
        providerService.addPro(pro);

        //跳轉(zhuǎn)頁面-->provideradd.jsp
        try {
            req.getRequestDispatcher("/jsp/provideradd.jsp").forward(req,resp);
        } catch (ServletException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
  • 3.6 web.xml
    <servlet-mapping>
        <servlet-name>ProviderServlet</servlet-name><!--添加用戶信息的提交請求-->
        <url-pattern>/provider/addprovider.html</url-pattern>
    </servlet-mapping>

(五)、刪除供應(yīng)商

  • ProviderDao
//根據(jù)id 刪除供應(yīng)商
    public int delPro(Connection connection, int proId) throws SQLException;

    //根據(jù)id 獲得該供應(yīng)商的訂單總數(shù)
    public int getBillsCount(Connection connection, int proId) throws SQLException;
  • ProviderDaoImpl
//根據(jù)id 刪除供應(yīng)商
    public int delPro(Connection connection, int proId) throws SQLException {
        PreparedStatement pstm = null;
        int count = 0;
        if(connection != null) {
            String sql = "delete from smbms_provider where id = ?";
            Object[] params = {proId};
            count = BaseDao.execute(connection, pstm, sql,params);
            System.out.println("ProviderDaoImpl.delPro.sql:--->" + sql + "?-->id = -->" + proId);
            //關(guān)閉資源
            BaseDao.closeResource(null,pstm,null);
        }
        return count;
    }

    //根據(jù)id 獲得該供應(yīng)商的訂單總數(shù)
    public int getBillsCount(Connection connection, int proId) throws SQLException {
        PreparedStatement pstm = null;
        ResultSet rs = null;
        int count = 0;
        if(connection != null) {
            String sql = "select count(1) as billsCount from smbms_provider sp, smbms_bill sb where sb.providerId = sp.id and sp.id = ?";
            Object[] params = {proId};
            rs = BaseDao.execute(connection, pstm,rs, sql, params);
            System.out.println("ProviderDaoImpl.getBillsCount.sql:--->" + sql + "?-->id = -->" + proId);
            if(rs.next()) {
                count = rs.getInt("billsCount");
            }
            //關(guān)閉資源
            BaseDao.closeResource(null,pstm,null);
        }
        return count;
    }
  • ProviderService
    //根據(jù)id 刪除供應(yīng)商
    public int delPro(int proId);

    //根據(jù)id 獲得該供應(yīng)商的訂單總數(shù)
    public int getBillsCount(int proId);
  • ProviderServiceImpl
//根據(jù)id 刪除供應(yīng)商
    public int delPro(int proId) {
        Connection connection = null;
        int flag = -1;
        try {
            connection = BaseDao.getConnection();
            //判斷該供應(yīng)商下有多少的訂單
            int temp = 0;
            if((temp = getBillsCount(proId)) > 0) {//如果大于0寥袭,則是有訂單的路捧,那么就將訂單數(shù)返回
                return temp;
            }
            //調(diào)用dao層方法,刪除供應(yīng)商
            flag = providerDao.delPro(connection,proId) - 1;//因為成功影響的行數(shù)為1传黄,為了不返回大于0 的數(shù)杰扫,減一等于0,返回0
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {// 關(guān)閉資源
            BaseDao.closeResource(connection,null,null);
        }
        return flag;//輸出失敗會返回-1
    }

    //根據(jù)id 獲得該供應(yīng)商的訂單總數(shù)
    public int getBillsCount(int proId) {
        Connection connection = null;
        int count = 0;
        try {
            connection = BaseDao.getConnection();
            //調(diào)用dao層方法膘掰,查詢訂單數(shù)
            count = providerDao.getBillsCount(connection,proId);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {// 關(guān)閉資源
            BaseDao.closeResource(connection,null,null);
        }
        return count;
    }

    @Test
    public void test() {
        ProviderServiceImpl providerService = new ProviderServiceImpl();
        System.out.println(providerService.getAllProMaxId());
        Provider pro = new Provider();
        pro.setProCode("111");
        pro.setProName("111");
        pro.setProDesc("111");
        pro.setProAddress("111");
        pro.setCreatedBy(1);
        boolean b = providerService.addPro(pro);
        System.out.println("是否添加成功:" + b);
        System.out.println("是否刪除成功:" + providerService.delPro(pro.getId()));
        System.out.println("訂單數(shù)為:" + providerService.getBillsCount(1));
        System.out.println("是否刪除成功:" + providerService.delPro(1));
    }
  • ProviderServlet
//刪除指定id的供應(yīng)商
    public void delprovider(HttpServletRequest req, HttpServletResponse resp) {
        String proid = req.getParameter("proid");
        HashMap<String, String> map = new HashMap<String, String>();
        if(proid != null) {// id存在
            int proId = Integer.parseInt(proid);
            System.out.println("delete Provider.Id-->" + proId);
            //調(diào)用Service 層的方法處理
            ProviderService proService = new ProviderServiceImpl();
            int flag = proService.delPro(proId);
            System.out.println("delete result--->>" + flag);

            if(flag == 0) {//刪除成功
                map.put("delResult","true");
            } else if(flag == -1) {//刪除失敗
                map.put("delResult","false");
            } else if(flag > 0) {//刪除失敗章姓,因為存在訂單
                map.put("delResult",flag + "");
            }
        } else {//id不存在
            map.put("delResult","notexist");
        }
        resp.setContentType("application/jsp");
        try {
            PrintWriter writer = resp.getWriter();
            /*
            JSONArray,工具類,轉(zhuǎn)換格式炭序,將map轉(zhuǎn)換為json
             */
            writer.write(JSONArray.toJSONString(map));
            writer.flush();
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
  • web.xml
    <servlet-mapping>
        <servlet-name>ProviderServlet</servlet-name>
        <url-pattern>/provider/delProvider.html</url-pattern><!--刪除供貨商的異步請求-->
    </servlet-mapping>

至此完成了供應(yīng)商管理頁面的全部功能啤覆,以下是ProviderServlet的doGet方法

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String method = req.getParameter("method");
        System.out.println("要執(zhí)行的操作是:" + method);
        if("query".equals(method)) {// 查詢供應(yīng)商列表,跳轉(zhuǎn)到 供應(yīng)商管理頁面
            getProList(req, resp);
        } else if("view".equals(method)) {// 供應(yīng)商管理頁面 下的 查看請求
            view(req, resp);
        } else if("modify".equals(method)) {// 供應(yīng)商管理頁面 下的 修改請求
            modify(req, resp);
        } else if("modifyexe".equals(method)) {// 供應(yīng)商 修改頁 提交修改保存請求惭聂,頁面轉(zhuǎn)發(fā)到 供應(yīng)商管理頁面
            modifyexe(req, resp);
        } else if("add_jsp".equals(method)) {// 供應(yīng)商管理頁面 下的 修改請求窗声,跳轉(zhuǎn)到添加用戶界面
            add_jsp(req, resp);
        } else if("ucexist".equals(method)) {// 供應(yīng)商 添加頁 異步請求:確定新增供貨商的 編碼是否可用(未被使用),無頁面跳轉(zhuǎn)
            ucexist(req,resp);
        } else if("add".equals(method)) {// 供應(yīng)商 添加頁 的提交請求辜纲,向數(shù)據(jù)庫添加該供貨商信息
            add(req, resp);
        } else if("delprovider".equals(method)) {
            delprovider(req,resp);
        }
//        else {// 查詢供應(yīng)商列表笨觅,跳轉(zhuǎn)到供應(yīng)商列表頁面,因為首頁點進(jìn)來的話是超鏈接耕腾,沒有提交屬性
//            getProList(req, resp);
//        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末见剩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子扫俺,更是在濱河造成了極大的恐慌苍苞,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異羹呵,居然都是意外死亡骂际,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門冈欢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來歉铝,“玉大人,你說我怎么就攤上這事凑耻√荆” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我圈匆,道長,這世上最難降的妖魔是什么呀非? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮镜盯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘猖败。我一直安慰自己速缆,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布恩闻。 她就那樣靜靜地躺著艺糜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪幢尚。 梳的紋絲不亂的頭發(fā)上破停,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機(jī)與錄音尉剩,去河邊找鬼真慢。 笑死,一個胖子當(dāng)著我的面吹牛理茎,可吹牛的內(nèi)容都是我干的黑界。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼皂林,長吁一口氣:“原來是場噩夢啊……” “哼朗鸠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起础倍,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤烛占,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后沟启,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忆家,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡犹菇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了弦赖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片项栏。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蹬竖,靈堂內(nèi)的尸體忽然破棺而出沼沈,到底是詐尸還是另有隱情,我是刑警寧澤币厕,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布列另,位于F島的核電站,受9級特大地震影響旦装,放射性物質(zhì)發(fā)生泄漏页衙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一阴绢、第九天 我趴在偏房一處隱蔽的房頂上張望店乐。 院中可真熱鬧,春花似錦呻袭、人聲如沸眨八。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽廉侧。三九已至,卻和暖如春篓足,著一層夾襖步出監(jiān)牢的瞬間段誊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工栈拖, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留连舍,地道東北人。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓涩哟,卻偏偏與公主長得像烟瞧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子染簇,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容