手记

Java全栈资料入门教程

概述

本文提供了关于Java全栈资料的全面指南,涵盖Java基础、后端开发、前端开发以及项目实战等内容。文章还介绍了RESTful API设计、前后端分离开发模式和微服务架构等进阶知识。此外,文中详细讲解了如何使用Spring Boot、Thymeleaf等框架进行开发,并提供了丰富的代码示例和实战项目。Java全栈资料旨在帮助开发者掌握从基础到高级的全栈开发技能。

Java全栈资料入门教程
Java基础入门

Java简介

Java是一种面向对象的编程语言,由Sun Microsystems(现已被Oracle收购)在1995年推出。Java的设计初衷是“一次编写,到处运行”,使得Java程序可以在任何支持Java虚拟机(JVM)的平台上运行,无需修改代码。Java广泛应用于Web应用开发、Android应用开发、大数据处理等领域。

Java开发环境搭建

安装JDK

首先需要下载并安装Java开发工具包(JDK)。访问Oracle官方网站或OpenJDK官方网站,下载对应操作系统的JDK安装包。安装后,配置环境变量。

配置环境变量

在Windows系统中,需要配置JAVA_HOME环境变量,指向JDK的安装目录;同时在PATH环境变量中添加%JAVA_HOME%\bin

JAVA_HOME=C:\Program Files\Java\jdk-17 # 根据实际JDK安装路径设置
PATH=%JAVA_HOME%\bin;%PATH%

检查安装

通过命令行窗口输入java -version命令,检查JDK是否安装成功。

java -version

输出信息中应包含Java版本信息,比如java version "17.0.1"

安装集成开发环境(IDE)

推荐使用Java集成开发环境(IDE)进行编程。常见的IDE包括Eclipse、IntelliJ IDEA和NetBeans。以Eclipse为例,从官网下载Eclipse安装包,解压后双击eclipse.exe启动Eclipse。

Java基本语法

变量与类型

Java程序中可以定义各种类型的变量,常见的类型包括整型、浮点型、字符型和布尔型。

int age = 18;
float price = 19.99f;
char grade = 'A';
boolean isPass = true;

常量

使用final关键字可以定义常量。

final int MAX = 100;

运算符

Java支持常见的算术运算符、关系运算符、逻辑运算符等。

int a = 10, b = 20;
int c = a + b;  // 加法运算
boolean isEqual = a == b;  // 等于运算

条件语句

使用ifswitch语句可以实现条件判断。

int score = 85;
if (score >= 60) {
    System.out.println("及格");
} else {
    System.out.println("不及格");
}

switch (score / 10) {
    case 10:
    case 9:
        System.out.println("优秀");
        break;
    case 8:
    case 7:
        System.out.println("良好");
        break;
    default:
        System.out.println("一般");
}

循环结构

使用forwhiledo-while循环可以实现重复执行代码块。

for (int i = 0; i < 5; i++) {
    System.out.println("数字: " + i);
}

int j = 0;
while (j < 5) {
    System.out.println("数字: " + j);
    j++;
}

int k = 0;
do {
    System.out.println("数字: " + k);
    k++;
} while (k < 5);

数组

Java支持一维数组和多维数组。

int[] numbers = new int[5];
numbers[0] = 1;
numbers[1] = 2;
numbers[2] = 3;
numbers[3] = 4;
numbers[4] = 5;

for (int i = 0; i < numbers.length; i++) {
    System.out.println("数字: " + numbers[i]);
}

int[][] matrix = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

for (int i = 0; i < matrix.length; i++) {
    for (int j = 0; j < matrix[i].length; j++) {
        System.out.print(matrix[i][j] + " ");
    }
    System.out.println();
}

方法

Java中通过定义方法来组织代码,简化程序结构。方法可以有返回值,也可以无返回值。

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
    public void printHello() {
        System.out.println("Hello, World!");
    }
}

public static void main(String[] args) {
    Calculator calc = new Calculator();
    int result = calc.add(10, 20);
    System.out.println("结果: " + result);
    calc.printHello();
}
Java后端开发

Java Web开发框架介绍

Java Web开发框架是用于简化Web应用开发的工具。常见的框架包括Spring MVC、Struts、JSF等。Spring MVC是Spring框架的一部分,提供了一套完整的MVC架构,简化了Web应用开发过程。

Spring Boot入门教程

