最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 實戰(zhàn)項目錘煉之仿天貓網(wǎng)上商城的實現(xiàn)流程

 更新時間:2021年11月12日 09:07:03   作者:qq_1334611189  
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+jsp+servlet+mysql+ajax實現(xiàn)一個仿天貓網(wǎng)上商城項目,大家可以在過程中查缺補漏,提升水平

一、項目簡述

功能:

前臺:

* 用戶模塊

* 分類模塊

* 商品模塊

* 購物車模塊

* 訂單模塊

后臺:

* 管理員模塊

* 分類管理模塊

* 商品管理模塊

* 訂單模塊

二、項目運行

環(huán)境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)

項目技術(shù): JSP + C3P0+ Servlert + html+ css + JavaScript + JQuery + Ajax + Fileupload等等。

基礎(chǔ)信息操作代碼:

基礎(chǔ)信息操作:
 
public abstract class BaseBackServlet extends HttpServlet {
 
    /* 添加 */
    public abstract String add(HttpServletRequest request, HttpServletResponse response, Page page);
    /* 刪除 */
    public abstract String delete(HttpServletRequest request, HttpServletResponse response, Page page);
    /* 更新 */
    public abstract String update(HttpServletRequest request, HttpServletResponse response, Page page);
    /* 修改 */
    public abstract String edit(HttpServletRequest request, HttpServletResponse response, Page page);
    /* 顯示 */
    public abstract String list(HttpServletRequest request, HttpServletResponse response, Page page);
 
    protected CategoryDAO categoryDAO = new CategoryDAO();
    protected OrderDAO orderDAO = new OrderDAO();
    protected OrderItemDAO orderItemDAO = new OrderItemDAO();
    protected ProductDAO productDAO = new ProductDAO();
    protected ProductImageDAO productImageDAO = new ProductImageDAO();
    protected PropertyDAO propertyDAO = new PropertyDAO();
    protected PropertyValueDAO propertyValueDAO = new PropertyValueDAO();
    protected ReviewDAO reviewDAO = new ReviewDAO();
    protected UserDAO userDAO = new UserDAO();
 
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        try{
            /* 獲取分頁信息 */
            int start = 0;
            int count = 5;
            try{
                start = Integer.parseInt(req.getParameter("page.start"));
                count = Integer.parseInt(req.getParameter("page.count"));
            } catch(Exception e) {
 
            }
 
            Page page = new Page(start, count);
 
            /* 借助反射,調(diào)用對應(yīng)的方法 */
            String method = (String)req.getAttribute("method");
            Method m = this.getClass().getMethod(method, HttpServletRequest.class, HttpServletResponse.class, Page.class);
            String redirect = m.invoke(this, req, resp, page).toString();
 
            /* 根據(jù)方法的返回值,進行相應(yīng)的客戶端、服務(wù)端跳轉(zhuǎn),或僅輸出字符串 */
            if(redirect.startsWith("@")){
                resp.sendRedirect(redirect.substring(1));
            } else if(redirect.startsWith("%")){
                resp.getWriter().print(redirect.substring(1));
            } else {
                req.getRequestDispatcher(redirect).forward(req, resp);
            }
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
    }
 
    public InputStream parseUpload(HttpServletRequest request, Map<String, String> params){
        InputStream is = null;
        try{
            DiskFileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            //設(shè)置上傳的文件大小限制為10M
            factory.setSizeThreshold(1024 * 1024);
 
            List items = upload.parseRequest(request);
            Iterator iter = items.iterator();
 
            while(iter.hasNext()){
                FileItem item = (FileItem) iter.next();
                if(!item.isFormField()){
                    //獲取上傳文件的輸入流
                    is = item.getInputStream();
                } else {
                    String paramName = item.getFieldName();
                    String paramValue = item.getString();
                    paramValue = new String(paramValue.getBytes("ISO-8859-1"), "UTF-8");
                    params.put(paramName, paramValue);
                }
            }
 
        } catch (FileUploadException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return is;
    }
 
}

用戶信息操作代碼:

用戶信息操作:
 
public class UserServlet extends BaseBackServlet {
 
    @Override
    public String add(HttpServletRequest request, HttpServletResponse response, Page page) {
        System.out.println("調(diào)用了 UserServlet add方法");
        return null;
    }
 
    @Override
    public String delete(HttpServletRequest request, HttpServletResponse response, Page page) {
        System.out.println("調(diào)用了 UserServlet delete方法");
 
        int id = Integer.parseInt(request.getParameter("id"));
        userDAO.delete(id);
        return "@admin_user_list";
    }
 
    @Override
    public String update(HttpServletRequest request, HttpServletResponse response, Page page) {
        System.out.println("調(diào)用了 UserServlet update方法");
 
        Map<String, String> params = new HashMap<>();
        InputStream is = super.parseUpload(request, params);
        System.out.println(params);
 
        int id = Integer.parseInt(params.get("id"));
        String password = params.get("password");
 
        User user = userDAO.get(id);
        user.setPassword(password);
 
        userDAO.update(user);
 
        return "@admin_user_list";
    }
 
