随着目前java技术的迭代更新,每天我们需要去更新新的技术,同时也要去整合旧的知识体系,目前这套实战开发采用2019年最流行的前后端工程开发,如果你工作了几年你也可以作为参考,如果你是小白这套实战适合你学到技术和知识的完整体系。
第一章节首先先看最终效果
采用后台采用spring boot微服务架构,数据库持久层mybaties 前端采用当下流行的layerui封装而成的前端框架,在这里你可以学习spring boot微服务架构,前端css样式的编写,js发送http请求接口规范。
有了这个架子以后你的工作中遇到的任何功能都能整合到这套框架中,最终形成自己的百度知识库,方便以后查阅。
第二章以上是普通用户登录的功能列表超级管理员登录待开发中
今天太晚了,只能讲解一个项目的基础功能框架搭建以及后台技术的应用,前端框架采用layerui封装框架,封装统一的弹出窗风格。
前端技术栈 | 说明 |
|
bootstrap | css样式框架 |
|
jqgird | 系统查询列表组件 |
|
jqueryui | 原生jquery样式 |
|
layerui | 基于css和js封装的开源框架 |
|
bootstrap datatable | bootstrap 推出的一个用于系统列表显示组件 |
|
ajax | 前后端数据交互异步框架 |
|
.............等 | ................ |
|
通过学习这套实战的前端,你完全可以胜任一个公司的前端开发工作,首先你学会了如何规范开发页面样式以及如何自定义各种风格的页面样式,通过学习一些数据交互掌握ajax内部原理。
后端技术栈 | 说明 |
|
spring boot | 当下流行的框架之一 |
|
mybaties | 方便灵活的sql定义让java很好的与数据库交互 |
|
spring sceurity | 安全认证框架保护你程序资源的安全 |
|
logback | 日志组件 |
|
common公共组件 | common公共组件内部数据格式定义、统一异常处理、统一工具集合 |
|
mybaties generator | MVC dao层代码自动加工厂 |
|
第三章如何搭建起来自己的前后端分离项目
- pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.java.cmdb</groupId>
<artifactId>opscmdb</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>cmdb-common</module>
<module>cmdb-mbg</module>
<module>cmdb-admin</module>
</modules>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--MyBatis分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>
<!--集成druid连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
</dependencies>
</project>
spring:
profiles:
active: prod #默认为开发环境
mybatis:
mapper-locations:
- classpath:dao/*.xml
- classpath*:com/**/mapper/*.xml
jwt:
tokenHeader: Authorization #JWT存储的请求头
secret: mySecret #JWT加解密使用的密钥
expiration: 604800 #JWT的超期限时间(60*60*24)
tokenHead: Bearer #JWT负载中拿到开头
aliyun:
oss:
endpoint: oss-cn-shenzhen.aliyuncs.com
accessKeyId: test
accessKeySecret: test
bucketName: macro-oss
policy:
expire: 300
maxSize: 10
callback: http://localhost:8080/aliyun/oss/callback
dir:
prefix: mall/images/
logging:
level:
root: info #日志配置DEBUG,INFO,WARN,ERROR
com.gotop.cmdb: debug
# file: demo_log.log #配置日志生成路径
# path: /var/logs #配置日志文件名称
#增加日志生成路径
path: ./logs
server:
#端口号
port: 8888
- 用工具生成dao层代码
public class CommentGenerator extends DefaultCommentGenerator {
private boolean addRemarkComments = false;
private static final String EXAMPLE_SUFFIX="Example";
private static final String API_MODEL_PROPERTY_FULL_CLASS_NAME="io.swagger.annotations.ApiModelProperty";
/**
* 设置用户配置的参数
*/
@Override
public void addConfigurationProperties(Properties properties) {
super.addConfigurationProperties(properties);
this.addRemarkComments = StringUtility.isTrue(properties.getProperty("addRemarkComments"));
}
/**
* 给字段添加注释
*/
@Override
public void addFieldComment(Field field, IntrospectedTable introspectedTable,
IntrospectedColumn introspectedColumn) {
String remarks = introspectedColumn.getRemarks();
//根据参数和备注信息判断是否添加备注信息
if(addRemarkComments&&StringUtility.stringHasValue(remarks)){
// addFieldJavaDoc(field, remarks);
//数据库中特殊字符需要转义
if(remarks.contains("\"")){
remarks = remarks.replace("\"","'");
}
//给model的字段添加swagger注解
field.addJavaDocLine("@ApiModelProperty(value = \""+remarks+"\")");
}
}
/**
* 给model的字段添加注释
*/
private void addFieldJavaDoc(Field field, String remarks) {
//文档注释开始
field.addJavaDocLine("/**");
//获取数据库字段的备注信息
String[] remarkLines = remarks.split(System.getProperty("line.separator"));
for(String remarkLine:remarkLines){
field.addJavaDocLine(" * "+remarkLine);
}
addJavadocTag(field, false);
field.addJavaDocLine(" */");
}
@Override
public void addJavaFileComment(CompilationUnit compilationUnit) {
super.addJavaFileComment(compilationUnit);
//只在model中添加swagger注解类的导入
if(!compilationUnit.isJavaInterface()&&!compilationUnit.getType().getFullyQualifiedName().contains(EXAMPLE_SUFFIX)){
compilationUnit.addImportedType(new FullyQualifiedJavaType(API_MODEL_PROPERTY_FULL_CLASS_NAME));
}
}
}
4controller层请求接口
@RestController
@RequestMapping("api")
public class UserController {
@Autowired
public UserService userService;
/***
* 分页查询用户
* @return
*/
@RequestMapping(value = "/page/users",method = RequestMethod.GET)
public CommonResult<CommonPage<TbUser>> getUserPage(TbUserRequestVo tbUserRequestVo){
/***
* 分页查询
*/
List<TbUser> list=userService.queryUserByPage(tbUserRequestVo);
return CommonResult.success(CommonPage.restPage(list));
}
/***
* 删除用户
* @param id
* @return
*/
@DeleteMapping("demo/users/{id}")
public CommonResult deluser(@PathVariable Long id){
int result= userService.deluser(id);
if(result>0){
return CommonResult.success(result);
}
return CommonResult.failed();
}
@PostMapping("demo/users/add")
public CommonResult deluser(TbUser user){
int result= userService.addUser(user);
if(result>0){
return CommonResult.success(result);
}
return CommonResult.failed();
}
}
前端集成框架目录
第三章后台运营管理平台的登录如何设计开发
由于我的系统实战属于前后端分离框架开发,我有一个统一名字后台运营平台,因为他可以适用于任何领域的平台,他的业务流程和技术流程可以适用于任何面试场景,比如A公司肯定有系统涉及到登录模块。
要睡着了,有点累了,登录模块和首页列表下一章会介绍