Spring Boot简化了Spring应用的配置,提供了快速开发的应用框架。以下是Spring Boot的基本使用步骤:

  1. 创建项目

    使用Spring Initializr创建Spring Boot项目,可以选择添加所需的依赖,如Spring Web、JPA等。

  2. 主类

    创建主类,使用@SpringBootApplication注解标记主类。

    @SpringBootApplication
    public class Application {
       public static void main(String[] args) {
           SpringApplication.run(Application.class, args);
       }
    }
  3. 控制器

    创建控制器类,处理HTTP请求。使用@RestController注解标记控制器类。

    @RestController
    public class HelloController {
       @GetMapping("/hello")
       public String hello() {
           return "Hello, World!";
       }
    }
  4. 运行

    运行主类中的main方法,启动Spring Boot应用。默认端口为8080,可以在application.properties文件中修改。

数据库操作与JDBC

Java数据库连接(JDBC)提供了与数据库交互的标准接口。以下是使用JDBC的基本步骤:

  1. 注册驱动

    通过Class.forName方法注册数据库驱动。

    try {
       Class.forName("com.mysql.cj.jdbc.Driver");
    } catch (ClassNotFoundException e) {
       e.printStackTrace();
    }
  2. 获取连接

    使用DriverManager.getConnection方法获取数据库连接。

    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
  3. 执行SQL

    创建Statement对象,执行SQL语句。

    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT * FROM users");
  4. 处理结果

    遍历ResultSet对象,处理查询结果。

    while (rs.next()) {
       int id = rs.getInt("id");
       String name = rs.getString("name");
       System.out.println("ID: " + id + ", Name: " + name);
    }
  5. 插入数据

    使用PreparedStatement插入数据。

    PreparedStatement pstmt = conn.prepareStatement("INSERT INTO users (id, name) VALUES (?, ?)");
    pstmt.setInt(1, 1);
    pstmt.setString(2, "张三");
    pstmt.executeUpdate();
Java前端开发

Java前端开发基础

Java主要用于后端开发,但也可以通过一些框架如Spring Boot和Thymeleaf进行前端开发。Thymeleaf是一种服务器端模板引擎,可以渲染HTML页面。

前端模板示例

在Spring Boot项目中,可以使用Thymeleaf模板引擎渲染HTML页面。

  1. 添加依赖

    pom.xmlbuild.gradle文件中添加Thymeleaf依赖。

    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
  2. 创建模板文件

    src/main/resources/templates目录下创建HTML模板文件。

    <!DOCTYPE html>
    <html xmlns:th="http://www.thymeleaf.org">
    <head>
       <title th:text="${title}">标题</title>
    </head>
    <body>
       <p th:text="${message}">消息</p>
    </body>
    </html>
  3. 控制器

    创建控制器类,渲染模板文件。

    @Controller
    public class TemplateController {
       @GetMapping("/home")
       public String home(Model model) {
           model.addAttribute("title", "首页");
           model.addAttribute("message", "欢迎访问主页");
           return "home";
       }
    }

JavaScript入门

JavaScript是一种解释性脚本语言,用于在Web页面中添加交互性。以下是JavaScript的基本语法:

变量与类型

JavaScript支持多种类型,如字符串、数字、布尔值、数组和对象。

var name = "张三";
var age = 18;
var isStudent = true;
var hobbies = ["看书", "运动"];
var person = {
    name: "李四",
    age: 20
};

函数

使用function关键字定义函数。

function add(a, b) {
    return a + b;
}
var result = add(10, 20);
console.log(result);

DOM操作

通过JavaScript可以操作HTML元素,实现动态网页效果。

var button = document.getElementById("button");
button.addEventListener("click", function() {
    var text = document.getElementById("text");
    text.innerHTML = "按钮被点击了";
});

HTML与CSS基础

HTML(HyperText Markup Language)是用于创建Web页面的标准标记语言。CSS(Cascading Style Sheets)用于描述HTML元素的表现样式。

HTML示例

创建一个简单的HTML页面。

<!DOCTYPE html>
<html>
<head>
    <title>测试页面</title>
</head>
<body>
    <h1>欢迎来到测试页面</h1>
    <p>欢迎访问这个简单的HTML页面。</p>
</body>
</html>

CSS示例

使用内联样式、内部样式表和外部样式表修改HTML元素的样式。

<!DOCTYPE html>
<html>
<head>
    <style>
        h1 {
            color: blue;
        }
        p {
            font-size: 18px;
        }
    </style>
</head>
<body>
    <h1>欢迎来到测试页面</h1>
    <p >欢迎访问这个简单的HTML页面。</p>
</body>
</html>
Java全栈项目实战

简单项目需求分析

假设要开发一个简单的图书管理系统,主要功能包括添加、删除、查询图书信息。

