🍅 作者主頁:Java李楊勇
🍅 簡介:Java領域優質創作者🏆、【java李楊勇】公號作者? 簡歷模板、學習資料、面試題庫【關注我,都給你】
🍅文末獲取原始碼聯系🍅
前言介紹:
隨著資訊技術的不斷發展,我們現在已經步入了資訊化的時代了,而資訊時代的代表便是網路技術的日漸成熟,而現在網路已經和我們的生活緊密的聯系起來了,我們不敢想象沒有網路我們的生活會像怎么樣,也許就像食物中沒有調料現在的生活離開了網路會變得索然無味,通過網路我們可以足不出戶的做許多事情,例如圖書、作業、娛樂、學習,購物、交友和購物等等許多我們數之不盡的事情,而就是因為網路我們的生活變得多姿多彩,或許有時甚至幫我們省下不少的時間和給予了我們更多的機遇,圖書商城網站對我們來說就有這些意義,圖書網站商城主要是一些企業為了不流失因為某種原因而沒有到商店店里選購商品的圖書商品客人而設計的一個通過 Internet 就能進行方便購物的系統,圖書商城網站的誕生為商家們提供了很多的機遇,另外一個原因是現在網上購物對圖書商品人們生活和作業中所產生的壓力是很有用的,所以現在網購的需求量在不斷的提升,然而有很大一部分人還是沒有時間去選購自己喜歡的圖書商品, 所以圖書商城網站應運而生,在圖書商城網站誕生之后,用戶可以在空余的時間通過互聯網來查看大量品種的家具商品資訊,從而很方便地購買到自己心儀的圖書之類的、在另外一方面就是提高了圖書商家的銷售額,總的來說,圖書商城網站既滿足了很多人的需要,也不會影響到作業或者浪費了休息的時間,它是一個很有意義的系統
完整地址:2022Java畢業設計專案:圖書購物商城系統(java+springboot+vue實作)-寒假了快卷起來
功能截圖:
用戶登錄:分為管理員和普通用戶進行登錄、也可以在這里進行用戶注冊,
錄入相關用戶資訊進行用戶注冊,
前端用戶首頁:用戶登錄后、可以查看新上架的書籍和新聞等書籍、點擊進入詳情查看購買書籍、加入購物車以及對自己感興趣的圖書書籍收藏等操作和查看修改個人資訊等,

管理員首頁:圖書商城系統管理員登錄后主要有如下功能模塊:用戶個人資訊管理、修改密碼、圖書分類管理、圖書商品詳情管理、首頁輪播圖管理、新聞資訊管理、書籍串列管理、訂單資訊管理和發貨資訊管理等,

書籍分類管理:

新聞資訊管理:
添加和修改:

書籍串列管理:管理員可以添加、修改、洗掉和查詢書籍串列資訊

書籍詳情:

訂單管理:管理員可以查看訂單資訊、對訂單狀態進行修改、以及發貨狀態等操作 , 
發貨資訊管理: 

前端書籍詳情頁:

書籍詳情頁:查看書籍詳情資訊、可以加入購物車和收藏等查看、也可以查看用戶評論資訊等


填寫購物車資訊等,

我的個人中心:

