尼采般地抒情

公告栏

此网站主题为本人手写主题, 主题待开源···

站点信息

文章总数目: 305
已运行时间: 1063
目录
  1. 开发环境搭建
    1. MySQL下载安装
    2. IDEA下载安装
    3. java下载安装
    4. Maven下载安装
  2. 创建springboot应用程序
    1. Maven模板快速创建项目
    2. 配置Maven的settings文件
    3. 添加 src/main/java 目录
    4. pom.xml 添加项目依赖 jar 包
  3. 运行 springboot 应用程序
    1. 测试代码
    2. 静态资源
    3. idea 实时刷新前端代码设置
  4. 前后端架构
  5. 前端
    1. jQuery 的 Ajax 的使用
    2. 原生 JavaScript 的 Ajax 使用
    3. AdminLTE 框架
    4. 构建管理类系统的静态页模板
  6. 后端:Springboot 学习
    1. 参考资料
    2. @SpringBootApplication
    3. @Controller
    4. @RequestMapping("test")
    5. @responseBody
    6. @RestController
  7. 后端:数据库学习
    1. 表关系
    2. 数据表的初始化
  8. MyBatis 逆向工程
    1. 添加数据库账户及授权
    2. pom.xml 添加依赖
    3. 编写逆向工程的配置文件 generatorConfig.xml 和 Generator.java
  9. 报错
    1. SpringBoot 启动报错 Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured
    2. Consider defining a bean of type 'com.cn.shixun.mapper.UserMapper' in your configuration.
    3. nio-8080-exec-1

尼采般地抒情

尼采般地抒情

公告栏

此网站主题为本人手写主题, 主题待开源···

站点信息

文章总数目: 305
已运行时间: 1063

校内实习笔记

开发环境搭建

MySQL下载安装

成功如下:

再配置环境变量(和java环境变量配置一样)


IDEA下载安装

IDEA下载:https://www.jetbrains.com.cn/idea/download/#section=windows

java下载安装

需要下载1.8版本的,之前版本删掉

Maven下载安装

创建springboot应用程序

Maven模板快速创建项目

找到下面的选项快速创建

配置Maven的settings文件

关于cong文件夹中的settings.xml文件(D:\maven\conf):

  • maven用来构建项目
  • java需要外部的jar包,外网的中央仓库,下载本地仓库
  • setting.xml文件里面的盘符注意
<localRepository>D:/lib_repo/repository</localRepository>
  • 用阿里的源站下载
  <mirrors>

     <!-- 这里使用的是阿里的远程maven镜像,目前国内大多数都使用它 -->
     <mirror>
         <id>alimaven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <mirrorOf>central</mirrorOf>
    </mirror>

</mirrors>

添加 src/main/java 目录

pom.xml 添加项目依赖 jar 包

打开 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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.cn.shicun</groupId>
<artifactId>emis</artifactId>
<version>1.0-SNAPSHOT</version>

    <name>emis</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <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>
    </dependencies>
    <build>

    </build>

</project>

点击右上角蓝色更新按钮

然后 idea 会自动下载这些 jar 包(Maven 优势之一,就是会自动下载 jar 包)

下载成功如下所示:

运行 springboot 应用程序

测试代码

如下位置写入如下代码:

package com.cn.shixun;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App
{
public static void main( String[] args )
{
SpringApplication.run(App.class);
}
}

静态资源

然后在 resources 新建文件夹 static,在其中写入 index.html 文件,然后运行 App 代码

idea 实时刷新前端代码设置

前后端架构

前端

jQuery 的 Ajax 的使用

jQuery 其他相关笔记之前已经学过,不做赘述,此文只做 Ajax 相关的笔记

// Ajax ===============================================================
let ajaxDemo = function(){
$.ajax({
type : "post",
url : "https://127.0.0.1:8080/test/demo2",
data : {
"name" : "李四",
"age" : 14
},
// dataType : "json",
success : function(data) {// 后端的返回值
alert(data);
}
});
}
<input type="button" value="ajax点击按钮" onclick="ajaxDemo();">

