一个简单的SSM增删改查商品和订单系统

一个简单的ssm系统,作为这周课程设计的作业,也大概明白了ssm的基本结构,希望能帮助刚接触ssm框架的同学。我所用的是Mysql数据库。

描述:
顾客:登录,新增订单,查询所有商品
管理员:查询所有商品,修改商品信息,新增商品,删除商品。
效果展示:
登录界面:
在这里插入图片描述
用户登录界面:
在这里插入图片描述
购买界面
在这里插入图片描述
在这里插入图片描述
管理员登录:
新增商品
在这里插入图片描述
以及修改商品
在这里插入图片描述
一、目录结构:
在这里插入图片描述
二、配置文件
applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
           http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
	<!-- 指定需要扫描的包,注解生效 -->
	<context:component-scan base-package="com.dao" />
	<context:component-scan base-package="com.controller" />
	<context:component-scan base-package="com.service" />
	<!-- 扫描数据池 -->
	<context:property-placeholder
		location="classpath:jdbc_mysql.properties" ignore-resource-not-found="false" local-override="false"  />
	<!-- 配置数据源 -->
		<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
		<!-- Mysql数据库驱动 -->
		<property name="driverClassName" value="${jdbc.driver}" />
		<!-- URL -->
		<property name="url" value="${jdbc.url}" />
		<!-- Username -->
		<property name="username" value="${jdbc.username}" />
		<!-- password -->
		<property name="password" value="${jdbc.password}" />
		<!-- 最大链接数 -->
		<property name="maxTotal" value="30" />
		<!-- 最大空闲链接数 -->
		<property name="maxIdle" value="10" />
		<!-- 初始化连接数 -->
		<property name="initialSize" value="5" />
		</bean>

	<!-- 为数据源添加事物管理器 -->
	<bean id="txManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	
	<!-- 开启事物注解 -->
	<tx:annotation-driven transaction-manager="txManager"/>
	
	<!-- 配置Mybatis工厂,同时指定数据源,并与Mybatis完美整合 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<!--configLocation 的属性值为 MyBatis 的核心配置文件  -->
		<property name="configLocation" value="classpath:com/mybatis/mybatis-config.xml" />
	</bean>
	
	<!-- Mapper 代理开发,使用 Spring 自动扫描 MyBatis的接口并装配
	(Spring 将指定包中所有被@Mapper 注解标注的接口自动装配为 MyBatis 的映射接口 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<!-- mybatis-spring组件的扫描器 -->
		<property name="basePackage" value="com.dao" />
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
	</bean>
	<context:component-scan base-package="com.service"></context:component-scan>
</beans>

数据库连接文件
jdbc_mysql.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localHost:3306/test?characterEncoding=utf8&serverTimezone=UTC
jdbc.username=root
jdbc.password=129869

日志文件
log4j.properties


### Global logging configuration
log4j.rootLogger=ERROR, stdout

### Uncomment for MyBatis logging
log4j.logger.org.apache.ibatis=ERROR

### Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

springmvc-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
           http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
	<!-- 使用扫描机制扫描控制器类,控制器类都在 controller 包及其子包下 -->
	<context:component-scan base-package="com.controller" />
	<mvc:annotation-driven />
	<!-- annotation-driven 用于简化开发的配置, 注解 DefaultAnnotationHandlerMapping AnnotationMethodHandlerAdapter -->
	<!-- 允许css目录下的所有文件可见 -->
	<mvc:resources location="/css/" mapping="/css/**" />
	<!-- html -->
	<mvc:resources location="/html/" mapping="/html/**" />
	<mvc:resources location="/jsp/" mapping="/jsp/**" />
	<mvc:resources location="/js/" mapping="/js/**" />
	<mvc:resources location="/images/" mapping="/images/**" />
	<mvc:resources location="/fonts/" mapping="/fonts/**" />
	<!-- 配置视图解析器ViewResolver -->
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver"
		id="internalResourceViewResolver">
		<!-- 前缀 -->
		<property name="prefix" value="/WEB-INF/jsp/" />
		<!-- 后缀 -->
		<property name="suffix" value=".jsp"></property>
	</bean>

</beans>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>ChooseEachother</display-name>
  <welcome-file-list>
    <welcome-file>Login.html</welcome-file>
    <welcome-file>Login.htm</welcome-file>
    <welcome-file>Login.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  	<!-- 实例化容器 -->
  	<context-param>
  	<param-name>contextConfigLocation</param-name>
  	<param-value>
  	classpath:applicationContext.xml
  	</param-value>
  	</context-param>
  	
  	<listener>
  	<listener-class>
  	org.springframework.web.context.ContextLoaderListener
  	</listener-class>
  	</listener>
	<!-- 部署DispatcherServlet -->
	<servlet>
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!-- 表示容器在启动时立即加载servlet -->
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<!-- 处理所有url -->
		<url-pattern>/</url-pattern>
	</servlet-mapping>
	
	<!-- 避免乱码 -->
	 <filter>
		<filter-name>characterEncodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
 </filter>
	<filter-mapping>
		<filter-name>characterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
</web-app>

三、控制类
对于这个系统有两个表,也有两个控制类
GoodsController.java

package com.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.po.Goods;
import com.service.GoodsService;

@Controller("goodsController")
@RequestMapping("/goods")
public class GoodsController {
	@Autowired
	private GoodsService goodsService;
	//管理员登录
	@RequestMapping("/adminlogin")
	public String AdminLogin(Model model) {
		return "manageAllGoods";
	}
	// 顾客登录
	@RequestMapping("/login")
	public String Login(String account, String password, Model model) {
		if ("jyq".equals(account) &&  "123456".equals(password)||"rezheaiba".equals(account) && "123456".equals(password)) {
			model.addAttribute("account", account);
			model.addAttribute("password", password);
			return "redirect:/goods/selectAllGoods";
		}else {
			model.addAttribute("massage", "用户名或密码错误!您可以先浏览以下商品!");
			return "selectAllGoods";
		}
	}

	// 显示所有商品,顾客用
	@RequestMapping("/selectAllGoods")
	public String selectAllGoods(Model model) {
		List<Goods> allGoods = goodsService.selectAllGoods();
		model.addAttribute("allGoods", allGoods);
		return "selectAllGoods";
	}
	
	//管理所有商品,管理员用
	@RequestMapping("/manageAllGoods")
	public String manageAllGoods(Model model) {
		List<Goods> allGoods = goodsService.selectAllGoods();
		model.addAttribute("allGoods", allGoods);
		return "manageAllGoods";
		}
	
	//管理员删除商品
	@RequestMapping("/deleteGoods")
	public String deleteGoods(int goodsId) {
		goodsService.deleteGoods(goodsId);
		return "redirect:/goods/manageAllGoods";
		}
	
	//管理员添加商品信息
	@RequestMapping("/insertGoods")
	public String insertGoods(String goodsname,String goodsprice) {
		Goods goods = new Goods(goodsname,Double.parseDouble(goodsprice));
		goodsService.insertGoods(goods);
		return "redirect:/goods/manageAllGoods";
	}
	
	//跳转到修改商品信息页面
	@RequestMapping("/infoGoods")
	public String infoGoods(int goodsId,Model model) {
		model.addAttribute("gid", goodsId);
		return "updateGoods";
		}
	
	//管理员修改商品
		@RequestMapping("/updateGoods")
		public String updateGoods(String gid,String gsname,String price ) {
			Goods goods = new Goods(gsname,Double.parseDouble(price));
			goods.setGoodsId(Integer.parseInt(gid));
			goodsService.updateGoods(goods);
			return "redirect:/goods/manageAllGoods";
			}
}

OrdersController.java

package com.controller;


import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.po.Orders;
import com.service.OrdersService;

@Controller("ordersController")
@RequestMapping("/orders")
public class OrdersController {
	@Autowired
	private OrdersService ordersService;
	
	//跳转至购买页面,去填写个人信息
	@RequestMapping("/buyGoods")
	public String buyGoods(String gname, Model model) {
		model.addAttribute("gname", gname);
		return "BuyGoods";
	}
	
	@RequestMapping("/selectAllOrders")
	public String selectAllOrders(Model model) {
		List<Orders> orders =  ordersService.selectAllOrders();
		model.addAttribute("myorders", orders);
		return "myOrders";
	}
	//insert订单
	@RequestMapping("/myOrders")
	public String myOrders(String gname,String inputName,String inputPhoneNumber,String inputAddress) {
		int max=10000,min=1;
		int ordernumber = (int) (Math.random()*(max-min)+min); 
		Orders orders = new Orders(inputName,Integer.parseInt(inputPhoneNumber),gname,inputAddress,ordernumber,new Date());
		ordersService.insertOrders(orders);
		return "redirect:/orders/selectAllOrders";
	}
}

其他文件懒得粘贴了,有需要的可自行获取
https://download.csdn.net/download/weixin_45095712/12598411
https://github.com/rezheaiba/rzab

  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 超市订单管理系统一个复杂的系统,它需要涉及到用户管理、商品管理、订单管理等多个方面。狂神使用SSM框架来重构这个系统,使系统更加稳定、可靠、易于维护。 首先,他使用Spring框架进行依赖注入和AOP编程,实现各个模块之间的解耦,在改动一处的同时不会影响到其他模块,使得整个系统更加稳健。 其次,他使用MyBatis作为ORM框架,实现了数据库操作的易用性和高效性。MyBatis的插件机制和动态SQL功能可以让程序员更加轻松地实现对数据库的操作,提高了软件开发的效率。 最后,他使用Spring MVC框架来实现前端页面的交互,使得用户可以轻松地操作系统,增加了用户体验度。并且,通过Spring的IOC容器和AOP编程,狂神实现了系统的集中式异常处理,用户在使用系统过程中,不会因为出现异常而影响使用。 狂神的超市订单管理系统重构,让系统更加稳定、易维护,提高了开发效率和用户体验度。这个案例也证明了SSM框架的强大功能和应用价,对于企业级系统开发来说,是一个十分优秀的选择。 ### 回答2: 狂神在自己的视频教程中提到了用SSM框架一个超市订单管理系统进行重构的例子。 首先,SSM框架是由Spring、Spring MVC和MyBatis三种技术整合而成。这三种技术分别负责控制反转、Web框架和数据访问层。使用SSM框架可以减少大量的重复代码和配置,提高代码的可重用性和可维护性。 在重构超市订单管理系统时,狂神先是将原有的代码进行细致的分析和改进,采用了更加规范的MVC(Model-View-Controller)架构,将原本混乱的代码分离成不同的层级:表示层、业务逻辑层、数据持久层。这样的分层模式可以让项目更加易于维护、扩展和调试。 接下来,狂神按照MVC的模式,使用Spring MVC作为控制层框架,依托Spring IOC容器创建各个对象,并通过IOC容器进行管理和调用。在视图层上,采用JSP进行页面的渲染和展示,提高了页面的效率和性能。 在业务逻辑层上,狂神使用了Spring的声明式事务管理来处理数据的一致性和安全。 最后,在数据持久层上,狂神使用MyBatis框架处理数据的增删改查,通过XML文件映射Java对象和数据库中的表格,将数据访问层与业务逻辑层进行解耦。 总的来说,通过使用SSM框架,狂神成功地将超市订单管理系统进行了重构,大大提高了代码的可读性与可维护性。同时,他也用此实例向学生们传授了如何面对既有代码进行重构的知识技能。 ### 回答3: 狂神所提及的超市订单管理系统是使用SSM(Spring+Spring MVC+MyBatis框架进行重构的一个项目。该系统主要是针对超市中的订单进行管理和处理,包括订单的添加、修改、查询、删除等操作。 在使用SSM框架对该系统进行重构时,主要是通过Spring框架进行项目的IOC(控制反转)和AOP(面向切面编程),Spring MVC框架进行前端控制,MyBatis框架进行数据访问和持久化操作。这种设计极大地提高了系统的性能、可维护性和扩展性,并且减少了重复代码和程序员的开发时间。 在该超市订单管理系统中,主要包括了订单管理、商品管理、用户管理和数据统计等模块,这些模块的整合使用提高了系统的功能性和用户的体验。此外,还可以在这些模块之间进行数据的传递和共享,从而避免了数据冗余和重复操作的问题。 总之,该超市订单管理系统的重构使用SSM框架进行,极大地提高了系统的整体性能和可靠性。它可以更好地满足现代企业对信息化管理的需求,通过技术手段更好地为企业创造价

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值