👉文末查看项目功能视频演示+获取源码+sql脚本+视频导入教程视频
1 、功能描述
基于SSH的宠物管理系统(宠物商店)拥有两种角色,分别为管理员和用户,具体功能如下:
用户:首页浏览宠物信息、购买宠物、个人订单管理、留言、修改个人信息等
管理员:宠物管理、宠物类型管理、订单管理、公告管理、留言管理、用户管理等
2、背景介绍
随着近年来中国经济的快速发展,人民水平的提高。人们的购物需求日益剧增,与传统购物销售不同的是,网上商城是当下最热门的方式。
为满足用户需求,实现一个基于JSP技术和MySQL数据库技术开发的购物销售系统。本系统基于B/S模式,采用SSH框架,使用MVC架构设计而成。在设计过程中,借鉴国内外优秀网站的设计,网站界面简洁、大方,便于用户操作,用户良好性高,而后台设计内容丰富,是的管理员管理后台得心应手。通过本系统将实现用户随时随地在网上浏览、购买购物,也便于商家管理购物销售、挖掘潜在客户,凭借互联网思维,为购物销售开创一个新的渠道。
3、项目技术
后端框架:SSH(Spring、Struts、Hibernate)
前端框架:Easyui、jsp、css、JavaScript、JQuery
3.1 SSH
SSH是 struts+spring+hibernate的一个集成框架,是16年之前较为流行的一种Web应用程序开源框架。区别于 Secure Shell 。
集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。
3.2 mysql
MySQL是一款Relational Database Management System,直译过来的意思就是关系型数据库管理系统,MySQL有着它独特的特点,这些特点使他成为目前最流行的RDBMS之一,MySQL想比与其他数据库如ORACLE、DB2等,它属于一款体积小、速度快的数据库,重点是它符合本次毕业设计的真实租赁环境,拥有成本低,开发源码这些特点,这也是选择它的主要原因。
本系统使用了MySQL数据库,建立了多张数据库表来存储租赁以及汽车租赁平台相关数据。系统中主要应用查询(select),修改(update),删除(delete)以及增加(insert)等语句来实现系统功能。
3、开发环境
- JAVA版本:JDK1.8,其它版本理论上可以
- IDE类型:IDEA、Eclipse、Myeclipse都可以。推荐IDEA与Eclipse
- tomcat版本:Tomcat 7.x、8.x、9.x、10.x版本均可
- 数据库版本:MySql 5.x
- 是否为maven:否
- 硬件环境:Windows 或者 Mac OS
4、功能截图+视频演示+文档目录
4.1 登录与注册
用户可以通过此界面登录系统,以及通过注册界面进行注册。注册时,前端会自动进行信息校验。
4.2 用户模块
首页功能:用户可以根据类型筛选宠物,查看重新详情,将宠物加入购物车,直接购买宠物等
个人订单管理:用户可以根据订单看查看自己的订单信息
其它功能:用户可以系统留言、修改个人信息
4.3 管理员模块
宠物管理:管理员可以通过宠物名称模糊查询宠物,还可以增加、删除、修改宠物信息,以及设置为热卖、特价等
宠物类型管理:管理员可以通过名称筛选类型,并能增加、删除、修改类型信息
订单管理:管理员可以通过订单号和订单人搜索订单信息,还可以查看订单详情、审核订单、修改发货状态
公告管理:管理员可以通过名称筛选公告,并能增加、删除、修改公告信息
留言管理:管理员可以通过名称筛选留言,并能增加、删除、修改留言信息,还可以回复用户的信息
用户管理:管理员可以通过用户名筛选用户,并能增加、删除、修改用户信息
5 、核心代码实现
5.1 配置代码
<?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:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="com.mysql.cj.jdbc.Driver">
</property>
<property name="url"
value="jdbc:mysql://localhost:3306/db_ebuy?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true">
</property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
<!-- session工厂 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="configLocation" value="classpath:hibernate.cfg.xml"/>
<!-- 自动扫描注解方式配置的hibernate类文件 -->
<property name="packagesToScan">
<list>
<value>com.briup.entity</value>
</list>
</property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 配置事务通知属性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<!-- 定义事务传播属性 -->
<tx:attributes>
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="edit*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="new*" propagation="REQUIRED" />
<tx:method name="set*" propagation="REQUIRED" />
<tx:method name="remove*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="change*" propagation="REQUIRED" />
<tx:method name="get*" propagation="REQUIRED" read-only="true" />
<tx:method name="find*" propagation="REQUIRED" read-only="true" />
<tx:method name="load*" propagation="REQUIRED" read-only="true" />
<tx:method name="*" propagation="REQUIRED" read-only="true" />
</tx:attributes>
</tx:advice>
<!-- 配置事务切面 -->
<aop:config>
<aop:pointcut id="serviceOperation"
expression="execution(* com.briup.service.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation" />
</aop:config>
<!-- 自动加载构建bean -->
<context:component-scan base-package="com.briup" />
</beans>
5.2 登录+注册+其它代码
/**
* 判断指定用户名的用户是否存在
* @return
* @throws Exception
*/
public String existUserWithUserName()throws Exception{
boolean exist=userService.existUserWithUserName(userName);
//写入JSON对象
JSONObject result=new JSONObject();
if(exist){
//用户存在
result.put("exist", true);
}else{
//用户不存在
result.put("exist", false);
}
ResponseUtil.write(ServletActionContext.getResponse(), result);
return null;
}
/**
* 用户注册
* @return
* @throws Exception
*/
public String register()throws Exception{
userService.saveUser(user);
return "register_success";
}
/**
* 用户登录
* @return
* @throws Exception
*/
public String login()throws Exception{
HttpSession session=request.getSession();
//当前用户
User currentUser=userService.login(user);
//判断用户类型
if(currentUser==null){
error="用户名或密码为空!";
if(user.getStatus()==2){
return "adminError";
}else{
return ERROR;
}
}
//验证验证码
else if(!imageCode.equals(session.getAttribute("sRand"))){
error="验证码错误";
if(user.getStatus()==2){
return "adminError";
}else{
return ERROR;
}
}else{
session.setAttribute("currentUser", currentUser);
}
if(currentUser.getStatus()==2){
return "adminLogin";
}else{
return "login";
}
}
/**
* 注销用户
* @throws Exception
*/
public String logout()throws Exception{
request.getSession().invalidate();
return "logout";
}
/**
* 管理员注销
* @return
* @throws Exception
*/
public String logout2()throws Exception{
request.getSession().invalidate();
return "logout2";
}
/**
* 用户中心
* @return
* @throws Exception
*/
public String userCenter()throws Exception{
navCode=NavUtil.genNavCode("个人中心");
mainPage="userCenter/ucDefault.jsp";
return "userCenter";
}
/**
* 获取用户信息
* @return
* @throws Exception
*/
public String getUserInfo()throws Exception{
navCode=NavUtil.genNavCode("个人中心");
mainPage="userCenter/userInfo.jsp";
return "userCenter";
}
/**
* 修改个人信息预操作
* @return
* @throws Exception
*/
public String preSave()throws Exception{
HttpSession session=request.getSession();
user=(User)session.getAttribute("currentUser");
navCode=NavUtil.genNavCode("个人中心");
mainPage="userCenter/userSave.jsp";
return "userCenter";
}
/**
* 保存用户信息
* @return
* @throws Exception
*/
public String save()throws Exception{
HttpSession session=request.getSession();
userService.saveUser(user);
session.setAttribute("currentUser", user);
navCode=NavUtil.genNavCode("个人中心");
mainPage="userCenter/userInfo.jsp";
return "userCenter";
}
/**
* 后台-保存用户信息
* @return
* @throws Exception
*/
public String saveUser()throws Exception{
userService.saveUser(user);
JSONObject result=new JSONObject();
result.put("success", true);
ResponseUtil.write(ServletActionContext.getResponse(), result);
return null;
}
/**
* 分页查询用户信息
* @return
* @throws Exception
*/
public String list()throws Exception{
//分页查询
PageBean pageBean=new PageBean(Integer.parseInt(page),Integer.parseInt(rows));
List<User> userList=userService.findUserList(s_user, pageBean);
//获取总记录数
long total=userService.getUserCount(s_user);
//封装JSON串
JsonConfig jsonConfig = new JsonConfig();
//过滤orderlist
jsonConfig.setExcludes(new String[]{"orderList"});
//处理JSON传来的时间格式
jsonConfig.registerJsonValueProcessor(java.util.Date.class, new DateJsonValueProcessor("yyyy-MM-dd"));
JSONArray rows=JSONArray.fromObject(userList,jsonConfig);
JSONObject result=new JSONObject();
result.put("rows", rows);
result.put("total", total);
ResponseUtil.write(ServletActionContext.getResponse(), result);
return null;
}
/**
* 删除用户
* @return
* @throws Exception
*/
public String deleteUsers()throws Exception{
JSONObject result=new JSONObject();
String []idsStr=ids.split(",");
for(int i=0;i<idsStr.length;i++){
User u=userService.getUserById(Integer.parseInt(idsStr[i]));
userService.delete(u);
}
result.put("success", true);
ResponseUtil.write(ServletActionContext.getResponse(), result);
return null;
}
/**
* 修改密码
* @return
* @throws Exception
*/
public String modifyPassword()throws Exception{
User u=userService.getUserById(user.getId());
u.setPassword(user.getPassword());
userService.saveUser(u);
JSONObject result=new JSONObject();
result.put("success", true);
ResponseUtil.write(ServletActionContext.getResponse(), result);
return null;
}
public void setServletRequest(HttpServletRequest request) {
// TODO Auto-generated method stub
this.request=request;
}