项目设计与规划

  1. 数据库设计

    设计图书表books,包含字段idtitleauthorprice

  2. 后端开发

    使用Spring Boot开发后端服务,提供添加、删除、查询图书信息的API。

  3. 前端开发

    使用Thymeleaf模板引擎渲染HTML页面,使用JavaScript实现与后端交互。

项目实现与部署

后端实现

  1. 添加依赖

    pom.xml文件中添加Spring Boot和Thymeleaf依赖。

    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
  2. 创建实体类

    创建图书实体类Book

    @Entity
    public class Book {
       @Id
       @GeneratedValue(strategy = GenerationType.IDENTITY)
       private Long id;
       private String title;
       private String author;
       private Double price;
    
       // 省略构造方法、getter和setter方法
    }
  3. 创建数据访问层

    创建BookRepository接口,继承JpaRepository接口。

    public interface BookRepository extends JpaRepository<Book, Long> {
    }
  4. 创建服务层

    创建BookService类,提供业务逻辑。

    @Service
    public class BookService {
       @Autowired
       private BookRepository bookRepository;
    
       public List<Book> findAllBooks() {
           return bookRepository.findAll();
       }
    
       public Book saveBook(Book book) {
           return bookRepository.save(book);
       }
    
       public void deleteBook(Long id) {
           bookRepository.deleteById(id);
       }
    }
  5. 创建控制器

    创建BookController类,提供RESTful API。

    @RestController
    public class BookController {
       @Autowired
       private BookService bookService;
    
       @GetMapping("/books")
       public List<Book> getAllBooks() {
           return bookService.findAllBooks();
       }
    
       @PostMapping("/books")
       public Book saveBook(@RequestBody Book book) {
           return bookService.saveBook(book);
       }
    
       @DeleteMapping("/books/{id}")
       public void deleteBook(@PathVariable Long id) {
           bookService.deleteBook(id);
       }
    }

前端实现

  1. 创建模板文件

    src/main/resources/templates目录下创建HTML模板文件。

    <!DOCTYPE html>
    <html xmlns:th="http://www.thymeleaf.org">
    <head>
       <title th:text="${title}">图书管理系统</title>
    </head>
    <body>
       <h1 th:text="${title}">图书管理系统</h1>
       <ul>
           <li th:each="book : ${books}">
               <span th:text="${book.title}">书名</span>
               <span th:text="${book.author}">作者</span>
               <span th:text="${book.price}">价格</span>
           </li>
       </ul>
       <form id="book-form">
           <input type="text" id="title" placeholder="书名">
           <input type="text" id="author" placeholder="作者">
           <input type="number" id="price" placeholder="价格">
           <button type="submit">添加</button>
       </form>
    </body>
    </html>
  2. 创建控制器

    创建控制器类,渲染模板文件。

    @Controller
    public class BookController {
       @Autowired
       private BookService bookService;
    
       @GetMapping("/")
       public String home(Model model) {
           model.addAttribute("title", "图书管理系统");
           model.addAttribute("books", bookService.findAllBooks());
           return "home";
       }
    }
  3. JavaScript实现

    使用JavaScript实现与后端交互。

    <script>
       function addBook() {
           var title = document.getElementById("title").value;
           var author = document.getElementById("author").value;
           var price = document.getElementById("price").value;
           var book = { title: title, author: author, price: price };
           fetch("/books", {
               method: "POST",
               headers: { "Content-Type": "application/json" },
               body: JSON.stringify(book)
           }).then(response => response.json())
           .then(data => {
               location.reload();
           });
       }
       document.getElementById("book-form").addEventListener("submit", function(event) {
           event.preventDefault();
           addBook();
       });
    </script>

部署

使用Maven或Gradle构建项目,将生成的jar文件部署到Tomcat或其他应用服务器上。

  1. 构建项目

    在命令行窗口中运行以下命令构建项目。

    mvn clean package
  2. 启动应用

    将生成的jar文件复制到应用服务器的webapps目录下,启动应用服务器。

Java实用工具与框架

Maven与Gradle构建工具

Maven和Gradle是用于构建Java项目的工具,可以管理项目依赖、编译代码、运行测试、打包项目等操作。

Maven

  1. 添加POM文件

    在项目根目录下创建pom.xml文件,配置项目信息和依赖。

    <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.example</groupId>
       <artifactId>example</artifactId>
       <version>1.0-SNAPSHOT</version>
       <dependencies>
           <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-web</artifactId>
               <version>2.3.4.RELEASE</version>
           </dependency>
           <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-thymeleaf</artifactId>
               <version>2.3.4.RELEASE</version>
           </dependency>
       </dependencies>
    </project>
  2. 构建项目

    在命令行窗口中运行以下命令构建项目。

    mvn clean install