原生 JavaScript 的 Ajax 使用


function ajax (options) {
// 默认值
var defaults = {
type: 'get',
url: '',
data: {},
header: {
'Content-Type': 'application/x-www-form-urlencoded'
},
success: function () {},
error: function () {}
}
// 使用用户传递的参数替换默认值参数
Object.assign(defaults, options);
// 创建 ajax 对象
var xhr = new XMLHttpRequest();
// 参数拼接变量
var params = '';
// 循环参数
for (var attr in defaults.data) {
// 参数拼接
params += attr + '=' + defaults.data[attr] + '&';
// 去掉参数中最后一个&
params = params.substr(0, params.length-1)
}
// 如果请求方式为 get
if (defaults.type == 'get') {
// 将参数拼接在 url 地址的后面
defaults.url += '?' + params;
}

    // 配置ajax请求
    xhr.open(defaults.type, defaults.url);
    // 如果请求方式为post
    if (defaults.type == 'post') {
        // 设置请求头
        xhr.setRequestHeader('Content-Type', defaults.header['Content-Type']);
        // 如果想服务器端传递的参数类型为json
        if (defaults.header['Content-Type'] == 'application/json') {
            // 将json对象转换为json字符串
            xhr.send(JSON.stringify(defaults.data))
        }else {
            // 发送请求
            xhr.send(params);
        }
    } else {
        xhr.send();
    }
    // 请求加载完成
    xhr.onload = function () {
        // 获取服务器端返回数据的类型
        var contentType = xhr.getResponseHeader('content-type');
        // 获取服务器端返回的响应数据
        var responseText = xhr.responseText;
        // 如果服务器端返回的数据是json数据类型
        if (contentType.includes('application/json')) {
            // 将json字符串转换为json对象
            responseText = JSON.parse(responseText);
        }
        // 如果请求成功
        if (xhr.status == 200) {
            // 调用成功回调函数, 并且将服务器端返回的结果传递给成功回调函数
            defaults.success(responseText, xhr);
        } else {
            // 调用失败回调函数并且将xhr对象传递给回调函数
            defaults.error(responseText, xhr);
        }
    }
    // 当网络中断时
    xhr.onerror = function () {
        // 调用失败回调函数并且将xhr对象传递给回调函数
        defaults.error(xhr);
    }

}


AdminLTE 框架

文档:https://adminlte.io/

下载 adminlte 及其依赖放到静态文件夹

使用 jsDelivr 外链来构建

https://cdn.jsdelivr.net/npm/admin-lte@3.2/dist/css/adminlte.min.css

https://cdn.jsdelivr.net/npm/admin-lte@3.2/plugins/fontawesome-free/css/all.min.css

构建管理类系统的静态页模板

利用 AdminLTE UI 模板搭建出项目所需的目的页面(在 static 里面写出想要的各种效果)

管理类系统的页面类型大概有以下几类:

  1. 登录页(大多数的管理类系统都没有注册页,需要通过用户管理模块增加用户)。

http://127.0.0.1:8080/pages/login.html

  1. 欢迎页,登录成功后进入的首页。

http://127.0.0.1:8080/pages/index.html

  1. 列表页,展示数据集合的表格,一般带分页和查询功能,展示的每行数据的最后会有可以点击的“修改”和“删除”功能。
  2. 新增/修改页,一个 form 表单,同一个的功能模块的新增/修改页的表单元素是一致的,只是修改页需要回填数据。
  3. 其他特殊页,例如在线答题页、数据统计页、文件上传页等等,这些在管理类系统中的占比很小。

后端:Springboot 学习

记录一下框架的 API 使用

参考资料


vscode 运行 springboot 项目


SpringBoot 编写接口


@SpringBootApplication

主要方法是通过调用 run 来委托 Spring Boot 的 SpringApplication 类。

SpringApplication 引导我们的应用程序,从 Spring 开始,然后启动自动配置的 Tomcat Web 服务器。

我们需要将 Example.class 作为参数传递给 run 方法,以告诉 SpringApplication 哪个是主要的 Spring 组件。

