0%

JAVAWEB环境配置

JDK

# 下载了 Java 8(LTS) macOS ARM64-bit 版本的JDK
jiangangkong@JiangangdeMacBook-Pro ~ %/usr/libexec/java_home -V
Matching Java Virtual Machines (1):
1.8.0_322 (arm64) "Azul Systems, Inc." - "Zulu 8.60.0.21" /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
# 在 macOS 系统中, 默认情况下, Java 可执行文件的符号链接位于 "/usr/bin/java"
# 这个符号链接实际上指向 JDK 安装目录中的 Java 可执行文件
# 因此, 当在终端中运行 "java" 命令时, 操作系统会通过 "/usr/bin/java" 路径找到 JDK 中的 Java 可执行文件并执行它
# 意味着你的系统已经正确配置了 JDK,并且可以使用 Java 开发和运行应用程序
jiangangkong@JiangangdeMacBook-Pro ~ %which java
/usr/bin/java

JDK(Java Development Kit)是用于开发和编译Java应用程序的软件包。它包含了Java开发所需的各种工具、库和资源。主要组件有:

  1. Java编译器(javac):用于将Java源代码编译为Java字节码文件。
  2. Java虚拟机(JVM):执行Java字节码的运行时环境。
  3. 核心类库(Java Class Library):提供了大量的预定义类和方法,用于常见任务的处理,如字符串操作、输入输出、网络通信、图形用户界面等。
  4. 调试工具:用于帮助开发人员调试和诊断Java应用程序,如调试器(jdb)和Java虚拟机监视器接口(Java VisualVM)。
  5. 开发工具:包括用于创建、构建和管理Java应用程序的各种工具,如Java编译器、打包工具(jar)、文档生成工具(javadoc)等。
  6. 示例代码和示例应用程序:用于帮助开发人员学习和理解Java编程的示例代码和示例应用程序。
  7. 文档和API参考:包括Java编程语言规范、核心类库的文档、开发工具的使用指南等。

总之,JDK提供了完整的Java开发环境,包括编译器、运行时环境、核心类库、开发工具和文档,使开发人员能够开发、调试和部署Java应用程序。

Apache Maven

# 配置环境变量
vim ~/.bash_profile
source ~/.bash_profile
# 配置阿里云镜像仓库
vim /Users/jiangangkong/devTools/apache-maven-3.9.2/conf/settings.xml
# 加入以下内容
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
jiangangkong@JiangangdeMacBook-Pro ~ %mvn -v
Apache Maven 3.9.2 (c9616018c7a021c1c39be70fb2843d6f5f9b8a1c)
Maven home: /Users/jiangangkong/devTools/apache-maven-3.9.2
Java version: 1.8.0_322, vendor: Azul Systems, Inc., runtime: /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "13.3.1", arch: "aarch64", family: "mac"
  • 可以帮助我们构建项目、管理项目中的jar包

  • Maven仓库:存放构件(在构建项目时所依赖的插件,Jar包等)的位置

    • 本地仓库:默认是~/.m2/repository
    • 远程仓库: 中央仓库(Maven官网)、镜像仓库(阿里云)、私服仓库(公司的仓库)
  • 示例:安装、配置、常用命令

IDEA配置maven

如果在选择maven模板时出现问题不能生成项目,就选择Bundled Maven

image-20230519160154466

Spring全家桶

Spring Boot

Spring Boot 核心作用: 起步依赖、自动配置、端点监控

Spring Initializr

创建 Spring Boot 项目的引导工具

底层还是Maven,只是一下子可以整合进来一批Maven依赖

image-20230601154116639

在pom.xml中加入

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-aop -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
<version>3.1.0</version>
</dependency>

Spring Frame

  • Spring Core

    • IOC, AOP 【由Spring管理的对象,通常称为bean】
  • Spring Data Access

    • Transactions, Spring MyBatis
  • Web Servlet

    • Spring MVC
  • Integration

    • Email, Scheduling. AMQP. Security
SpringCore - IOC

image-20230602140543750

