基于javaweb的网上商城系统(java+ssm+jsp+mysql)

基于javaweb的网上商城系统(java+ssm+jsp+mysql)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

20220519001757

20220519001758

20220519001800

20220519001801

20220519001802

基于javaweb+jsp的网上商城系统(java+SSM+jsp+mysql)

一、项目简述功能

javaweb 网上商城系统,前台+后台管理,用户注册,登录,上哦展示,分组展示,搜索,收货地址管理,购物车管理,添加,购买,个人信息修改。订单查询等等,后台商品管理,分类管理,库存管理,订单管理,用户管理,信息修改等等.

二、项目运行

环境配置: Jdk1.8 + Tomcats . 5 + mysql + Eclispe ( IntelliJ IDEA ,Eclispe , MyEclispe , sts 都支持)

项目技术: JSP + Spring + SpringMVC + MyBatis + html + cSS + Javascriipt + JQuery + Ajax 等等。

后台管理平台登录代码:

/**

  • 后台管理-主页

*/

@Controller

public class AdminHomeController extends BaseController {

@Resource(name = “adminService”)

private AdminService adminService;

@Resource(name = “productOrderService”)

private ProductOrderService productOrderService;

@Resource(name = “productService”)

private ProductService productService;

@Resource(name = “userService”)

private UserService userService;

/**

  • 转到后台管理-主页

  • @param session session对象

  • @param map 前台传入的Map

  • @return 响应数据

  • @throws ParseException 转换异常

*/

@RequestMapping(value = “admin”, method = RequestMethod.GET)

public String goToPage(HttpSession session, Map<String, Object> map) throws ParseException {

logger.info(“获取管理员信息”);

Object adminId = checkAdmin(session);

if (adminId == null) {

return “redirect:/admin/login”;

Admin admin = adminService.get(null, Integer.parseInt(adminId.toString()));

map.put(“admin”, admin);

logger.info(“获取统计信息”);

//产品总数

Integer productTotal = productService.getTotal(null, new Byte[]{0, 2});

//用户总数

Integer userTotal = userService.getTotal(null);

//订单总数

Integer orderTotal = productOrderService.getTotal(null, new Byte[]{3});

logger.info(“获取图表信息”);

map.put(“jsonObject”, getChartData(null,null,7));

map.put(“productTotal”, productTotal);

map.put(“userTotal”, userTotal);

map.put(“orderTotal”, orderTotal);

logger.info(“转到后台管理-主页”);

return “admin/homePage”;

/**

  • 转到后台管理-主页(ajax方式)

  • @param session session对象

  • @param map 前台传入的Map

  • @return 响应数据

  • @throws ParseException 转换异常

*/

@RequestMapping(value = “admin/home”, method = RequestMethod.GET)

public String goToPageByAjax(HttpSession session, Map<String, Object> map) throws ParseException {

logger.info(“获取管理员信息”);

Object adminId = checkAdmin(session);

if (adminId == null) {

return “admin/include/loginMessage”;

Admin admin = adminService.get(null, Integer.parseInt(adminId.toString()));

map.put(“admin”, admin);

logger.info(“获取统计信息”);

Integer productTotal = productService.getTotal(null, new Byte[]{0, 2});

Integer userTotal = userService.getTotal(null);

Integer orderTotal = productOrderService.getTotal(null, new Byte[]{3});

logger.info(“获取图表信息”);

map.put(“jsonObject”, getChartData(null, null,7));

logger.info(“获取图表信息”);

map.put(“jsonObject”, getChartData(null,null,7));

map.put(“productTotal”, productTotal);

map.put(“userTotal”, userTotal);

map.put(“orderTotal”, orderTotal);

logger.info(“转到后台管理-主页-ajax方式”);

return “admin/homeManagePage”;

/**

  • 按日期查询图表数据(ajax方式)

  • @param beginDate 开始日期

  • @param endDate 结束日期

  • @return 响应数据

  • @throws ParseException 转换异常

*/

@ResponseBody

@RequestMapping(value = “admin/home/charts”, method = RequestMethod.GET, produces = “application/json;charset=utf-8”)

public String getChartDataByDate(@RequestParam(required = false) String beginDate, @RequestParam(required = false) String endDate) throws ParseException {

if (beginDate != null && endDate != null) {

//转换日期格式

SimpleDateFormat simpleDateFormat = new SimpleDateFormat(“yyyy-MM-dd”);

return getChartData(simpleDateFormat.parse(beginDate), simpleDateFormat.parse(endDate),7).toJSONString();

} else {

return getChartData(null, null,7).toJSONString();

/**

  • 按日期获取图表数据

  • @param beginDate 开始日期

  • @param endDate 结束日期

  • @param days 天数

  • @return 图表数据的JSON对象

  • @throws ParseException 转换异常

*/

private JSONObject getChartData(Date beginDate,Date endDate,int days) throws ParseException {

JSONObject jsonObject = new JSONObject();

SimpleDateFormat time = new SimpleDateFormat(“yyyy-MM-dd”, Locale.UK);

SimpleDateFormat time2 = new SimpleDateFormat(“MM/dd”, Locale.UK);

SimpleDateFormat timeSpecial = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”, Locale.UK);

//如果没有指定开始和结束日期

if (beginDate == null || endDate == null) {

//指定一周前的日期为开始日期

Calendar cal = Calendar.getInstance();

cal.add(Calendar.DATE, 1-days);

beginDate = time.parse(time.format(cal.getTime()));

//指定当前日期为结束日期

cal = Calendar.getInstance();

endDate = cal.getTime();

} else {

beginDate = time.parse(time.format(beginDate));

endDate = timeSpecial.parse(time.format(endDate) + " 23:59:59");

logger.info(“根据订单状态分类”);

//未付款订单数统计数组

int[] orderUnpaidArray = new int[7];

//未发货订单数统计叔祖

int[] orderNotShippedArray = new int[7];

//未确认订单数统计数组

int[] orderUnconfirmedArray = new int[7];

//交易成功订单数统计数组

int[] orderSuccessArray = new int[7];

//总交易订单数统计数组

int[] orderTotalArray = new int[7];

logger.info(“从数据库中获取统计的订单集合数据”);

List orderGroupList = productOrderService.getTotalByDate(beginDate, endDate);

//初始化日期数组

JSONArray dateStr = new JSONArray(days);

//按指定的天数进行循环

for (int i = 0; i < days; i++) {

//格式化日期串(MM/dd)并放入日期数组中

Calendar cal = Calendar.getInstance();

cal.setTime(beginDate);

cal.add(Calendar.DATE, i);

String formatDate = time2.format(cal.getTime());

dateStr.add(formatDate);

//该天的订单总数

int orderCount = 0;

//循环订单集合数据的结果集

for(int j = 0; j < orderGroupList.size(); j++){

OrderGroup orderGroup = orderGroupList.get(j);

//如果该订单日期与当前日期一致

if(orderGroup.getProductOrder_pay_date().equals(formatDate)){

//从结果集中移除数据

orderGroupList.remove(j);

//根据订单状态将统计结果存入对应的订单状态数组中

switch (orderGroup.getProductOrder_status()) {

case 0:

//未付款订单

orderUnpaidArray[i] = orderGroup.getProductOrder_count();

break;

case 1:

//未发货订单

orderNotShippedArray[i] = orderGroup.getProductOrder_count();

break;

case 2:

//未确认订单

orderUnconfirmedArray[i] = orderGroup.getProductOrder_count();

break;

case 3:

//交易成功订单

orderSuccessArray[i] = orderGroup.getProductOrder_count();

break;

//累加当前日期的订单总数

orderCount += orderGroup.getProductOrder_count();

//将统计的订单总数存入总交易订单数统计数组

orderTotalArray[i] = orderCount;

logger.info(“返回结果集map”);

jsonObject.put(“orderTotalArray”, orderTotalArray);

jsonObject.put(“orderUnpaidArray”, orderUnpaidArray);

jsonObject.put(“orderNotShippedArray”, orderNotShippedArray);

jsonObject.put(“orderUnconfirmedArray”, orderUnconfirmedArray);

jsonObject.put(“orderSuccessArray”, orderSuccessArray);

jsonObject.put(“dateStr”,dateStr);

return jsonObject;

用户相关接口:

/**

  • 用户相关接口

*/

@Controller

@RequestMapping(“/index”)

public class UserController{

@Resource

private UserService userService;

@Resource

private OrderService orderService;

@Resource

private GoodService goodService;

@Resource

private TypeService typeService;

@Resource

private ShopcartService shopcartService;

@Resource

private SkuService skuService;

/**

  • 用户注册

  • @return

*/

@GetMapping(“/register”)

public String reg(Model model) {

model.addAttribute(“flag”, -1); // 注册页面

return “/index/register.jsp”;

/**

  • 用户注册

  • @return

*/

@PostMapping(“/register”)

public String register(Users user, Model model){

if (user.getUsername().isEmpty()) {

model.addAttribute(“msg”, “用户名不能为空!”);

return “/index/register.jsp”;

}else if (userService.isExist(user.getUsername())) {

model.addAttribute(“msg”, “用户名已存在!”);

return “/index/register.jsp”;

}else {

String password = user.getPassword();

userService.add(user);

user.setPassword(password);

return “/index/index”; // 注册成功后转去登录

/**

  • 用户登录

  • @return

*/

@GetMapping(“/login”)

public String log() {

return “/index/index”;

/**

  • 用户登录

  • @return

*/

@PostMapping(“/login”)

public String login(@RequestParam(required=false, defaultValue=“0”)int flag, Users user, HttpSession session, Model model) {

model.addAttribute(“typeList”, typeService.getList());

if(flag==-1) {

flag = 6; // 登录页面

return “/index/index”;

if(userService.checkUser(user.getUsername(), user.getPassword())){

Users loginUser = userService.get(user.getUsername());

session.setAttribute(“user”, loginUser);

// 还原购物车数量

session.setAttribute(“total”, shopcartService.getTotal(loginUser.getId()));

return “redirect:index”;

} else {

model.addAttribute(“msg”, “用户名或密码错误!”);

return “/index/index”;

/**

  • 注销登录

  • @return

*/

@RequestMapping(“/logout”)

public String logout(HttpSession session) {

session.removeAttribute(“user”);

session.removeAttribute(“order”);

return “/index/index”;

/**

  • 查看购物车

  • @return

*/

@RequestMapping(“/shopcart”)

public String shopcart(Model model, HttpSession session) {

Users user = (Users) session.getAttribute(“user”);

if (user == null) {

model.addAttribute(“msg”, “请先登录!”);

return “/index/index”;

model.addAttribute(“typeList”, typeService.getList());

model.addAttribute(“shopcartList”, shopcartService.getList(user.getId()));

model.addAttribute(“totalPrice”, shopcartService.getTotalPrice(user.getId()));

return “/index/shopcart.jsp”;

/**

  • 购买

  • @return

*/

@RequestMapping(“/buy”)

public @ResponseBody int buy(Shopcart shopcart, HttpSession session, Model model){

Users user = (Users) session.getAttribute(“user”);

if (user == null) {

return -111;

shopcart.setUserId(user.getId());

shopcart.setGood(goodService.get(shopcart.getGoodId()));

// 验证库存

// int stock = skuService.getStock(shopcart.getGoodId(), shopcart.getColorId(), shopcart.getSizeId());

// if(shopcart.getAmount() > stock) {

// model.addAttribute(“msg”, "商品 [ " + shopcart.getGood().getName() + " ] 库存不足! 当前库存只有: " + stock);

// }

return orderService.save(Arrays.asList(shopcart), user);

/**

  • 购买

  • @return

*/

@RequestMapping(“/cart”)

public @ResponseBody int cart(Shopcart shopcart, HttpSession session, Model model){

Users user = (Users) session.getAttribute(“user”);

if (user == null) {

return -111;

shopcart.setUserId(user.getId());

shopcartService.save(shopcart);

int total = shopcartService.getTotal(user.getId());

session.setAttribute(“total”, total);

return total;

/**

  • 添加

*/

@RequestMapping(“/add”)

public @ResponseBody boolean add(int skuid, HttpSession session){

Users user = (Users) session.getAttribute(“user”);

if (user == null) {

return false;

return shopcartService.add(skuid);

/**

  • 减少

*/

@RequestMapping(“/less”)

public @ResponseBody boolean less(int skuid, HttpSession session){

Users user = (Users) session.getAttribute(“user”);

if (user == null) {

return false;

return shopcartService.less(skuid);

/**

  • 删除

*/

@RequestMapping(“/delete”)

public @ResponseBody boolean delete(int skuid, HttpSession session){

Users user = (Users) session.getAttribute(“user”);

if (user == null) {

return false;

shopcartService.delete(skuid);

session.setAttribute(“total”, shopcartService.getTotal(user.getId()));

return true;

/**

  • 总金额

  • @return

*/

@RequestMapping(“/total”)

public @ResponseBody int total(HttpSession session){

Users user = (Users) session.getAttribute(“user”);

if (user == null) {

return -111;

return shopcartService.getTotalPrice(user.getId());

/**

  • 提交订单

  • @return

*/

@RequestMapping(“/save”)

public String save(ServletRequest request, HttpSession session, Model model){

Users user = (Users) session.getAttribute(“user”);

if (user == null) {

model.addAttribute(“msg”, “请先登录!”);

return “/index/index”;

List shopcartList = shopcartService.getList(user.getId());

if(Objects.isNull(shopcartList) || shopcartList.isEmpty()) {

model.addAttribute(“msg”, “购物车没有商品”);

return shopcart(model, session);

// 验证库存

for(Shopcart cart : shopcartList) {

int stock = skuService.getStock(cart.getGoodId(), cart.getColorId(), cart.getSizeId());

if(cart.getAmount() > stock) {

model.addAttribute(“msg”, "商品 [ " + cart.getGood().getName() + " ] 库存不足! 当前库存只有: " + stock);

return shopcart(model, session);

int orderid = orderService.save(shopcartList, user);

if(orderid > 0) {

// 清空购物车

session.setAttribute(“total”, shopcartService.getTotal(user.getId()));

// 跳转支付

return “redirect:topay?orderid=”+orderid;

model.addAttribute(“msg”, “出了点问题”);

return shopcart(model, session);

/**

  • 支付页面

  • @return

*/

@RequestMapping(“/topay”)

public String topay(int orderid, ServletRequest request, HttpSession session) {

Users user = (Users) session.getAttribute(“user”);

if (user == null) {

request.setAttribute(“msg”, “请先登录!”);

return “/index/index”;

request.setAttribute(“typeList”, typeService.getList());

request.setAttribute(“order”, orderService.get(orderid));

return “/index/pay.jsp”;

/**

  • 支付(模拟)

  • @return

*/

@RequestMapping(“/pay”)

public String pay(Orders order, ServletRequest request, HttpSession session) {

Users user = (Users) session.getAttribute(“user”);

if (user == null) {

request.setAttribute(“msg”, “请先登录!”);

return “/index/index”;

// 模拟支付

orderService.pay(order);

request.setAttribute(“typeList”, typeService.getList());

request.setAttribute(“order”, orderService.get(order.getId()));

request.setAttribute(“msg”, “支付成功! 即将跳转到订单列表”);

return “/index/pay.jsp”;

/**

  • 查看订单

  • @return

*/

@RequestMapping(“/order”)

public String order(HttpSession session, Model model){

model.addAttribute(“flag”, 12);

Users user = (Users) session.getAttribute(“user”);

if (user == null) {

model.addAttribute(“msg”, “请登录后查看订单!”);

return “/index/index”;

model.addAttribute(“typeList”, typeService.getList());

model.addAttribute(“orderList”, orderService.getListByUserid(user.getId()));

return “/index/order.jsp”;

/**

  • 个人信息

  • @return

*/

@RequestMapping(“/my”)

public String my(HttpSession session, Model model){

model.addAttribute(“flag”, 11);

model.addAttribute(“typeList”, typeService.getList());

Users user = (Users) session.getAttribute(“user”);

if (user == null) {

model.addAttribute(“msg”, “请先登录!”);

return “/index/index”;

model.addAttribute(“user”, user);

return “/index/my.jsp”;

/**

  • 修改信息

  • @return

*/

@RequestMapping(“/updateUser”)

public String updateUser(Users user, HttpSession session, Model model){

model.addAttribute(“flag”, 11);

model.addAttribute(“typeList”, typeService.getList());

Users userLogin = (Users) session.getAttribute(“user”);

if (userLogin == null) {

model.addAttribute(“msg”, “请先登录!”);

return “/index/index”;

// 修改资料

Users u = userService.get(userLogin.getId());

u.setName(user.getName());

u.setPhone(user.getPhone());

u.setAddress(user.getAddress());

userService.update(u); // 更新数据库

session.setAttribute(“user”, u); // 更新session

model.addAttribute(“msg”, “信息修改成功!”);

return “/index/my.jsp”;

/**

  • 修改信息

  • @return

*/

@RequestMapping(“/updatePassword”)

public String updatePassword(Users user, HttpSession session, Model model){

model.addAttribute(“flag”, 11);

model.addAttribute(“typeList”, typeService.getList());

Users userLogin = (Users) session.getAttribute(“user”);

if (userLogin == null) {

model.addAttribute(“msg”, “请先登录!”);

return “/index/index”;

// 修改密码

Users u = userService.get(userLogin.getId());

if(user.getPasswordNew()!=null && !user.getPasswordNew().trim().isEmpty()) {

if (user.getPassword()!=null && !user.getPassword().trim().isEmpty()

&& SafeUtil.encode(user.getPassword()).equals(u.getPassword())) {

if (user.getPasswordNew()!=null && !user.getPasswordNew().trim().isEmpty()) {

u.setPassword(SafeUtil.encode(user.getPasswordNew()));

userService.update(u); // 更新数据库

session.setAttribute(“user”, u); // 更新session

model.addAttribute(“msg”, “密码修改成功!”);

return “redirect:logout”;

}else {

model.addAttribute(“msg”, “原密码错误!”);

return “/index/index”;

前台相关接口:

/**

  • 前台相关接口

*/

@Controller

@RequestMapping(“/index”)

public class IndexController{

private static final int rows = 8; // 默认每页数量

@Autowired

private TopService topService;

@Autowired

private GoodService goodService;

@Autowired

private TypeService typeService;

@Autowired

private SkuService skuService;

/**

  • 首页

  • @return

*/

@RequestMapping(“/index”)

public String index(HttpServletRequest request){

request.setAttribute(“flag”, -1);

List typeList = typeService.getList();

request.setAttribute(“typeList”, typeList);

List<Map<String, Object>> dataList = new ArrayList<>();

for(Types type : typeList) {

Map<String, Object> map = new HashMap<>();

map.put(“type”, type);

map.put(“goodList”, goodService.getListByType(type.getId(), 1, 8)); // 取前8个

dataList.add(map);

request.setAttribute(“dataList”, dataList);

return “/index/index.jsp”;

/**

  • 推荐列表

  • @return

*/

@RequestMapping(“/top”)

public String tops(int typeid, @RequestParam(required=false, defaultValue=“1”)int page, HttpServletRequest request) {

request.setAttribute(“flag”, typeid==2 ? 7 : 8);

request.setAttribute(“typeList”, typeService.getList());

request.setAttribute(“goodList”, goodService.getList(typeid, page, rows));

request.setAttribute(“pageHtml”, PageUtil.getPageHtml(request, goodService.getTotal(typeid), page, rows));

return “/index/goods.jsp”;

/**

  • 商品列表

  • @return

*/

@RequestMapping(“/goods”)

public String goods(int typeid, @RequestParam(required=false, defaultValue=“1”)int page, HttpServletRequest request){

request.setAttribute(“flag”, typeid);

request.setAttribute(“typeList”, typeService.getList());

request.setAttribute(“topList”, topService.getList(Tops.TYPE_SUPPER, 1, 4));

if (typeid > 0) {

request.setAttribute(“type”, typeService.get(typeid));

request.setAttribute(“goodList”, goodService.getListByType(typeid, page, rows));

request.setAttribute(“pageHtml”, PageUtil.getPageHtml(request, goodService.getTotalByType(typeid), page, rows));

return “/index/goods.jsp”;

/**

  • 商品详情

  • @return

*/

@RequestMapping(“/detail”)

public String detail(int goodid, HttpServletRequest request){

request.setAttribute(“typeList”, typeService.getList());

request.setAttribute(“topList”, topService.getList(Tops.TYPE_SUPPER, 1, 4));

Goods good = goodService.get(goodid);

request.setAttribute(“good”, good);

request.setAttribute(“type”, typeService.get(good.getTypeId()));

request.setAttribute(“colorList”, skuService.getColorList(goodid));

request.setAttribute(“sizeList”, skuService.getSizeList(goodid));

return “/index/detail.jsp”;

/**

  • 搜索

  • @return

*/

@RequestMapping(“/search”)

public String search(String name, @RequestParam(required=false, defaultValue=“1”)int page, HttpServletRequest request) {

if (Objects.nonNull(name) && !name.trim().isEmpty()) {

request.setAttribute(“goodList”, goodService.getListByName(name, page, rows));

request.setAttribute(“pageHtml”, PageUtil.getPageHtml(request, goodService.getTotalByName(name), page, rows));

request.setAttribute(“typeList”, typeService.getList());

return “/index/goods.jsp”;

/**

  • 查询库存

  • @param goodid

  • @param colorid

  • @param sizeid

  • @return

*/

@GetMapping(“/stock”)

public @ResponseBody int stock(int goodid, int colorid, int sizeid) {

return skuService.getStock(goodid, colorid, sizeid);


网选课系统是一个非常实用的系统,可以方便学生进行选课操作,也可以方便教师进行课程管理。下面是一个基于JavaWeb的网上选课系统的设计思路: 1. 系统架构 该系统采用 B/S 架构,即浏览器/服务器架构。前端使用 HTML、CSS、JavaScript 和 JQuery,后端使用 Java+SSM 框架和 MySQL 数据库。 2. 系统功能 (1)学生模块:学生可以登录系统后进行选课操作,查看已选课程,并对已选课程进行退选操作。 (2)教师模块:教师可以登录系统后进行课程管理操作,包括添加课程、修改课程、删除课程等操作。 (3)管理员模块:管理员可以登录系统后对学生和教师进行管理,包括添加学生、添加教师、修改学生信息、修改教师信息等操作。 (4)公告管理:管理员可以发布公告,学生和教师可以浏览公告。 (5)选课规则管理:管理员可以设置选课规则,例如每个学生最多选择多少门课程,每门课程最多选多少人等。 3. 数据库设计 该系统需要设计以下数据库表: (1)学生表:包括学生编号、学生姓名、学生性别、学生年龄、所在班级等字段。 (2)教师表:包括教师编号、教师姓名、教师性别、所教课程、教龄等字段。 (3)课程表:包括课程编号、课程名称、授课教师、上课时间、选课人数等字段。 (4)选课记录表:包括学生编号、课程编号等字段。 (5)公告表:包括公告编号、公告内容、发布时间等字段。 4. 技术实现 该系统采用 Java+SSM 框架进行实现,其中: (1)后端技术:采用 SpringMVC 框架进行控制器的开发,采用 MyBatis 框架进行数据库操作。 (2)前端技术:采用 HTML、CSS、JavaScript 和 JQuery 进行页面布局和交互效果的实现。 (3)数据库技术:采用 MySQL 数据库进行数据存储和管理。 5. 总结 网上选课系统是一个非常实用的系统,它可以方便学生进行选课操作,也可以方便教师进行课程管理。该系统采用 B/S 架构,采用 Java+SSM 框架进行开发,实现了学生模块、教师模块、管理员模块、公告管理和选课规则管理等功能。在实现时需要注意数据库表的设计和技术实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值