还会传递 args 数组以公开任何命令行参数。

springboot 的启动类是有作用范围的

@Controller

所创建的类是一个 web @Controller,所以 Spring在处理传入的 Web 请求时会考虑它

@RequestMapping("test")

@RequestMapping 注释提供“路由”信息。它告诉 Spring 任何带有/test 路径的 HTTP 请求都应该映射到所写的 test 方法。

@responseBody

@responseBody 注解的作用是将 controller 的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到 response 对象的 body 区,通常用来返回 JSON 数据回格式是 text/json(或者是 XML)数据,需要注意的呢,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过 response 对象输出指定格式的数据。

@RestController

类上写上注解 @RestController,那么此 Controller 返回格式就都是 text/json


后端:数据库学习

表关系

权限控制:

RBAC,role based access control,基于角色的访问控制

用户,角色,功能(项目的粒度到二级菜单即可)

user,user*role,role,role_menu,menu 用户*角色组,角色则,角色组\_角色


数据表的初始化

连接本地数据库

按照教程初始化各个数据库


构建实体类---如果手动构建,需要单独给每个表生成 Getter Setter,所以使用下面讲的 mybits 逆向工程构建。

MyBatis 逆向工程

添加数据库账户及授权

参考:navicat 创建用户以及设置权限

账号密码都是:mybatis

创建成功后如下:

pom.xml 添加依赖

 <dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<!--
        1、如果你的数据库是mysql8,这段<version>5.1.32</version>不用管
        2、如果你的数据库是mysql5.x,放开<version>5.1.32</version>这段注释
        -->
<version>5.1.32</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.0</version>
</dependency>

编写逆向工程的配置文件 generatorConfig.xml 和 Generator.java

运行 Generator 类的 main 方法生成实体类、mapper 接口和 mapper 的 xml 文件

每次生成逆向工程之前,要把之前生成的文件全部删除


<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.73</version>
</dependency>


报错

SpringBoot 启动报错 Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2022-02-27 20:30:12.439 ERROR 12672 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :

---

APPLICATION FAILED TO START

---

Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine a suitable driver class

Action:

Consider the following:
If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).

Process finished with exit code 1

启动类添加如下:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

参考:https://www.panziye.com/java/1873.html

Consider defining a bean of type 'com.cn.shixun.mapper.UserMapper' in your configuration.

参考:https://blog.csdn.net/zzldm/article/details/116534419

nio-8080-exec-1

属于正常情况

 . \_**\_ \_ ** \_ \_
/\\ / **_'_ ** \_ _(_)_ \_\_ \_\_ _ \ \ \ \
( ( )\_** | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/ \_**)| |_)| | | | | || (_| | ) ) ) )
' |\_**\_| .**|_| |_|_| |_\__, | / / / /
=========|_|==============|_\_\_/=/_/_/_/
:: Spring Boot :: (v2.6.2)

2022-02-27 20:46:14.796 INFO 9608 --- [ main] com.App : Starting App using Java 1.8.0_151 on DESKTOP-QTVR7IE with PID 9608 (D:\projects\emis\target\classes started by wztli in D:\projects\emis)
2022-02-27 20:46:14.799 INFO 9608 --- [ main] com.App : No active profile set, falling back to default profiles: default
2022-02-27 20:46:16.451 INFO 9608 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2022-02-27 20:46:16.464 INFO 9608 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2022-02-27 20:46:16.464 INFO 9608 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.56]
2022-02-27 20:46:16.582 INFO 9608 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2022-02-27 20:46:16.582 INFO 9608 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1721 ms
2022-02-27 20:46:16.996 INFO 9608 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2022-02-27 20:46:17.010 INFO 9608 --- [ main] com.App : Started App in 2.708 seconds (JVM running for 3.193)
2022-02-27 20:46:17.075 INFO 9608 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2022-02-27 20:46:17.075 INFO 9608 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2022-02-27 20:46:17.076 INFO 9608 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms

评论区

Twikoo giscus