畢業(yè)設(shè)計(jì)——基于ssm+shiro+redis+nginx tomcat服務(wù)器集群管理項(xiàng)目
完整項(xiàng)目地址:https://download.csdn.net/download/lijunhcn/88430549
1.搭建一個(gè)最簡潔,模塊劃分最明確的ssm+swargger+shiro+redis+nginx整合項(xiàng)目,采用maven作為構(gòu)建工具,在有新項(xiàng)目開發(fā)時(shí)可以借助此demo快速構(gòu)建項(xiàng)目
2.實(shí)現(xiàn)shiro的授權(quán)信息緩存到redis數(shù)據(jù)庫,減少關(guān)系數(shù)據(jù)庫訪問壓力
3.實(shí)現(xiàn)session共享到redis,實(shí)現(xiàn)多服務(wù)器集群方案
4.配置文檔中包含豐富的注釋,搭建思路清晰的ssm項(xiàng)目框架
5.項(xiàng)目中的所有細(xì)節(jié)都會(huì)按照企業(yè)級(jí)開發(fā)的標(biāo)準(zhǔn),展示如何遵循代碼規(guī)范以及類文件doc注釋的編寫。
6.采用RESTFul的controller接口,展示RESTFul風(fēng)格的API編寫(shiro基于url的權(quán)限攔截與RESTFul API兼容性不好,后期可能會(huì)改寫shiro以匹配RESTFul)
7.Junit單元測試,展示如何正確的使用Junit單元測試驗(yàn)證自己接口代碼的健壯性
涉及到的技術(shù)
springmvc+spring+mybatis:輕量級(jí)敏捷開發(fā)框架
swargger:快速構(gòu)建RestFul接口測試頁面
shiro:Apache開源權(quán)限管理框架,包括登錄驗(yàn)證,授權(quán),加密,會(huì)話管理
redis:Nosql數(shù)據(jù)庫,搭配shiro的會(huì)話管理功能將session存入redis中,實(shí)現(xiàn)tomcat多服務(wù)器集群的session共享
nginx:反向代理服務(wù)器,用來調(diào)度多臺(tái)tomcat
h2:內(nèi)存數(shù)據(jù)庫,用于測試
開發(fā)環(huán)境
jdk1.8+mysql5.7.22+tomcat8.5.32+IDEA
項(xiàng)目部署
第一次部署項(xiàng)目
1.修改ssm-rs\resources目錄下db.properties的數(shù)據(jù)庫賬號(hào)密碼信息
2.啟動(dòng)redis服務(wù)端,修改ssm-rs\resources\spring-config目錄下spring-shiro.xml中redis的連接信息,沒設(shè)置密碼的話auth留空
2.創(chuàng)建數(shù)據(jù)庫train_db并執(zhí)行根目錄下的train_db.sql數(shù)據(jù)庫腳本
3.進(jìn)入到ssm-build目錄下,執(zhí)行clean install -Dmaven.test.skip=true,對整個(gè)項(xiàng)目進(jìn)行構(gòu)建
4.啟動(dòng)ssm-rs項(xiàng)目,瀏覽器訪問http://localhost/ssm-rs/swagger-ui.html
項(xiàng)目模塊
ssm-build
項(xiàng)目聚合模塊,可以進(jìn)入該項(xiàng)目目錄,對整個(gè)項(xiàng)目進(jìn)行構(gòu)建。
mvn clean install -Dmaven.test.skip=true
ssm-parent
父模塊,其他模塊會(huì)繼承該模塊,引入公共的依賴
ssm-model
模型層模塊,提供各種POJO。包括與數(shù)據(jù)庫表對應(yīng)的模型、傳輸模型等。提供給service層(ssm-cs)、controller層(ssm-rs)。
ssm-commons
包含各種工具類
ssm-cs
service層和dao層,提供具體的業(yè)務(wù)邏輯和數(shù)據(jù)庫訪問,需要依賴ssm-model模塊,并提供出來給ssm-rs模塊調(diào)用
ssm-rs
controller層,提供RESTFul接口。文章來源:http://www.zghlxwxcb.cn/news/detail-762426.html
項(xiàng)目SQL部分源碼文章來源地址http://www.zghlxwxcb.cn/news/detail-762426.html
/*
Navicat MySQL Data Transfer
Source Server : localhost
Source Server Version : 50722
Source Host : localhost:3306
Source Database : train_db
Target Server Type : MYSQL
Target Server Version : 50722
File Encoding : 65001
Date: 2018-07-27 15:17:28
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for tra_permissiontype
-- ----------------------------
DROP TABLE IF EXISTS `tra_permissiontype`;
CREATE TABLE `tra_permissiontype` (
`permissonType_id` bigint(20) NOT NULL AUTO_INCREMENT,
`permissionType_name` varchar(255) NOT NULL,
KEY `permissonType_id` (`permissonType_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of tra_permissiontype
-- ----------------------------
INSERT INTO `tra_permissiontype` VALUES ('1', '獎(jiǎng)品管理');
-- ----------------------------
-- Table structure for tra_permission
-- ----------------------------
DROP TABLE IF EXISTS `tra_permission`;
CREATE TABLE `tra_permission` (
`permission_id` bigint(20) NOT NULL AUTO_INCREMENT,
`permission_name` varchar(255) NOT NULL,
`perimission_url` varchar(255) NOT NULL,
`permissioon_type` bigint(20) NOT NULL,
PRIMARY KEY (`permission_id`),
KEY `FK_permissionType` (`permissioon_type`),
CONSTRAINT `FK_permissionType` FOREIGN KEY (`permissioon_type`) REFERENCES `tra_permissiontype` (`permissonType_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of tra_permission
-- ----------------------------
INSERT INTO `tra_permission` VALUES ('1', 'prize:add', '/v1.0/prize/add', '1');
INSERT INTO `tra_permission` VALUES ('2', 'prize:delete', '/v1.0/prize/delete/*', '1');
INSERT INTO `tra_permission` VALUES ('3', 'prize:update', '/v1.0/prize/update/*', '1');
INSERT INTO `tra_permission` VALUES ('4', 'prize:get', '/v1.0/prize/get/*', '1');
-- ----------------------------
-- Table structure for tra_prizes
-- ----------------------------
DROP TABLE IF EXISTS `tra_prizes`;
CREATE TABLE `tra_prizes` (
`prize_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '唯一表識(shí)',
`prize_name` varchar(50) NOT NULL COMMENT '獎(jiǎng)品名稱',
`created_time` datetime NOT NULL COMMENT '創(chuàng)建時(shí)間',
PRIMARY KEY (`prize_id`)
) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
-- ----------------------------
-- Records of tra_prizes
-- ----------------------------
INSERT INTO `tra_prizes` VALUES ('15', 'string', '2018-07-26 11:49:10');
INSERT INTO `tra_prizes` VALUES ('16', 'string', '2018-07-26 12:00:43');
INSERT INTO `tra_prizes` VALUES ('17', 'string', '2018-07-26 12:01:55');
INSERT INTO `tra_prizes` VALUES ('18', 'string', '2018-07-26 12:03:16');
INSERT INTO `tra_prizes` VALUES ('19', 'string', '2018-07-26 17:25:47');
INSERT INTO `tra_prizes` VALUES ('20', 'string', '2018-07-26 17:27:47');
INSERT INTO `tra_prizes` VALUES ('21', 'string', '2018-07-26 17:31:54');
INSERT INTO `tra_prizes` VALUES ('22', 'string', '2018-07-26 17:54:20');
INSERT INTO `tra_prizes` VALUES ('23', 'string', '2018-07-27 08:46:05');
INSERT INTO `tra_prizes` VALUES ('24', 'string', '2018-07-27 09:00:45');
INSERT INTO `tra_prizes` VALUES ('25', 'string', '2018-07-27 11:06:17');
INSERT INTO `tra_prizes` VALUES ('26', 'string', '2018-07-27 14:45:56');
INSERT INTO `tra_prizes` VALUES ('27', 'string', '2018-07-27 14:54:25');
INSERT INTO `tra_prizes` VALUES ('28', 'string', '2018-07-27 14:55:07');
INSERT INTO `tra_prizes` VALUES ('29', 'string', '2018-07-27 14:56:29');
INSERT INTO `tra_prizes` VALUES ('30', 'string', '2018-07-27 14:58:23');
INSERT INTO `tra_prizes` VALUES ('31', 'string', '2018-07-27 15:05:13');
-- ----------------------------
-- Table structure for tra_role
-- ----------------------------
DROP TABLE IF EXISTS `tra_role`;
CREATE TABLE `tra_role` (
`role_id` bigint(20) NOT NULL AUTO_INCREMENT,
`role_name` varchar(255) NOT NULL,
PRIMARY KEY (`role_id`),
UNIQUE KEY `uniq_rolename` (`role_name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of tra_role
-- ----------------------------
INSERT INTO `tra_role` VALUES ('1', 'admin');
-- ----------------------------
-- Table structure for tra_role_permission
-- ----------------------------
DROP TABLE IF EXISTS `tra_role_permission`;
CREATE TABLE `tra_role_permission` (
`role_permission_id` bigint(20) NOT NULL AUTO_INCREMENT,
`role_id` bigint(20) NOT NULL,
`permission_id` bigint(20) NOT NULL,
PRIMARY KEY (`role_permission_id`),
UNIQUE KEY `uniq_roleId_permissionId` (`role_id`,`permission_id`) USING BTREE,
KEY `FK_permission_id` (`permission_id`),
CONSTRAINT `FK_permission_id` FOREIGN KEY (`permission_id`) REFERENCES `tra_permission` (`permission_id`),
CONSTRAINT `FK_role_ids` FOREIGN KEY (`role_id`) REFERENCES `tra_role` (`role_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of tra_role_permission
-- ----------------------------
INSERT INTO `tra_role_permission` VALUES ('1', '1', '1');
-- ----------------------------
-- Table structure for tra_user
-- ----------------------------
DROP TABLE IF EXISTS `tra_user`;
CREATE TABLE `tra_user` (
`user_id` bigint(20) NOT NULL AUTO_INCREMENT,
`user_name` varchar(255) NOT NULL,
`user_password` varchar(15) NOT NULL,
PRIMARY KEY (`user_id`),
UNIQUE KEY `uniq_username` (`user_name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of tra_user
-- ----------------------------
INSERT INTO `tra_user` VALUES ('1', 'liuruojing', '123456');
-- ----------------------------
-- Table structure for tra_user_role
-- ----------------------------
DROP TABLE IF EXISTS `tra_user_role`;
CREATE TABLE `tra_user_role` (
`user_role_id` bigint(20) NOT NULL AUTO_INCREMENT,
`user_id` bigint(20) NOT NULL,
`role_id` bigint(20) NOT NULL,
PRIMARY KEY (`user_role_id`),
UNIQUE KEY `uniq_userId_roleId` (`user_id`,`role_id`) USING BTREE,
KEY `FK_user_id` (`user_id`) USING BTREE,
KEY `FK_role_id` (`role_id`),
CONSTRAINT `FK_role_id` FOREIGN KEY (`role_id`) REFERENCES `tra_role` (`role_id`),
CONSTRAINT `FK_user_id` FOREIGN KEY (`user_id`) REFERENCES `tra_user` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of tra_user_role
-- ----------------------------
INSERT INTO `tra_user_role` VALUES ('1', '1', '1');
到了這里,關(guān)于畢業(yè)設(shè)計(jì)——基于ssm+shiro+redis+nginx tomcat服務(wù)器集群管理項(xiàng)目的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!