Gradle

  1. 添加构建文件

    在项目根目录下创建build.gradle文件,配置项目信息和依赖。

    plugins {
       id 'org.springframework.boot' version '2.3.4.RELEASE'
       id 'io.spring.dependency-management' version '1.0.10.RELEASE'
       id 'java'
    }
    
    repositories {
       mavenCentral()
    }
    
    dependencies {
       implementation 'org.springframework.boot:spring-boot-starter-web'
       implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    }
  2. 构建项目

    在命令行窗口中运行以下命令构建项目。

    gradle build

Git版本控制工具

Git是一种分布式版本控制系统,用于管理代码版本。以下是使用Git的基本步骤:

  1. 安装Git

    访问Git官方网站,下载并安装Git。

  2. 配置Git

    配置用户名和邮箱,以便在提交代码时显示相关信息。

    git config --global user.name "张三"
    git config --global user.email "zhangsan@example.com"
  3. 初始化仓库

    在命令行窗口中进入项目目录,运行以下命令初始化Git仓库。

    git init
  4. 提交代码

    使用git add命令将文件添加到仓库,使用git commit命令提交更改。

    git add .
    git commit -m "初始提交"
  5. 远程仓库

    创建远程仓库,将本地仓库与远程仓库关联。

    git remote add origin https://github.com/username/repo.git
    git push -u origin master

MyBatis与Hibernate持久层框架

MyBatis和Hibernate是用于持久化数据的框架,可以简化数据库操作。

