基于Springboot的高校二手交易网站平台设计与实现
系统还可提供用户对自己发表的供求信息的删除,以及对用户信息的修改功能,可以方便用户对自己基本信息的管理。随着科技的迅速发展校园二手商品交易市场也不仅仅局限于校园内摆地摊的形式,大家更多的是使用手机线上购物,我们的项目就是基于这样的局面产生的,让同学们足不出户就可以淘到自己所需要的物美价廉的物品。•开学季、毕业季校园出现大量的学生自发起的购物小摊,给校园带来了拥挤,不便管理等安全隐患,也带来了不好的
目录
摘 要 1
Abstract 2
1.项目简介 3
1.1项目背景 3
1.2系统概述 4
1.3系统功能描述 5
2.数据库设计 9
2.1表结构 9
2.2ER图 13
3.系统设计 13
3.1项目配置 13
3.2druid数据源配置 15
3.3拦截器 16
3.4自定义注解:校验注解 17
3.5常用工具类 17
3.6业务代码 27
4.项目实现 29
4.1用户界面 29
4.2管理员页面 34
5.总结 40
1.项目简介
1.1项目背景
如今的大学校园中 随着大学生的购买能力的提高存在着两种局面。一是大学期间购买的收纳类、实用类物品,在毕业季大家面临带不走、不舍得扔的尴尬局面;二是购买的东西中越来越多的大家用不上的物品,这些物品成了大部分大学生的累赘。因此,低价卖掉这些仍可以继续利用的物品是一个两全其美的方法于是校园二手交易市场诞生了。
随着科技的迅速发展校园二手商品交易市场也不仅仅局限于校园内摆地摊的形式,大家更多的是使用手机线上购物,我们的项目就是基于这样的局面产生的,让同学们足不出户就可以淘到自己所需要的物美价廉的物品。
校园现状:
•开学季大量涌入的新生他们需要购置生活用品,学习材料,学习用品等,形成了大量购物的需求狂潮。
•毕业季老生离校带不走的生活用品,带不走的学习材料,形成了大量的浪费,令人可惜。
•平日需求里,由于大学生喜好买东西,闲置下来的东西,累积下来是个负担,需要置换来各取所需。
•开学季、毕业季校园出现大量的学生自发起的购物小摊,给校园带来了拥挤,不便管理等安全隐患,也带来了不好的校园风气。
等等……
1.2系统概述
校园二手交易网为用户提供了一个二手交易的平台。根据大中学校商品情况及学生的实际需求,系统的主要功能模块为信息分类、信息搜索、发布信息、用户注册登陆、管理后台等。在网站的设计中,分为前台和后台两个部分设计,前台主要用于提供用户注册和登陆、发布供求信息、查询供求信息、用户留言等功能,后台主要功能有用户管理、供求信息管理、信息分类管理、留言管理等。系统还可提供用户对自己发表的供求信息的删除,以及对用户信息的修改功能,可以方便用户对自己基本信息的管理。
学校二手交易平台的优点:
•提供创业条件,大学生创业项目规模小、竞争能力弱、资金实力不足,在保证合理学习的同时,还能勤工俭学。
•校园环境优化,在不影响大学生自主买卖,置换购物的同时,优化校园环境,给校园带来更好的管理。
响应国家、学校号召,构建校园二手交易市场不仅有利于“节能减排”,符合国家的绿色发展要求和可持续发展要求,为卖家学生和买家学生提供了完美结合的平台。二手交易市场的建立是对当前形势的响应,本文转载自http://www.biyezuopin.vip/onews.asp?id=14715体现了可持续发展的节约理念和绿色的环保理念,是建立节约型社会的方针政策。
3.1项目配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/springboot_base?serverTimezone=GMT%2b8&useUnicode=true&characterEncoding=utf8
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
oolPreparedStatements: true
#配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入
#如果允许时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority
#则导入 log4j 依赖即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4j
filters: stat,wall,log4j
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
devtools:
restart:
enabled: true
servlet:
multipart:
max-file-size: 3MB
mybatis:
mapper-locations: classpath:/mapper/*.xml
type-aliases-package: com.dong.pojo
configuration:
map-underscore-to-camel-case: true
photo:
uploadPhotoPath: D:/钱/pro/second_hand_market-master/springboot_base/src/main/resources/upload/
#uploadPhotoPath: /home/xiaodong/upload/
uploadPhotoSuffix: .jpg,.png,.gif,.jpeg
uploadPhotoMaxSize: 2048
title:
sysName: 广东理工学院
homeName: 广东理工二手街
menuTitle: 菜单列表
userTitle: 用户列表
roleTitle: 角色列表
logTitle: 日志列表
databaseTitle: 备份列表
categoryTitle: 分类列表
goodTitle: 物品列表
studentTitle: 学生列表
commentTitle: 评论列表
newsTitle: 新闻公告列表
3.2druid数据源配置
@Bean
public ServletRegistrationBean statViewServlet() {
ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
// 这些参数可以在 com.alibaba.druid.support.http.StatViewServlet
// 的父类 com.alibaba.druid.support.http.ResourceServlet 中找到
Map<String, String> initParams = new HashMap<>();
initParams.put("loginUsername", "admin"); //后台管理界面的登录账号
initParams.put("loginPassword", "123456"); //后台管理界面的登录密码
//后台允许谁可以访问
//initParams.put("allow", "localhost"):表示只有本机可以访问
//initParams.put("allow", ""):为空或者为null时,表示允许所有访问
initParams.put("allow", "");
//deny:Druid 后台拒绝谁访问
//initParams.put("kuangshen", "192.168.1.20");表示禁止此ip访问
//设置初始化参数
bean.setInitParameters(initParams);
return bean;
}
//配置 Druid 监控 之 web 监控的 filter
//WebStatFilter:用于配置Web和Druid数据源之间的管理关联监控统计
@Bean
public FilterRegistrationBean webStatFilter() {
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());
//exclusions:设置哪些请求进行过滤排除掉,从而不进行统计
Map<String, String> initParams = new HashMap<>();
initParams.put("exclusions", "*.js,*.css,/druid/*,/jdbc/*");
bean.setInitParameters(initParams);
//"/*" 表示过滤所有请求
bean.setUrlPatterns(Arrays.asList("/*"));
return bean;
}
3.3拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(homeIndexInterceptor).addPathPatterns("/**").excludePathPatterns(InterceptorConstant.homeGlobalExcludePathPatterns);
registry.addInterceptor(homeLoginInterceptor).addPathPatterns("/**").excludePathPatterns(InterceptorConstant.homeLoginExcludePathPatterns);
registry.addInterceptor(adminLoginInterceptor).addPathPatterns("/**").excludePathPatterns(InterceptorConstant.LoginExcludePathPatterns);
registry.addInterceptor(authorityInterceptor).addPathPatterns("/**").excludePathPatterns(InterceptorConstant.authorityExcludePathPatterns);
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("system/userinfo").setViewName("admin/system/update_userinfo");
registry.addViewController("system/login").setViewName("admin/system/login");
registry.addViewController("system/userPwd").setViewName("admin/system/update_pwd");
registry.addViewController("system/no_right").setViewName("admin/system/no_right");
registry.addViewController("home/student/goPublish").setViewName("/home/student/publish");
}
3.4自定义注解:校验注解
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Validata {
boolean required() default false;//是否检验null
boolean requiredLength() default false;//是否检验检验长度
boolean requiredMaxValue() default false;//是否检验最大值
boolean requiredMinValue() default false;//是否检验最小值
int maxLength() default -1;//最大长度
int minLength() default -1;//最小长度
long maxValue() default -1;//大值
long minValue() default -1;//最小值
String errorRequiredMsg() default "";//值为null时的错误提示信息
String errorMinLengthMsg() default "";//最小长度不满足时的提示信息
String errorMaxLengthMsg() default "";//最大长度不满足时的提示信息
String errorMinValueMsg() default "";//最小值不满足时的提示信息
String errorMaxValueMsg() default "";//最大值不满足时的提示信息
}
更多推荐
所有评论(0)