基于ssm+shiro+redis+nginx tomcat服务器集群管理项目

这篇具有很好参考价值的文章主要介绍了基于ssm+shiro+redis+nginx tomcat服务器集群管理项目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

毕业设计——基于ssm+shiro+redis+nginx tomcat服务器集群管理项目

完整项目地址:https://download.csdn.net/download/lijunhcn/88430549

1.搭建一个最简洁,模块划分最明确的ssm+swargger+shiro+redis+nginx整合项目,采用maven作为构建工具,在有新项目开发时可以借助此demo快速构建项目

2.实现shiro的授权信息缓存到redis数据库,减少关系数据库访问压力

3.实现session共享到redis,实现多服务器集群方案

4.配置文档中包含丰富的注释,搭建思路清晰的ssm项目框架

5.项目中的所有细节都会按照企业级开发的标准,展示如何遵循代码规范以及类文件doc注释的编写。

6.采用RESTFul的controller接口,展示RESTFul风格的API编写(shiro基于url的权限拦截与RESTFul API兼容性不好,后期可能会改写shiro以匹配RESTFul)

7.Junit单元测试,展示如何正确的使用Junit单元测试验证自己接口代码的健壮性

涉及到的技术

springmvc+spring+mybatis:轻量级敏捷开发框架

swargger:快速构建RestFul接口测试页面

shiro:Apache开源权限管理框架,包括登录验证,授权,加密,会话管理

redis:Nosql数据库,搭配shiro的会话管理功能将session存入redis中,实现tomcat多服务器集群的session共享

nginx:反向代理服务器,用来调度多台tomcat

h2:内存数据库,用于测试

开发环境

jdk1.8+mysql5.7.22+tomcat8.5.32+IDEA

项目部署

第一次部署项目

1.修改ssm-rs\resources目录下db.properties的数据库账号密码信息

2.启动redis服务端,修改ssm-rs\resources\spring-config目录下spring-shiro.xml中redis的连接信息,没设置密码的话auth留空

2.创建数据库train_db并执行根目录下的train_db.sql数据库脚本

3.进入到ssm-build目录下,执行clean install -Dmaven.test.skip=true,对整个项目进行构建

4.启动ssm-rs项目,浏览器访问http://localhost/ssm-rs/swagger-ui.html

项目模块

ssm-build

项目聚合模块,可以进入该项目目录,对整个项目进行构建。

mvn clean install -Dmaven.test.skip=true

ssm-parent

父模块,其他模块会继承该模块,引入公共的依赖

ssm-model

模型层模块,提供各种POJO。包括与数据库表对应的模型、传输模型等。提供给service层(ssm-cs)、controller层(ssm-rs)。

ssm-commons

包含各种工具类

ssm-cs

service层和dao层,提供具体的业务逻辑和数据库访问,需要依赖ssm-model模块,并提供出来给ssm-rs模块调用

ssm-rs

controller层,提供RESTFul接口。

项目SQL部分源码文章来源地址https://www.toymoban.com/news/detail-777434.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', '奖品管理');

-- ----------------------------
-- 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 '唯一表识',
  `prize_name` varchar(50) NOT NULL COMMENT '奖品名称',
  `created_time` datetime NOT NULL COMMENT '创建时间',
  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');

