Java 實(shí)戰(zhàn)項(xiàng)目錘煉之仿天貓網(wǎng)上商城的實(shí)現(xiàn)流程
一、項(xiàng)目簡述
功能:
前臺(tái):
* 用戶模塊
* 分類模塊
* 商品模塊
* 購物車模塊
* 訂單模塊
后臺(tái):
* 管理員模塊
* 分類管理模塊
* 商品管理模塊
* 訂單模塊
二、項(xiàng)目運(yùn)行
環(huán)境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
項(xiàng)目技術(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)用對(duì)應(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ù)方法的返回值,進(jìn)行相應(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 實(shí)戰(zhàn)項(xiàng)目錘煉之仿天貓網(wǎng)上商城的實(shí)現(xiàn)流程的詳細(xì)內(nèi)容,更多關(guān)于Java 天貓商城的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Java 實(shí)戰(zhàn)項(xiàng)目錘煉之在線蛋糕商城系統(tǒng)的實(shí)現(xiàn)
- Java 實(shí)戰(zhàn)項(xiàng)目錘煉之在線購書商城系統(tǒng)的實(shí)現(xiàn)流程
- Java 實(shí)戰(zhàn)項(xiàng)目錘煉之網(wǎng)上花店商城的實(shí)現(xiàn)流程
- Java 實(shí)戰(zhàn)項(xiàng)目錘煉之網(wǎng)上商城系統(tǒng)的實(shí)現(xiàn)流程
- Java 實(shí)戰(zhàn)項(xiàng)目之家居購物商城系統(tǒng)詳解流程
- Java 實(shí)戰(zhàn)交易平臺(tái)項(xiàng)目之寵物在線商城系統(tǒng)
- java商城項(xiàng)目實(shí)戰(zhàn)之購物車功能實(shí)現(xiàn)
- Java實(shí)戰(zhàn)玩具商城的前臺(tái)與后臺(tái)實(shí)現(xiàn)流程
相關(guān)文章
JDBC的基本操作與Statement和PreparedStateMent使用區(qū)別分析
這篇文章主要介紹了JDBC的基本操作與Statement和PreparedStateMent使用區(qū)別,Java Database Connectivity,它是代表一組獨(dú)立于任何數(shù)據(jù)庫管理系統(tǒng)(DBMS)的API,聲明在java.sql與javax.sql包中,是SUN(現(xiàn)在Oracle)提供的一組接口規(guī)范2023-04-04Java數(shù)組的特性_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
數(shù)組是基本上所有語言都會(huì)有的一種數(shù)據(jù)類型,它表示一組相同類型的數(shù)據(jù)的集合,具有固定的長度,并且在內(nèi)存中占據(jù)連續(xù)的空間。在C,C++等語言中,數(shù)組的定義簡潔清晰,而在Java中確有一些會(huì)讓人迷惑的特性。本文就嘗試分析這些特性2017-04-04基于Springboot+Junit+Mockito做單元測(cè)試的示例
本篇文章主要介紹了基于Springboot+Junit+Mockito做單元測(cè)試的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02設(shè)置Myeclipse中的代碼格式化、注釋模板及保存時(shí)自動(dòng)格式化
這篇文章主要介紹了設(shè)置Myeclipse中的代碼格式化、注釋模板及保存時(shí)自動(dòng)格式化方法,需要的朋友可以參考下2014-10-10Java8中Lambda表達(dá)式的理解與應(yīng)用
Java8最值得學(xué)習(xí)的特性就是Lambda表達(dá)式和Stream?API,如果有python或者javascript的語言基礎(chǔ),對(duì)理解Lambda表達(dá)式有很大幫助,下面這篇文章主要給大家介紹了關(guān)于Java8中Lambda表達(dá)式的相關(guān)資料,需要的朋友可以參考下2022-02-02