毕业设计——基于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-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', '奖品管理');

-- ----------------------------
-- 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模板网!

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

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

相关文章

  • 基于SSM框架开发的教务管理系统(毕业设计,期末设计)

    目录 🍬1 前言 1.1 项目所需要的知识 1.2 开发项目的环境和工具 🍬2 系统结构 2.1系统流程图(E-R图) 2.2配置pom.xml 🍬3 程序设计及运行 3.1添加课程信息 (1)功能描述 (2)实现代码 (3)实现截图 3.2学生已修课程 (1)功能描述 (2)实现代码 (3)实现截图 3.3添加教师信

    2024年02月08日
    浏览(65)
  • 小程序毕业设计基于微信点餐小程序设计+ssm

    随着社会的发展,社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个开发过程首先对微信点餐小程序

    2024年01月19日
    浏览(40)
  • 毕业设计——基于SSM+Mysql构建的完整在线旅游网站项目

    完整项目地址:https://download.csdn.net/download/lijunhcn/88430527 ### 1、主要功能 实现旅游网 2、主要知识点 (1)目标 (2)任务 (3)功能说明 主要功能概述 (4)数据库表 (5)功能操作 1.环境搭建 2.注册功能 去注册页面 a、页面—在header.jsp里面添加这个超链接 b、控制层—在Use

    2024年02月04日
    浏览(47)
  • (附源码)基于SSM框架的校园宿舍管理系统 毕业设计241738

    SSM校园宿舍管理系统的设计与实现 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,

    2024年02月02日
    浏览(41)
  • 基于SSM+Vue的学校社团管理系统(Java毕业设计)

     大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的方法。无论你是初学者还是有一定经验的程序员,我都希望能够为你

    2024年01月21日
    浏览(53)
  • 基于java(ssm)旅游网站系统源码成品(java毕业设计)

    基于java(ssm)旅游网站系统 旅游网站系统是基于java编程语言,mysql数据库,ssm框架和idea开发工具设计,本系统分为用户和管理员两个角色,用户注册登陆后查看旅游景点,景点购买门票,查看酒店信息,预定酒店客房,在线交流,联系客房,在线评论等功能;管理员对用户

    2024年04月11日
    浏览(59)
  • 基于SSM青少年健身自主测评平台小程序 毕业设计源码14496

                                                                   摘  要 随着中国经济的飞速增长,消费者的智能化水平不断提高,许多智能手机和相关的软件正在得到更多的关注和支持。其中,微信小程序的青少年健身自主测评平台更是深得消费者的喜爱,它的出现

    2024年02月03日
    浏览(39)
  • (附源码)计算机毕业设计SSM基于Web企业客户管理系统

    (附源码)计算机毕业设计SSM基于Web企业客户管理系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX (Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM + mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等。 环境需要 1. 运行环境:最好是java

    2024年02月06日
    浏览(41)
  • 基于SSM+vue的篮球场预约管理系统(Java毕业设计)

     大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的方法。无论你是初学者还是有一定经验的程序员,我都希望能够为你

    2024年02月02日
    浏览(61)
  • Java毕业设计-基于ssm的网上求职招聘管理系统-第85期

    获取源码资料,请移步从戎源码网:从戎源码网_专业的计算机毕业设计网站 基于ssm的网上求职招聘管理系统:前端 jsp、jquery,后端 springmvc、spring、mybatis,角色分为管理员、招聘人员、用户;集成职位发布,查看简历,简历编辑,在线投递等功能于一体的系统。 管理员 系统

    2024年01月21日
    浏览(55)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包