与Bean相关的注解

类(Bean)上需要有注解才能被扫描。在Spring中,常用的与Bean相关的注解有以下四种:

  1. @Component: 是最通用的注解,用于将一个类声明为Spring容器中的一个组件。它是其他注解的基础,可以用于任何类。
  2. @Repository: 用于标识一个类为数据访问组件,通常用于DAO(Data Access Object)层的类。
  3. @Service: 用于标识一个类为服务层组件,通常用于封装业务逻辑的类。
  4. @Controller: 用于标识一个类为控制器组件,通常用于处理用户请求的类。
SpringMVC

image-20230603133831743

image-20230603143019343

DispatcherServlet调度MVC, 共同解决表现层的问题

在Spring MVC中,请求首先由前端控制器(Front Controller)即DispatcherServlet接收,并将其转发给适当的Controller。Controller处理请求后,将模型数据存储在适当的数据结构中,然后选择合适的视图来呈现响应。最终,视图将模型的数据填充到模板中,并生成响应发送给客户端。

image-20230603142733450

视图层我们要写 两部分代码, 如下图↓

(Thymeleaf根据templates和Model生成View返回给用户, Model已经写好了不用我们写)

image-20230603150017976

Spring MyBatis

image-20230604142653644

整合

在pom.xml中加入

<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.32</version>
</dependency>

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.1</version>
</dependency>

创建entity包与mapper目录, dao目录下写对应的CRUD业务接口

image-20230604150750889

src/main/resources/application.properties

# Project
server.port=8080
server.servlet.context-path=/community

# Thymeleaf
spring.thymeleaf.cache=false

# SpringMVC
spring.mvc.hiddenmethod.filter.enabled=true

# MySQL and Connection Pool
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/community?characterEncoding=utf-8&useSSL=false&severTimezone=HongKong
spring.datasource.username=root
spring.datasource.password=00000000
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.maximum-pool-size=15
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.idle-timeout=30000

# MyBatis
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.example.community.entity
mybatis.configuration.use-generated-keys=true
mybatis.configuration.map-underscore-to-camel-case=true

Spring Cloud

Spring Cloud Data Flow

业务

发邮件

image-20230607131846936

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-mail -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>3.1.0</version>
</dependency>

注册功能

image-20230618000634351

引入字符串判空的依赖

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>

会话管理

image-20230619123921448

生成验证码

image-20230619163858518

<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
</dependency>


<dependency>
<groupId>com.jhlabs</groupId>
<artifactId>filters</artifactId>
<version>2.0.235-1</version>
</dependency>

IDEA调试

  • 响应状态码的含义

    1xx:表示请求已接收,继续处理

    2xx:成功–表示请求已被成功接收、理解、接受

    3xx:重定向–要完成请求必须进行更进一步的操作

    4xx:客户端错误–请求有语法错误或请求无法实现

    5xx:服务器端错误–服务器未能实现合法的请求

  • 服务端断点调试技巧

    IDEA中调试

    fn + f7 : 向下执行一行进入调用的方法

    fn + f8 : 向下执行一行不进入调用的方法

    fn + f9 : 向下执行到下一个断点

  • 客户端断点调试技巧

    浏览器中调试

    fn + f10 : 向下执行一行不进入调用的方法

    fn + f11 : 向下执行一行进入调用的方法

    fn + f8 : 向下执行到下一个断点

  • 设置日志级别,并将日志输出到不同终端

    springboot 默认集成的是logback

    image-20230606204810058

法一:

private static final Logger logger = LoggerFactory.getLogger(LoggerTest.class);

法二:

image-20230607105222056

IDEA版本控制

BUG

chrome打开不了网页

连vpn访问一次

Cannot resolve Failure to transfer xxx from …

Cannot resolve Failure to transfer com.jhlabs:filters:pom:2.0.235-1 from https://maven.aliyun.com/repository/central was cached in the local repository, resolution will not be reattempted until the update interval of alimaven has elapsed or updates …

在 .m2本地仓库下把相应的*.LastUpdated 删掉