Java實(shí)現(xiàn)茶葉售賣商城系統(tǒng)(java+SSM+JSP+EasyUi+mysql)
前言
這是一個(gè)應(yīng)用SSM框架的項(xiàng)目,前端頁(yè)面整潔清晰。該系統(tǒng)有兩個(gè)角色,一個(gè)是普通用戶,另一個(gè)是管理員。
普通用戶具有注冊(cè)、登錄、查看商品、添加購(gòu)物車、添加商品收藏、下訂單、商品評(píng)價(jià)、用戶地址管理等等功能。
管理員具有登錄、管理用戶信息、管理商品信息、管理商品活動(dòng)信息、管理訂單信息、管理用戶評(píng)論信息的等等功能。
應(yīng)用技術(shù):Jsp + SSM + EasyUi
運(yùn)行環(huán)境:eclipse/IDEA + MySQL5.7 + Tomcat8.5 + JDK1.8
實(shí)現(xiàn)效果





?
主要代碼
用戶管理控制層
@WebServlet("/frontstage_userServlet")
public class UserServlet extends HttpServlet {
UserService service = new UserService();
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String action = req.getParameter("action");
switch (action) {
case "login":
login(req, resp);
break;
case "checkUserNameRepeat":
checkUserNameRepeat(req, resp);
break;
case "register":
register(req, resp);
break;
case "logout":
logout(req, resp);
break;
case "checkOldPassword":
checkOldPassword(req, resp);
break;
case "modifyPassword":
modifyPassword(req, resp);
break;
}
}
public void login(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//設(shè)置請(qǐng)求編碼格式:
req.setCharacterEncoding("utf-8");
//設(shè)置響應(yīng)編碼格式
resp.setContentType("text/html;charset=utf-8");
String userName = req.getParameter("userName");
String password = req.getParameter("password");
String captcha = req.getParameter("captcha");
if (captcha != null) {
captcha = captcha.toUpperCase();
}
// 先進(jìn)行驗(yàn)證碼驗(yàn)證
String checkcode = (String) req.getSession().getAttribute("checkcode_session");
try {
// 將用戶輸入的驗(yàn)證碼和 系統(tǒng)驗(yàn)證對(duì)比
if (checkcode.equals(captcha)) {
User user = service.getUserByNameAndPassword(userName, password);
if (user != null) {
HttpSession session = req.getSession();
session.setAttribute("user", user);
JSONResult ok = JSONResult.ok();
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
} else {
// 將錯(cuò)誤信息封裝在結(jié)果集中
JSONResult result = JSONResult.errorMsg("用戶名或密碼錯(cuò)誤,請(qǐng)重試");
// 以json的形式返回給前端
resp.getWriter().println(JsonUtil.javaObjectToJson(result));
}
} else {
// 將錯(cuò)誤信息封裝在結(jié)果集中
JSONResult result = JSONResult.errorMsg("驗(yàn)證碼輸入錯(cuò)誤,請(qǐng)重試");
// 以json的形式返回給前端
resp.getWriter().println(JsonUtil.javaObjectToJson(result));
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 用戶名重名檢測(cè)
*
* @param req
* @param resp
*/
public void checkUserNameRepeat(HttpServletRequest req, HttpServletResponse resp) {
String userName = req.getParameter("userName");
if (userName != null) {
int d = service.checkUserNameRepeat(userName);
try {
if (d > 0) {
JSONResult error = JSONResult.errorMsg("");
resp.getWriter().println(JsonUtil.javaObjectToJson(error));
} else {
JSONResult ok = JSONResult.ok();
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 用戶注冊(cè)
*
* @param req
* @param resp
* @throws IOException
*/
public void register(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//設(shè)置請(qǐng)求編碼格式:
req.setCharacterEncoding("utf-8");
//設(shè)置響應(yīng)編碼格式
resp.setContentType("text/html;charset=utf-8");
User user = new User();
user.setUserName(req.getParameter("userName"));
user.setPassword(req.getParameter("password"));
user.setEmail(req.getParameter("email"));
user.setPhone(req.getParameter("phoneNum"));
user.setRole("ordinaryUser");
int d = service.addUser(user);
try {
if (d > 0) {
JSONResult ok = JSONResult.ok();
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
} else {
JSONResult error = JSONResult.errorMsg("注冊(cè)失敗");
resp.getWriter().println(JsonUtil.javaObjectToJson(error));
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 退出登錄
*/
public void logout(HttpServletRequest req, HttpServletResponse resp) {
req.getSession().removeAttribute("user");
try {
resp.sendRedirect("index.jsp");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 檢查舊密碼是否正確 ,在修改密碼操作時(shí)使用
* @throws IOException
*/
public void checkOldPassword(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//設(shè)置請(qǐng)求編碼格式:
req.setCharacterEncoding("utf-8");
//設(shè)置響應(yīng)編碼格式
resp.setContentType("text/html;charset=utf-8");
User user = (User) req.getSession().getAttribute("user");
String oldPassword = service.getPasswordById(user.getId());
System.out.println("舊密碼:"+oldPassword);
String password = req.getParameter("password");
System.out.println("舊密碼驗(yàn)證:"+password);
try {
if (!oldPassword.equals(password)) {
JSONResult errorMsg = JSONResult.errorMsg("原始密碼錯(cuò)誤,請(qǐng)重新輸入");
resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));
} else {
JSONResult ok = JSONResult.ok();
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 修改密碼
* @throws IOException
*/
public void modifyPassword(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//設(shè)置請(qǐng)求編碼格式:
req.setCharacterEncoding("utf-8");
//設(shè)置響應(yīng)編碼格式
resp.setContentType("text/html;charset=utf-8");
String password = req.getParameter("newPassword");
System.out.println("新密碼:"+password);
User user = (User) req.getSession().getAttribute("user");
int id = user.getId();
System.out.println("舊密碼id"+id);
int d = service.updatePasswordById(id, password);
try {
if (d > 0) {
JSONResult ok = JSONResult.ok();
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
} else {
JSONResult errorMsg = JSONResult.errorMsg("修改失敗,請(qǐng)重試");
resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
商品管理服務(wù)類
@WebServlet("/frontstage_goodsServlet")
public class GoodsServlet extends HttpServlet{
GoodsService service = new GoodsService();
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String action = req.getParameter("action");
switch(action) {
case "findAllGoods":findAllGoods(req,resp);break;
case "findGoodsById":findGoodsById(req,resp);break;
case "findGoodsByType":findGoodsByType(req,resp);break;
}
}
/**
* 獲取所有商品列表
* @param req
* @param resp
*/
public void findAllGoods(HttpServletRequest req, HttpServletResponse resp) {
Map<String, List<Goods>> allGoods = service.getAllGoods();
try {
req.setAttribute("allGoods", allGoods);
req.getRequestDispatcher("/main.jsp").forward(req, resp);
return;
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
*根據(jù)類型獲得商品列表
* @param req
* @param resp
*/
public void findGoodsByType(HttpServletRequest req, HttpServletResponse resp) {
String type = req.getParameter("type");
String currentPage = req.getParameter("currentPage");
PageBean pageBean = null;
// 如果當(dāng)前第幾頁(yè)currentPage 值為null,說(shuō)明第一次跳轉(zhuǎn)到此頁(yè)面或者是要跳轉(zhuǎn)到首頁(yè),則設(shè)定該值currentPage默認(rèn)為1
if(currentPage == null) {
pageBean = service.getGoodsByType(type, 4, 1);
}else {
pageBean = service.getGoodsByType(type, 4, Integer.parseInt(currentPage));
}
try {
req.setAttribute("pageBean", pageBean);
req.setAttribute("type", type);
req.getRequestDispatcher("/product.jsp").forward(req, resp);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 獲取商品的詳細(xì)信息
* @param req
* @param resp
*/
public void findGoodsById(HttpServletRequest req, HttpServletResponse resp) {
int id =Integer.parseInt(req.getParameter("id"));
Goods goodsInfo = service.getGoodsInfoById(id);
try {
req.setAttribute("pro", goodsInfo);
req.getRequestDispatcher("/productInfo_user.jsp").forward(req, resp);
} catch (Exception e) {
e.printStackTrace();
}
}
}
訂單控制層
@WebServlet("/backstage_ordersServlet")
public class OrdersServlet extends HttpServlet{
OrdersService service = new OrdersService();
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String action = req.getParameter("action");
System.out.println(action);
switch(action) {
case "getOrdersList":getOrdersList(req,resp);break;
case "getOrdersListByName":getOrdersListByName(req,resp);break;
case "deleteOrders":deleteOrders(req,resp);break;
case "deleteAllOrders":deleteAllOrders(req,resp);break;
case "toOrdersUpdatePage":toOrdersUpdatePage(req,resp);break;
case "updateOrders":updateOrders(req,resp);break;
case "fastbuy":sendOrder(req,resp);break;
}
}
/*
* 刪除全部訂單
*/
private void deleteAllOrders(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//設(shè)置請(qǐng)求編碼格式:
req.setCharacterEncoding("utf-8");
//設(shè)置響應(yīng)編碼格式
resp.setContentType("text/html;charset=utf-8");
// TODO 自動(dòng)生成的方法存根
int d = service.deleteAllOrders();
try {
if(d>0) {
JSONResult ok = JSONResult.ok();
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
}else {
JSONResult errorMsg = JSONResult.errorMsg("刪除失敗,請(qǐng)重試");
resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 提交訂單
* @throws IOException
*/
public void sendOrder(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//設(shè)置請(qǐng)求編碼格式:
req.setCharacterEncoding("utf-8");
//設(shè)置響應(yīng)編碼格式
resp.setContentType("text/html;charset=utf-8");
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//設(shè)置日期格式
User user =(User) req.getSession().getAttribute("user");
Orders order = new Orders();
order.setNumber(order.getRandomString(10));
order.setTime(df.format(new Date()));
order.setName(req.getParameter("recipients"));
order.setAddress(req.getParameter("address"));
order.setPhone(req.getParameter("phone"));
order.setAddress_label(req.getParameter("addressLabel"));
order.setSex(req.getParameter("sex"));
order.setUser(user.getUserName());
order.setGoods_id(Integer.parseInt(req.getParameter("id")));
order.setGoods_num(Integer.parseInt(req.getParameter("num")));
order.setGoods_status(1);
int d = service.addOrder(order);
try {
if(d>0) {
JSONResult ok = JSONResult.ok();
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
}else {
JSONResult error = JSONResult.errorMsg("訂單提交失敗!");
resp.getWriter().println(JsonUtil.javaObjectToJson(error));
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 向前端頁(yè)面返回訂單數(shù)據(jù)列表
*/
public void getOrdersList(HttpServletRequest req,HttpServletResponse resp) {
List<Orders> allOrders = service.getAllOrders();
req.setAttribute("ordersList",allOrders);
try {
req.getRequestDispatcher("/backstage/tgls/ordersManage/orders_list.jsp").forward(req, resp);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 根據(jù)訂單名查詢商品(注意!類別沒(méi)改)
* @param req
* @param resp
* @throws IOException
*/
public void getOrdersListByName(HttpServletRequest req,HttpServletResponse resp) throws IOException {
//設(shè)置請(qǐng)求編碼格式:
req.setCharacterEncoding("utf-8");
//設(shè)置響應(yīng)編碼格式
resp.setContentType("text/html;charset=utf-8");
String name = req.getParameter("OrdersUser");
//String type = req.getParameter("type");
Map<String,String> parmas = new HashMap<>();
parmas.put("name", name);
//parmas.put("type", type);
List<Orders> list = service.getOrdersByName(parmas);
try {
if(list != null) {
JSONResult ok = JSONResult.ok(list);
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
}else {
JSONResult errorMsg = JSONResult.errorMsg("未獲取到任何數(shù)據(jù),請(qǐng)重試");
resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 修改訂單時(shí),獲取此訂單的全部數(shù)據(jù),并返回至修改頁(yè)面
*/
public void toOrdersUpdatePage(HttpServletRequest req,HttpServletResponse resp) {
int id = Integer.parseInt(req.getParameter("id"));
Orders orders = service.getOrdersInfoById(id);
req.setAttribute("orders", orders);
try {
req.getRequestDispatcher("/backstage/tgls/ordersManage/orders_update.jsp").forward(req, resp);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 修改訂單
* @throws IOException
*/
public void updateOrders(HttpServletRequest req,HttpServletResponse resp) throws IOException {
//設(shè)置請(qǐng)求編碼格式:
req.setCharacterEncoding("utf-8");
//設(shè)置響應(yīng)編碼格式
resp.setContentType("text/html;charset=utf-8");
Orders orders = new Orders();
orders.setId(Integer.parseInt(req.getParameter("id")));
orders.setNumber(req.getParameter("number"));
orders.setUser(req.getParameter("user"));
orders.setTime(req.getParameter("time"));
orders.setName(req.getParameter("name"));
orders.setSex(req.getParameter("sex"));
orders.setAddress(req.getParameter("address"));
orders.setPhone(req.getParameter("phone"));
orders.setAddress_label(req.getParameter("address_label"));
orders.setGoods_id(Integer.parseInt(req.getParameter("goods_id")));
orders.setGoods_num(Integer.parseInt(req.getParameter("goods_num")));
orders.setGoods_status(Integer.parseInt(req.getParameter("goods_status")));
System.out.println(orders);
int d = service.updateOrdersById(orders);
System.out.println(d);
try {
if(d>0) {
JSONResult ok = JSONResult.ok();
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
}else {
JSONResult errorMsg = JSONResult.errorMsg("修改失敗,請(qǐng)重試");
resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 刪除訂單
* @throws UnsupportedEncodingException
*/
public void deleteOrders(HttpServletRequest req,HttpServletResponse resp) throws UnsupportedEncodingException {
//設(shè)置請(qǐng)求編碼格式:
req.setCharacterEncoding("utf-8");
//設(shè)置響應(yīng)編碼格式
resp.setContentType("text/html;charset=utf-8");
int id = Integer.parseInt(req.getParameter("id"));
int d = service.deleteOrdersById(id);
try {
if(d>0) {
JSONResult ok = JSONResult.ok();
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
}else {
JSONResult errorMsg = JSONResult.errorMsg("刪除失敗,請(qǐng)重試");
resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
到此這篇關(guān)于Java實(shí)現(xiàn)茶葉售賣商城系統(tǒng)(java+SSM+JSP+EasyUi+mysql)的文章就介紹到這了,更多相關(guān)Java 茶葉售賣商城系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用spring boot開(kāi)發(fā)時(shí)java對(duì)象和Json對(duì)象轉(zhuǎn)換的問(wèn)題
這篇文章主要介紹了使用spring boot開(kāi)發(fā)時(shí)java對(duì)象和Json對(duì)象轉(zhuǎn)換的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
如何用Intellij idea2020打包jar的方法步驟
這篇文章主要介紹了如何用Intellij idea 2020打包jar的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
java 關(guān)鍵字static詳細(xì)介紹及如何使用
這篇文章主要介紹了java 關(guān)鍵字static詳細(xì)介紹及如何使用的相關(guān)資料,需要的朋友可以參考下2017-03-03
Java(springboot) 讀取txt文本內(nèi)容代碼實(shí)例
這篇文章主要介紹了Java(springboot) 讀取txt文本內(nèi)容代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
springboot使用Validator校驗(yàn)方式
這篇文章主要介紹了springboot使用Validator校驗(yàn)方式,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-01-01
Spring中的NamespaceHandler加載過(guò)程源碼詳解
這篇文章主要介紹了Spring中的NamespaceHandler加載過(guò)程源碼詳解,Spring提供的NamespaceHandler的處理機(jī)制,簡(jiǎn)單來(lái)說(shuō)就是命名空間處理器,Spring為了開(kāi)放性提供了NamespaceHandler機(jī)制,這樣我們就可以根據(jù)需求自己來(lái)處理我們?cè)O(shè)置的標(biāo)簽元素,需要的朋友可以參考下2024-02-02