到了这里,关于基于ssm+shiro+redis+nginx tomcat服务器集群管理项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Web服务器群集:Nginx+Tomcat实现负载均衡与动静分离集群

    目录 一、理论 1.多实例 2.Nginx负载均衡 3.Nginx动静分离 4.配置Nginx+Tomcat负载均衡 5.配置Nginx+Tomcat动静分离集群 6.Nginx 四层代理配置 二、实验 1.配置Nginx+Tomcat负载均衡 2.、配置Nginx+Tomcat动静分离集群 三、问题 1.服务器群集与集群的区别 2.正向代理与反向代理的区别 四、总结 (

    2024年02月11日
    浏览(48)
  • C++集群聊天服务器 nginx+redis安装 笔记 (中)

    一、nginx安装 nginx: download 下载nginx安装包 二、redis安装 Install Redis on Linux | Redis 集群聊天服务器推荐和参考文章,下文部分文字来自这篇文章: 集群聊天服务器:三、集群代码实现_网络编程多服务端集群怎么实现-CSDN博客 https://blog.csdn.net/qq_42441693/article/details/129167974?spm=100

    2024年02月19日
    浏览(51)
  • 创建网站教程:服务器环境搭建(MySQL+Jdk+Nginx...),前后端项目部署(技术栈:SSM+Vue),域名+备案【全网最简单】

    【如有建站方面的需求欢迎 添加微信 ,接私单 】 2024/4/26记,本文写于1年前,当时建站经验不够丰富,文章逻辑混乱,近期重新编写,希望能帮助更多小伙伴,搭建属于自己的网站。 我主要以我部署的个人网站:www.pbjlovezjy.com 为例,来讲解如何搭建一个网站,源码如果需要

    2024年04月26日
    浏览(61)
  • C++集群聊天服务器 muduo+nginx+redis+mysql数据库连接池 笔记 (下)

    C++集群聊天服务器 网络模块+业务模块+CMake构建项目 笔记 (上)-CSDN博客 https://blog.csdn.net/weixin_41987016/article/details/135991635?spm=1001.2014.3001.5501 C++集群聊天服务器 数据模块+业务模块+CMake构建项目 笔记 (上)-CSDN博客 https://blog.csdn.net/weixin_41987016/article/details/136007616?spm=1001.2014.

    2024年02月19日
    浏览(91)
  • 【Linux】Centos 8 服务器部署:docker 安装 jdk、nginx、nacos、redis、Sentinel Dashboard

    目录 一、安装软件 (1)全部安装命令 (2)安装:jdk (3)安装:nginx  (4)安装:nacos (5)安装:redis (6)安装:Sentinel Dashboard 二、开放端口 三、启动软件  (1)启动:nacos (2)启动:nginx (3)启动:redis (4)启动:Sentinel Dashboard 四、访问网址  (1)访问:nacos 

    2024年02月06日
    浏览(65)
  • 基于OpenSSL和nginx搭建本地https服务器(详细实操版)

    (꒪ꇴ꒪ ),Hello我是 祐言QAQ 我的博客主页:C/C++语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍 快上🚘,一起学习,让我们成为一个强大的攻城狮! 送给自己和读者的一句鸡汤🤔: 集中起来的意志可以击穿顽石! 作者水平很有限,如果发现错误,请在评论区指

    2024年02月20日
    浏览(44)
  • 基于javacv(推流),nginx(流媒体服务器),VCL(播放器)搭建直播视频

    目录 1.获取RTSP地址 2.搭建流媒体服务器 2.1下载资源 下载nginx  下载rtmp组件  启动nginx 测试工具(由于java代码调试问题,所以这里先下载一个转码推流的工具,其中javacv的原理也是它)可忽略  下载VLC(测试视频是否成功)  2.2测试向流媒体服务器推流 3.转码  4.查看监控数

    2024年02月06日
    浏览(85)
  • Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器

    #!/bin/sh HTTP_FLV_MODULE_PATH=…/nginx-http-flv-module-1.2.7 OpenSSL_PATH=…/openssl-1.1.1d #–prefix=./bin 代表编译完成之后输出的路径地址 #–add-module 将拓展模块添加到当前一起编译 ./configure --prefix=./bin –add-module= H T T P F L V M O D U L E P A T H   − − w i t h − o p e n s s l = HTTP_FLV_MODULE_PATH --with

    2024年04月15日
    浏览(64)
  • Windows基于Nginx搭建RTMP流媒体服务器(附带所有组件下载地址及验证方法)

    RTMP服务时常用于直播时提供拉流推流传输数据的一种服务。前段时间由于朋友想搭建一套直播时提供稳定数据传输的服务器,所以就研究了一下如何搭建及使用。 首先我们要知道一般nginx不能直接配置rtmp服务,在Windows系统上需要特殊nginx版本才能进行搭建 : nginx 1.7.11.3 Gryp

    2024年02月02日
    浏览(103)
  • 基于Nginx+rtmp搭建支持hls协议的点播流媒体服务器(windows/Linux)

    前言:公司最近因为客户端视频文件过大导致视频加载时间很长,让我将视频播放做成流媒体点播的形式,于是查阅了几十篇相关文章以及文档,最终将功能实现。可能是存在版本差异,绝大部分文章介绍的教程并不能成功实施,尤其是点播功能,所以我把我工作中验证成功

    2024年02月02日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包