工具語言:
開發工具:IDEA 2021.3、navicat for mysql 、postman,
開發語言:java、jdk1.8、mysql5、node.js 14,
硬體環境:Windows 10作業系統、Google瀏覽器等,
主要技術:springboot、mybatis-plus、vue、element UI、mysql等
關鍵代碼:
用戶相關:
package com.controller;
/**
* 登錄相關
*/
@RequestMapping("users")
@RestController
public class UserController{
@Autowired
private UserService userService;
@Autowired
private TokenService tokenService;
/**
* 登錄
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("賬號或密碼不正確");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
/**
* 注冊
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用戶已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 密碼重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null) {
return R.error("賬號不存在");
}
user.setPassword("123456");
userService.update(user,null);
return R.ok("密碼已重置為:123456");
}
/**
* 串列
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
/**
* 串列
*/
@RequestMapping("/list")
public R list( UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", userService.selectListView(ew));
}
/**
* 資訊
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 獲取用戶的session用戶資訊
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 保存
*/
@PostMapping("/save")
public R save(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用戶已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
userService.updateById(user);//全部更新
return R.ok();
}
/**
* 洗掉
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
userService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}
攔截配置:
package com.config;
@Configuration
public class InterceptorConfig extends WebMvcConfigurationSupport{
@Bean
public AuthorizationInterceptor getAuthorizationInterceptor() {
return new AuthorizationInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(getAuthorizationInterceptor()).addPathPatterns("/**").excludePathPatterns("/static/**");
registry.addInterceptor(getAuthorizationInterceptor()).addPathPatterns("/**").excludePathPatterns("/upload/**");
// registry.addInterceptor(getAuthorizationInterceptor()).addPathPatterns("/**").excludePathPatterns("/virtuel/**");
super.addInterceptors(registry);
}
/**
* springboot 2.0配置WebMvcConfigurationSupport之后,會導致默認配置被覆寫,要訪問靜態資源需要重寫addResourceHandlers方法
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/resources/")
.addResourceLocations("classpath:/static/")
.addResourceLocations("classpath:/upload/")
.addResourceLocations("classpath:/admin/")
.addResourceLocations("classpath:/front/")
.addResourceLocations("classpath:/public/");
registry.addResourceHandler("/upload/**").addResourceLocations("file:D:/work/");
super.addResourceHandlers(registry);
}
}
全域yml配置:
# Tomcat
server:
tomcat:
uri-encoding: UTF-8
port: 8080
servlet:
context-path: /springbootUCW7v
spring:
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/springbootUCW7v?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
username: root
password: 123456
servlet:
multipart:
max-file-size: 10MB
max-request-size: 10MB
resources:
static-locations: classpath:/testStatic/,classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
#mybatis
mybatis-plus:
mapper-locations: classpath*:mapper/*.xml
#物體掃描,多個package用逗號或者分號分隔
typeAliasesPackage: com.entity
global-config:
#主鍵型別 0:"資料庫ID自增", 1:"用戶輸入ID",2:"全域唯一ID (數字型別唯一ID)", 3:"全域唯一ID UUID";
id-type: 1
#欄位策略 0:"忽略判斷",1:"非 NULL 判斷"),2:"非空判斷"
field-strategy: 2
#駝峰下劃線轉換
db-column-underline: true
#重繪mapper 除錯神器
refresh-mapper: true
#邏輯洗掉配置
logic-delete-value: -1
logic-not-delete-value: 0
#自定義SQL注入器
sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
call-setters-on-nulls: true
#springboot 專案mybatis plus 設定 jdbcTypeForNull (oracle資料庫需配置JdbcType.NULL, 默認是Other)
jdbc-type-for-null: 'null'
#檔案虛擬路徑
virtuel:
filePath: C:/Users/Administrator/Desktop/lyy/
資料庫設計:
資料庫名:springboot-book
檔案版本:V1.0.0
檔案描述:圖書商城系統資料庫表設計描述
表config (組態檔)
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | |
| 2 | name | varchar | 100 | 0 | N | N | 配置引數名稱 |
| 3 | value | varchar | 100 | 0 | Y | N | 配置引數值 |
表dingdanxinxi (訂單資訊)
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | |
| 2 | addtime | timestamp | 19 | 0 | N | N | |
| 3 | dingdanbianhao | varchar | 200 | 0 | Y | N | 訂單編號 |
| 4 | shujimingcheng | varchar | 200 | 0 | Y | N | 書籍名稱 |
| 5 | fenlei | varchar | 200 | 0 | Y | N | 分類 |
| 6 | fengmian | varchar | 200 | 0 | Y | N | 封面 |
| 7 | jiage | varchar | 200 | 0 | Y | N | 價格 |
| 8 | shuliang | int | 10 | 0 | Y | N | 數量 |
| 9 | zongjiage | varchar | 200 | 0 | Y | N | 總價格 |
| 10 | xiadanriqi | date | 10 | 0 | Y | N | 下單日期 |
| 11 | beizhu | varchar | 200 | 0 | Y | N | 備注 |
| 12 | yonghuming | varchar | 200 | 0 | Y | N | 用戶名 |
| 13 | shouji | varchar | 200 | 0 | Y | N | 手機 |
| 14 | dizhi | varchar | 200 | 0 | Y | N | 地址 |
| 15 | ispay | varchar | 200 | 0 | Y | N | 是否支付 |
表discussshuji (書籍評論表)
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | |
| 2 | addtime | timestamp | 19 | 0 | N | N | |
| 3 | refid | bigint | 20 | 0 | N | N | 關聯表id |
| 4 | content | varchar | 200 | 0 | N | N | 評論內容 |
| 5 | userid | bigint | 20 | 0 | N | N | 用戶id |
表fahuoxinxi (發貨資訊)
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | |
| 2 | addtime | timestamp | 19 | 0 | N | N | |
| 3 | dingdanbianhao | varchar | 200 | 0 | Y | N | 訂單編號 |
| 4 | shujimingcheng | varchar | 200 | 0 | Y | N | 書籍名稱 |
| 5 | fengmian | varchar | 200 | 0 | Y | N | 封面 |
| 6 | shuliang | varchar | 200 | 0 | Y | N | 數量 |
| 7 | fahuoriqi | date | 10 | 0 | Y | N | 發貨日期 |
| 8 | yonghuming | varchar | 200 | 0 | Y | N | 用戶名 |
| 9 | shouji | varchar | 200 | 0 | Y | N | 手機 |
| 10 | dizhi | varchar | 200 | 0 | Y | N | 地址 |
| 11 | dingdanzhuangtai | varchar | 200 | 0 | N | N | 訂單狀態 |
表news (新聞資訊)
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | ||
| 2 | addtime | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | |
| 3 | title | varchar | 200 | 0 | N | N | 標題 | |
| 4 | picture | varchar | 200 | 0 | N | N | 圖片 | |
| 5 | content | longtext | 2147483647 | 0 | N | N | 內容 |
表shuji (書籍)
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 |
| 1 | id | bigint | 20 | 0 | N | Y |
| 2 | addtime | timestamp | 19 | 0 | N | N |
| 3 | shujibianhao | varchar | 200 | 0 | Y | N |
| 4 | shujimingcheng | varchar | 200 | 0 | N | N |
| 5 | fenlei | varchar | 200 | 0 | N | N |
| 6 | fengmian | varchar | 200 | 0 | Y | N |
| 7 | zuozhe | varchar | 200 | 0 | Y | N |
| 8 | chubanshe | varchar | 200 | 0 | Y | N |
| 9 | jiage | int | 10 | 0 | Y | N |
| 10 | shuliang | int | 10 | 0 | Y | N |
| 11 | shujijieshao | longtext | 2147483647 | 0 | Y | N |
| 12 | clicktime | datetime | 19 | 0 | Y | N |
| 13 | clicknum | int | 10 | 0 | Y | N |
表shujifenlei (書籍分類)
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | |
| 2 | addtime | timestamp | 19 | 0 | N | N | |
| 3 | fenlei | varchar | 200 | 0 | N | N | 分類 |
表storeup (收藏表)
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | |
| 2 | addtime | timestamp | 19 | 0 | N | N | |
| 3 | userid | bigint | 20 | 0 | N | N | 用戶id |
| 4 | refid | bigint | 20 | 0 | Y | N | 收藏id |
| 5 | tablename | varchar | 200 | 0 | Y | N | 表名 |
| 6 | name | varchar | 200 | 0 | N | N | 收藏名稱 |
| 7 | picture | varchar | 200 | 0 | N | N | 收藏圖片 |
表token (token表)
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | |
| 2 | userid | bigint | 20 | 0 | N | N | 用戶id |
| 3 | username | varchar | 100 | 0 | N | N | 用戶名 |
| 4 | tablename | varchar | 100 | 0 | Y | N | 表名 |
| 5 | role | varchar | 100 | 0 | Y | N | 角色 |
| 6 | token | varchar | 200 | 0 | N | N | 密碼 |
| 7 | addtime | timestamp | 19 | 0 | N | N | 新增時間 |
| 8 | expiratedtime | timestamp | 19 | 0 | N | N | 過期時間 |
表users (用戶表)
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | |
| 2 | username | varchar | 100 | 0 | N | N | 用戶名 |
| 3 | password | varchar | 100 | 0 | N | N | 密碼 |
| 4 | role | varchar | 100 | 0 | Y | N | 角色 |
| 5 | addtime | timestamp | 19 | 0 | N | N | 新增時間 |
表yonghu (用戶)
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | |
| 2 | addtime | timestamp | 19 | 0 | N | N | |
| 3 | yonghuming | varchar | 200 | 0 | N | N | 用戶名 |
| 4 | mima | varchar | 200 | 0 | N | N | 密碼 |
| 5 | xingming | varchar | 200 | 0 | N | N | 姓名 |
| 6 | xingbie | varchar | 200 | 0 | Y | N | 性別 |
| 7 | touxiang | varchar | 200 | 0 | Y | N | 頭像 |
| 8 | shouji | varchar | 200 | 0 | Y | N | 手機 |
| 9 | dizhi | varchar | 200 | 0 | Y | N | 地址 |
專案總結:
經過近期對 java 面向物件程式設計、前端知識以及JAVA 框架的掌握和學習,以及這段時間本圖書商品網站系統的開發,讓我更加了解到 java 學習的重要性,在開發這個系統是哪個,我完成了多個實驗以及教育系統的功能測驗,在這個階段的系統開發學習當中,我從認識到熟悉java,而后到能夠自主運用相關技術,通過對 java 相關技術的了解和學習,我發現了它確實有很多方便之處,比如java集抽象性和封裝性以及繼承性和多型性于一體,實作了對代碼重用和代碼擴充功能,提高了整體軟體開發的速度和效率,對于我們計算機這個專業來說學好 java 語言是很重要的一部分,所以在開發這個教學管理系統專案的程序中我都盡力理解 java 編程思想、掌味訓本技巧,常見的方法和對錯誤的解決能力、盡量學到最多的知識, 我學習程式設計的主要目的就是提高自己實際問題的程式解決方案的關鍵技能和技術, java 面向物件程式設計是一科實踐性相對來說非常比較強的語言了、springMVC框架的MVC三層架構模式、和框架中遇到的設計模式將資料訪問和邏輯操作都集中到組件里面去了 , 增強了系統的復用性和擴展性,使系統的擴展性大大增強,以及前端jQuery、js、jsp、css樣式的掌握讓我對網頁的布局、樣式調整、字體等讓網頁效果實作的更加精準,
系列推薦:
基于java+Springboot作業系統教學交流平臺詳細設計實作
基于java Springboot+Vue+shiro前后端分離疫情防疫管理系統設計和實作
基于SpringBoot+vue的學生資訊管理系統詳細設計
基于java ssm springboot+mybatis酒莊內部管理系統設計和實作
基于java springboot+mybatis電影售票網站管理系統前臺+后臺設計和實作
java springboot+mybatis電影售票網站管理系統前臺+后臺設計和實作
原始碼獲取:
大家點贊、收藏、關注、評論啦 、查看👇🏻👇🏻👇🏻微信公眾號獲取聯系方式👇🏻👇🏻👇🏻
打卡 文章 更新 136/ 365天
精彩專欄推薦訂閱:在下方專欄👇🏻👇🏻👇🏻👇🏻
Java專案精品實戰案例《100套》
web前端期末大作業網頁實戰《100套》
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/404342.html
標籤:java