MyBatis入门

  1. 添加依赖

    pom.xml文件中添加MyBatis依赖。

    <dependency>
       <groupId>org.mybatis.spring.boot</groupId>
       <artifactId>mybatis-spring-boot-starter</artifactId>
       <version>2.1.4</version>
    </dependency>
  2. 配置数据库

    application.properties文件中配置数据库连接信息。

    spring.datasource.url=jdbc:mysql://localhost:3306/test
    spring.datasource.username=root
    spring.datasource.password=password
  3. 创建映射文件

    创建BookMapper.xml文件,编写SQL语句。

    <mapper namespace="com.example.BookMapper">
       <select id="findAllBooks" resultType="com.example.Book">
           SELECT * FROM books
       </select>
       <insert id="saveBook" useGeneratedKeys="true" keyProperty="id">
           INSERT INTO books (title, author, price) VALUES (#{title}, #{author}, #{price})
       </insert>
       <delete id="deleteBook">
           DELETE FROM books WHERE id = #{id}
       </delete>
    </mapper>
  4. 创建接口

    创建接口BookMapper,定义方法。

    public interface BookMapper {
       List<Book> findAllBooks();
       int saveBook(Book book);
       int deleteBook(Long id);
    }
  5. 创建服务

    创建BookService类,实现业务逻辑。

    @Service
    public class BookService {
       @Autowired
       private BookMapper bookMapper;
    
       public List<Book> findAllBooks() {
           return bookMapper.findAllBooks();
       }
    
       public int saveBook(Book book) {
           return bookMapper.saveBook(book);
       }
    
       public int deleteBook(Long id) {
           return bookMapper.deleteBook(id);
       }
    }

Hibernate入门

  1. 添加依赖

    pom.xml文件中添加Hibernate依赖。

    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
  2. 配置数据库

    application.properties文件中配置数据库连接信息。

    spring.datasource.url=jdbc:mysql://localhost:3306/test
    spring.datasource.username=root
    spring.datasource.password=password
    spring.jpa.hibernate.ddl-auto=update
  3. 创建实体类

    创建图书实体类Book,添加JPA注解。

    @Entity
    public class Book {
       @Id
       @GeneratedValue(strategy = GenerationType.IDENTITY)
       private Long id;
       private String title;
       private String author;
       private Double price;
    
       // 省略构造方法、getter和setter方法
    }
  4. 创建接口

    创建接口BookRepository,继承JpaRepository接口。

    public interface BookRepository extends JpaRepository<Book, Long> {
    }
  5. 创建服务

    创建BookService类,实现业务逻辑。

    @Service
    public class BookService {
       @Autowired
       private BookRepository bookRepository;
    
       public List<Book> findAllBooks() {
           return bookRepository.findAll();
       }
    
       public Book saveBook(Book book) {
           return bookRepository.save(book);
       }
    
       public void deleteBook(Long id) {
           bookRepository.deleteById(id);
       }
    }
Java全栈开发进阶

RESTful API设计

RESTful API是一种基于HTTP协议设计的API风格,具有良好的可扩展性和可维护性。以下是设计RESTful API的基本原则:

  1. 资源

    将业务逻辑抽象为资源,每个资源通过唯一的URL标识。

  2. 操作

    使用HTTP动词表示资源的操作,常见的动词包括GET、POST、PUT和DELETE。

  3. 状态码

    使用HTTP状态码表示请求的响应状态,常见的状态码包括200(成功)、201(创建)、400(错误请求)和500(服务器错误)。

示例

设计图书管理系统的RESTful API。

  1. 获取所有图书

    GET /books
  2. 获取单个图书

    GET /books/{id}
  3. 添加图书

    POST /books
    Content-Type: application/json
    {
       "title": "书名",
       "author": "作者",
       "price": 价格
    }
  4. 更新图书

    PUT /books/{id}
    Content-Type: application/json
    {
       "title": "书名",
       "author": "作者",
       "price": 价格
    }
  5. 删除图书

    DELETE /books/{id}

前后端分离开发模式

前后端分离开发模式将前端和后端开发分离,前端负责页面渲染和交互,后端负责数据处理和业务逻辑。前后端通过HTTP协议进行交互,后端提供RESTful API。

前端实现

  1. 创建页面

    使用HTML、CSS和JavaScript创建前端页面。

    <!DOCTYPE html>
    <html>
    <head>
       <title>图书管理系统</title>
       <style>
           /* CSS样式 */
       </style>
    </head>
    <body>
       <h1>图书管理系统</h1>
       <ul id="books">
           <!-- 图书列表 -->
       </ul>
       <form id="book-form">
           <input type="text" name="title" placeholder="书名">
           <input type="text" name="author" placeholder="作者">
           <input type="number" name="price" placeholder="价格">
           <button type="submit">添加</button>
       </form>
       <script>
           // JavaScript代码
       </script>
    </body>
    </html>
  2. JavaScript代码

    使用JavaScript实现与后端交互。

    document.getElementById("book-form").addEventListener("submit", function(event) {
       event.preventDefault();
       var title = document.getElementsByName("title")[0].value;
       var author = document.getElementsByName("author")[0].value;
       var price = document.getElementsByName("price")[0].value;
       var book = { title: title, author: author, price: price };
       fetch("/books", {
           method: "POST",
           headers: { "Content-Type": "application/json" },
           body: JSON.stringify(book)
       }).then(response => response.json())
       .then(data => {
           location.reload();
       });
    });

后端实现

  1. 创建API

    使用Spring Boot创建RESTful API。

    @RestController
    public class BookController {
       @Autowired
       private BookService bookService;
    
       @GetMapping("/books")
       public List<Book> getAllBooks() {
           return bookService.findAllBooks();
       }
    
       @PostMapping("/books")
       public Book saveBook(@RequestBody Book book) {
           return bookService.saveBook(book);
       }
    
       @PutMapping("/books/{id}")
       public Book updateBook(@PathVariable Long id, @RequestBody Book book) {
           book.setId(id);
           return bookService.saveBook(book);
       }
    
       @DeleteMapping("/books/{id}")
       public void deleteBook(@PathVariable Long id) {
           bookService.deleteBook(id);
       }
    }

微服务架构入门

微服务架构将应用程序拆分为一组小型、独立的服务,每个服务负责单一功能,通过API交互。微服务架构具有更好的可扩展性和灵活性。

微服务介绍

微服务架构将单体应用拆分为多个独立的服务,每个服务负责一个功能模块。服务之间通过HTTP协议进行通信,可以使用API网关聚合多个服务的API。

示例

假设要开发一个在线购物系统,可以将其拆分为订单服务、商品服务、用户服务等多个服务。

  1. 订单服务

    负责处理订单相关业务,包括创建订单、查询订单等。

  2. 商品服务

    负责管理商品信息,包括查询商品、添加商品等。

  3. 用户服务

    负责管理用户信息,包括登录、注册、查询用户等。

构建微服务

  1. 创建服务

    使用Spring Boot或其他框架创建多个服务。

  2. 注册中心

    使用Eureka或Consul等服务注册中心注册服务。

  3. API网关

    使用Spring Cloud Gateway或Kong等API网关聚合多个服务的API。

  4. 配置中心

    使用Spring Cloud Config或Apollo等配置中心管理配置。

通过以上步骤,可以构建一个可扩展、可维护的微服务架构。

0人推荐
随时随地看视频
慕课网APP