Java项目:SSM水果蔬菜商城批发网站
作者主页:夜未央5788
简介:Java领域优质创作者、Java项目、学习资料、技术互助
文末获取源码
项目介绍
本项目分为前后台,前台为普通用户登录,后台为管理员登录;
管理员角色包含以下功能:
管理员登录,管理员管理,网站用户管理,新闻公告管理,果蔬类型管理,城市信息管理,配货点管理,果蔬商品管理,果蔬订单管理,果蔬评价管理等功能。
用户角色包含以下功能:
用户首页,用户登录注册,查看某一个商品,加入购物车,填写配货信息,查看我的订单,查看系统公告,查看销售网络等功能。
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.数据库:MySql 5.7版本;
6.是否Maven项目:否;
技术栈
1. 后端:Spring+SpringMVC+Mybatis
2. 前端:JSP+CSS+JavaScript+jQuery
使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中springmvc-servlet.xml配置文件中的数据库配置改为自己的配置;
4. 运行项目,在浏览器中输入http://localhost:8080/ 登录
用户账号/密码: user/123456
管理员账号/密码:admin/admin
运行截图
前台界面 ![](/assets/blank.gif)
后台界面
代码相关
管理端控制器
//定义为控制器
@Controller
// 设置路径
@RequestMapping(value = "/admin", produces = "text/plain;charset=utf-8")
public class AdminAction extends BaseAction {// 注入Service 由于标签的存在 所以不需要getter setter@Autowired@Resourceprivate AdminService adminService;// 管理员登录 1 验证用户名是否存在 2 验证密码是否正确@RequestMapping("login.action")public String login() {String username = this.getRequest().getParameter("username");String password = this.getRequest().getParameter("password");Admin adminEntity = new Admin();adminEntity.setUsername(username);List<Admin> adminlist = this.adminService.getAdminByCond(adminEntity);if (adminlist.size() == 0) {this.getRequest().setAttribute("message", "用户名不存在");return "admin/index";} else {Admin admin = adminlist.get(0);if (password.equals(admin.getPassword())) {this.getSession().setAttribute("adminid", admin.getAdminid());this.getSession().setAttribute("adminname", admin.getUsername());this.getSession().setAttribute("realname", admin.getRealname());} else {this.getRequest().setAttribute("message", "密码错误");return "admin/index";}}return "admin/main";}// 修改密码@RequestMapping("editpwd.action")public String editpwd() {String adminid = (String) this.getSession().getAttribute("adminid");String password = this.getRequest().getParameter("password");String repassword = this.getRequest().getParameter("repassword");Admin admin = this.adminService.getAdminById(adminid);if (password.equals(admin.getPassword())) {admin.setPassword(repassword);this.adminService.updateAdmin(admin);} else {this.getRequest().setAttribute("message", "旧密码错误");}return "admin/editpwd";}// 管理员退出登录@RequestMapping("exit.action")public String exit() {this.getSession().removeAttribute("adminid");this.getSession().removeAttribute("adminname");this.getSession().removeAttribute("realname");return "admin/index";}// 准备添加数据@RequestMapping("createAdmin.action")public String createAdmin() {return "admin/addadmin";}// 添加数据@RequestMapping("addAdmin.action")public String addAdmin(Admin admin) {admin.setAddtime(VeDate.getStringDateShort());this.adminService.insertAdmin(admin);return "redirect:/admin/createAdmin.action";}// 通过主键删除数据@RequestMapping("deleteAdmin.action")public String deleteAdmin(String id) {this.adminService.deleteAdmin(id);return "redirect:/admin/getAllAdmin.action";}// 批量删除数据@RequestMapping("deleteAdminByIds.action")public String deleteAdminByIds() {String[] ids = this.getRequest().getParameterValues("adminid");for (String adminid : ids) {this.adminService.deleteAdmin(adminid);}return "redirect:/admin/getAllAdmin.action";}// 更新数据@RequestMapping("updateAdmin.action")public String updateAdmin(Admin admin) {this.adminService.updateAdmin(admin);return "redirect:/admin/getAllAdmin.action";}// 显示全部数据@RequestMapping("getAllAdmin.action")public String getAllAdmin(String number) {List<Admin> adminList = this.adminService.getAllAdmin();PageHelper.getPage(adminList, "admin", null, null, 10, number, this.getRequest(), null);return "admin/listadmin";}// 按条件查询数据 (模糊查询)@RequestMapping("queryAdminByCond.action")public String queryAdminByCond(String cond, String name, String number) {Admin admin = new Admin();if (cond != null) {if ("username".equals(cond)) {admin.setUsername(name);}if ("password".equals(cond)) {admin.setPassword(name);}if ("realname".equals(cond)) {admin.setRealname(name);}if ("contact".equals(cond)) {admin.setContact(name);}if ("addtime".equals(cond)) {admin.setAddtime(name);}}List<String> nameList = new ArrayList<String>();List<String> valueList = new ArrayList<String>();nameList.add(cond);valueList.add(name);PageHelper.getPage(this.adminService.getAdminByLike(admin), "admin", nameList, valueList, 10, number, this.getRequest(), "query");name = null;cond = null;return "admin/queryadmin";}// 按主键查询数据@RequestMapping("getAdminById.action")public String getAdminById(String id) {Admin admin = this.adminService.getAdminById(id);this.getRequest().setAttribute("admin", admin);return "admin/editadmin";}public AdminService getAdminService() {return adminService;}public void setAdminService(AdminService adminService) {this.adminService = adminService;}}
订单管理控制器
//定义为控制器
@Controller
// 设置路径
@RequestMapping(value = "/orders" , produces = "text/plain;charset=utf-8")
public class OrdersAction extends BaseAction {
// 注入Service 由于标签的存在 所以不需要getter setter
@Autowired
@Resource
private OrdersService ordersService;
@Autowired
@Resource
private UsersService usersService;// 准备添加数据
@RequestMapping("createOrders.action")
public String createOrders() {
List<Users> usersList = this.usersService.getAllUsers();
this.getRequest().setAttribute("usersList", usersList);
return "admin/addorders";
}
// 添加数据
@RequestMapping("addOrders.action")
public String addOrders(Orders orders) {
this.ordersService.insertOrders(orders);
return "redirect:/orders/createOrders.action";
}// 通过主键删除数据
@RequestMapping("deleteOrders.action")
public String deleteOrders(String id) {
this.ordersService.deleteOrders(id);
return "redirect:/orders/getAllOrders.action";
}// 批量删除数据
@RequestMapping("deleteOrdersByIds.action")
public String deleteOrdersByIds() {
String[] ids = this.getRequest().getParameterValues("ordersid");
for (String ordersid : ids) {
this.ordersService.deleteOrders(ordersid);
}
return "redirect:/orders/getAllOrders.action";
}// 更新数据
@RequestMapping("updateOrders.action")
public String updateOrders(Orders orders) {
this.ordersService.updateOrders(orders);
return "redirect:/orders/getAllOrders.action";
}
// 显示全部数据
@RequestMapping("getAllOrders.action")
public String getAllOrders(String number) {
List<Orders> ordersList = this.ordersService.getAllOrders();
PageHelper.getPage(ordersList, "orders", null, null, 10, number, this.getRequest(), null);
return "admin/listorders";
}// 按条件查询数据 (模糊查询)
@RequestMapping("queryOrdersByCond.action")
public String queryOrdersByCond(String cond, String name, String number) {
Orders orders = new Orders();
if(cond != null){
if ("ordercode".equals(cond)) {
orders.setOrdercode(name);
}
if ("username".equals(cond)) {
orders.setUsername(name);
}
if ("total".equals(cond)) {
orders.setTotal(name);
}
if ("status".equals(cond)) {
orders.setStatus(name);
}
if ("addtime".equals(cond)) {
orders.setAddtime(name);
}
}List<String> nameList = new ArrayList<String>();
List<String> valueList = new ArrayList<String>();
nameList.add(cond);
valueList.add(name);
PageHelper.getPage(this.ordersService.getOrdersByLike(orders), "orders", nameList, valueList, 10, number, this.getRequest(), "query");
name = null;
cond = null;
return "admin/queryorders";
}// 按主键查询数据
@RequestMapping("getOrdersById.action")
public String getOrdersById(String id ) {
Orders orders = this.ordersService.getOrdersById(id);
this.getRequest().setAttribute("orders", orders);
List<Users> usersList = this.usersService.getAllUsers();
this.getRequest().setAttribute("usersList", usersList);
return "admin/editorders";
}public OrdersService getOrdersService() { return ordersService; }public void setOrdersService(OrdersService ordersService) { this.ordersService = ordersService; }}
主题管理控制器
//定义为控制器
@Controller
// 设置路径
@RequestMapping(value = "/topic" , produces = "text/plain;charset=utf-8")
public class TopicAction extends BaseAction {// 注入Service 由于标签的存在 所以不需要getter setter@Autowired@Resourceprivate TopicService topicService;@Autowired@Resourceprivate UsersService usersService;@Autowired@Resourceprivate JiancaiService jiancaiService;// 准备添加数据@RequestMapping("createTopic.action")public String createTopic() {List<Users> usersList = this.usersService.getAllUsers();this.getRequest().setAttribute("usersList", usersList);List<Jiancai> jiancaiList = this.jiancaiService.getAllJiancai();this.getRequest().setAttribute("jiancaiList", jiancaiList);return "admin/addtopic";}// 添加数据@RequestMapping("addTopic.action")public String addTopic(Topic topic) {this.topicService.insertTopic(topic);return "redirect:/topic/createTopic.action";}// 通过主键删除数据@RequestMapping("deleteTopic.action")public String deleteTopic(String id) {this.topicService.deleteTopic(id);return "redirect:/topic/getAllTopic.action";}// 批量删除数据@RequestMapping("deleteTopicByIds.action")public String deleteTopicByIds() {String[] ids = this.getRequest().getParameterValues("topicid");for (String topicid : ids) {this.topicService.deleteTopic(topicid);}return "redirect:/topic/getAllTopic.action";}// 更新数据@RequestMapping("updateTopic.action")public String updateTopic(Topic topic) {this.topicService.updateTopic(topic);return "redirect:/topic/getAllTopic.action";}// 显示全部数据@RequestMapping("getAllTopic.action")public String getAllTopic(String number) {List<Topic> topicList = this.topicService.getAllTopic();PageHelper.getPage(topicList, "topic", null, null, 10, number, this.getRequest(), null);return "admin/listtopic";}// 按条件查询数据 (模糊查询)@RequestMapping("queryTopicByCond.action")public String queryTopicByCond(String cond, String name, String number) {Topic topic = new Topic();if(cond != null){if ("username".equals(cond)) {topic.setUsername(name);}if ("jiancainame".equals(cond)) {topic.setJiancainame(name);}if ("num".equals(cond)) {topic.setNum(name);}if ("contents".equals(cond)) {topic.setContents(name);}if ("addtime".equals(cond)) {topic.setAddtime(name);}}List<String> nameList = new ArrayList<String>();List<String> valueList = new ArrayList<String>();nameList.add(cond);valueList.add(name);PageHelper.getPage(this.topicService.getTopicByLike(topic), "topic", nameList, valueList, 10, number, this.getRequest(), "query");name = null;cond = null;return "admin/querytopic";}// 按主键查询数据@RequestMapping("getTopicById.action")public String getTopicById(String id ) {Topic topic = this.topicService.getTopicById(id);this.getRequest().setAttribute("topic", topic);List<Users> usersList = this.usersService.getAllUsers();this.getRequest().setAttribute("usersList", usersList);List<Jiancai> jiancaiList = this.jiancaiService.getAllJiancai();this.getRequest().setAttribute("jiancaiList", jiancaiList);return "admin/edittopic";}public TopicService getTopicService() { return topicService; }public void setTopicService(TopicService topicService) { this.topicService = topicService; }}
如果也想学习本系统,下面领取。关注并回复:158ssm
Java项目:SSM水果蔬菜商城批发网站相关推荐
- 基于SSM水果蔬菜商城批发网站|电商购物系统
<SSM水果蔬菜商城批发网站>该项目采用的技术实现如下:HTML+CSS+JavaScript+jsp+Spring+SpringMVC+Mybatis+Mysql数据库+Tomcat服务 ...
- SSM水果蔬菜商城批发网站
<SSM水果蔬菜商城批发网站>该项目采用的技术实现如下:HTML+CSS+JavaScript+jsp+Spring+SpringMVC+Mybatis+Mysql数据库+Tomcat服务 ...
- Java项目源码下载SSM水果蔬菜商城批发网站|电商购物系统
- 计算机毕业论文选题SSM水果蔬菜商城批发网站|电商购物系统[包运行成功]
- 基于java+jsp+ssm水果蔬菜销售系统-计算机毕业设计
项目介绍 生活中,人们买水果或者蔬菜都是去菜市场买,因为那里是卖水果.蔬菜的聚集地.农商们把水果.蔬菜从远处运到那里,进行销售.但是这种销售方式的不足在于每次运输的数量是有限的,并且运输过程中也影响了 ...
- 基于java+jsp+ssm水果蔬菜销售系统
生活中,人们买水果或者蔬菜都是去菜市场买,因为那里是卖水果.蔬菜的聚集地.农商们把水果.蔬菜从远处运到那里,进行销售.但是这种销售方式的不足在于每次运输的数量是有限的,并且运输过程中也影响了水果.蔬菜 ...
- 基于java+jsp+ssm水果蔬菜销售系统——计算机毕业设计
生活中,人们买水果或者蔬菜都是去菜市场买,因为那里是卖水果.蔬菜的聚集地.农商们把水果.蔬菜从远处运到那里,进行销售.但是这种销售方式的不足在于每次运输的数量是有限的,并且运输过程中也影响了水果.蔬菜 ...
- Java项目:网上水果蔬菜项目系统设计和实现(java+springboot+mysql+ssm)
源码获取:博客首页 "资源" 里下载! 主主要技术:java springmvc springboot mybatis mysql jquery layui 等技术要模块设计如 ...
- Java项目:网上水果超市商城设计和实现(java+SSM+springboot+redis)
源码获取:本博客首页 "资源" 处下载! 主要技术实现:spring. springmvc. redis. springboot. mybatis .session. jquer ...
最新文章
- 2021年中国工业互联网安全大赛核能行业赛道writeup之鱿鱼游戏
- 解决了一个小问题 好像把逻辑有点复杂
- codeforces CF438D The Child and Sequence 线段树
- 802. 找到最终的安全状态
- 粒子群优化算法(Particle Swarm Optimization)的 Matlab(R2018b)代码实现
- matlab样条插值如何用,三次样条插值matlab实现
- sql 存储过程 并发测试_SQL单元测试模拟存储过程
- BLE - LINK LAYER SPECIFICATION
- 有关于Java中JFrame方法的基本操作
- 97年世界黑客编程大赛冠军作品(大小仅为16KB),惊艳世界的编程巨作
- IDEA插件系列(45):UUID Generator插件——UUID生成器
- lammps数据后处理:Python ovito 计算输出位错线长度
- 在C#中将Base64编码的WOFF字符串转OTF字体并动态加载
- 夜神模拟器7.12 安装 xposed
- Win系统 - N卡如何组建三联屏?
- 如何用开源软件办一场技术大会?
- Pigeon发布流程
- html自动补位的功能,js中位数不足自动补位扩展padLeft、padRight实现代码
- 【数据结构课程设计】基于商和余数的快速排序
- download sources报错: Cannot connect to the Maven process. Try again later. If the problem persists
热门文章
- 机器人锤石下路组合_英雄联盟下路对线,锤石克制什么下路组合,怕什么下路组合,为什么?...
- 【软件】一个简单文件批量重命名工具,支持正则替换
- 解除隐藏文件cmd命令_如何用cmd命令隐藏电脑上的文件?
- 微信小程序 满意度调查问卷答题类小程序实现
- asift matlab,周晓
- VS2010 MFC TeeChart控件命名
- flask-day3:模板引擎jinja2|JsonResponse|页面url_for|
- 计算机的小结怎么写,计算机专业技术个人小结怎么写
- python之组合数据
- 喇叭-耳机-功放-音响