    @Override
    public String edit(HttpServletRequest request, HttpServletResponse response, Page page) {
        System.out.println("調(diào)用了 UserServlet edit方法");
 
        int id = Integer.parseInt(request.getParameter("id"));
        User u = userDAO.get(id);
 
        request.setAttribute("u", u);
 
        return "admin/editUser.jsp";
    }
 
    @Override
    public String list(HttpServletRequest request, HttpServletResponse response, Page page) {
        System.out.println("調(diào)用了 UserServlet list方法");
 
        List<User> us = userDAO.list(page.getStart(), page.getCount());
        int total = userDAO.getTotal();
        page.setTotal(total);
 
        request.setAttribute("us", us);
        request.setAttribute("page", page);
 
        return "admin/listUser.jsp";
    }
}

以上就是Java 實戰(zhàn)項目錘煉之仿天貓網(wǎng)上商城的實現(xiàn)流程的詳細內(nèi)容,更多關(guān)于Java 天貓商城的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java-性能分析和監(jiān)控工具深入詳解

    Java-性能分析和監(jiān)控工具深入詳解

    這篇文章主要介紹了Java-性能分析和監(jiān)控工具深入詳解,文章內(nèi)容詳細,簡單易懂,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2023-01-01
  • Java處理延時任務(wù)的常用幾種解決方案

    Java處理延時任務(wù)的常用幾種解決方案

    本文主要介紹了Java處理延時任務(wù)的常用幾種解決方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Springboot整合Dubbo+Nacos實現(xiàn)RPC調(diào)用的示例代碼

    Springboot整合Dubbo+Nacos實現(xiàn)RPC調(diào)用的示例代碼

    隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,越來越多的企業(yè)和開發(fā)者開始關(guān)注微服務(wù)架構(gòu),Nacos是阿里巴巴開源的一個動態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺,本文講解如何將Spring Boot與Dubbo和Nacos整合,實現(xiàn)RPC調(diào)用,需要的朋友可以參考下
    2024-02-02
  • Java后端產(chǎn)生驗證碼后臺驗證功能的實現(xiàn)代碼

    Java后端產(chǎn)生驗證碼后臺驗證功能的實現(xiàn)代碼

    這篇文章主要介紹了Java后臺產(chǎn)生驗證碼后臺驗證功能,本文文字結(jié)合實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • 看過就懂的java零拷貝及實現(xiàn)方式詳解

    看過就懂的java零拷貝及實現(xiàn)方式詳解

    這篇文章主要為大家詳細的介紹了什么是零拷貝,傳統(tǒng)的IO執(zhí)行流程,零拷貝相關(guān)的知識點回顧,零拷貝實現(xiàn)的幾種方式及java提供的零拷貝方式相關(guān)內(nèi)容,有需要的朋友可以借鑒參考下
    2022-01-01
  • java事件處理模型知識點總結(jié)

    java事件處理模型知識點總結(jié)

    在本篇文章里小辮給大家分享的是一篇關(guān)于java事件處理模型知識點總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • struts2 中文亂碼的解決辦法分享

    struts2 中文亂碼的解決辦法分享

    這篇文章主要介紹了struts2 中文亂碼的解決辦法,需要的朋友可以參考下
    2014-02-02
  • 詳解Kotlin和anko融合進行Android開發(fā)

    詳解Kotlin和anko融合進行Android開發(fā)

    本篇文章主要介紹了Kotlin和anko融合進行Android開發(fā),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • 一文了解Java Log框架徹底搞懂Log4J,Log4J2,LogBack,SLF4J

    一文了解Java Log框架徹底搞懂Log4J,Log4J2,LogBack,SLF4J

    本文主要介紹了一文了解Java Log框架徹底搞懂Log4J,Log4J2,LogBack,SLF4J,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 詳解使用Spring3 實現(xiàn)用戶登錄以及權(quán)限認證

    詳解使用Spring3 實現(xiàn)用戶登錄以及權(quán)限認證

    這篇文章主要介紹了詳解使用Spring3 實現(xiàn)用戶登錄以及權(quán)限認證,這里整理了詳細的代碼,有需要的小伙伴可以參考下。
    2017-03-03

最新評論

江川县| 墨竹工卡县| 鹰潭市| 云梦县| 云龙县| 深水埗区| 荆州市| 元阳县| 桃园市| 沿河| 肇源县| 德清县| 庆安县| 抚顺市| 东辽县| 行唐县| 弥渡县| 辽中县| 长治市| 新密市| 石阡县| 民权县| 陵川县| 石河子市| 甘洛县| 汤原县| 台北市| 扎赉特旗| 武安市| 苍梧县| 丽水市| 克拉玛依市| 保德县| 平乐县| 大城县| 凤山县| 阜城县| 铁岭市| 邵阳县| 加查县| 新巴尔虎右旗|