为了账号安全,请及时绑定邮箱和手机立即绑定

Java全栈入门教程:从零开始的全栈开发之旅

标签:
Java
概述

本文详细介绍了Java全栈入门所需的基础知识,内容涵盖Java语言基础、开发环境搭建、面向对象编程以及Web开发等。通过实战项目,读者可以学习到如何使用Spring Boot和前端技术开发一个简单的全栈应用。文章还详细介绍了数据库操作和ORM框架的使用,帮助读者全面掌握Java全栈开发技能。

Java基础入门

Java简介

Java是一种广泛使用的面向对象编程语言,由Sun Microsystems(现已被Oracle收购)于1995年推出。Java具有跨平台性、安全性高、性能稳定等特点,广泛应用于企业级应用、Android开发、大数据处理等领域。Java的语言设计旨在实现“一次编写,到处运行”的理念,使得Java程序可以在任何支持Java虚拟机(JVM)的平台上运行。

Java程序由Java编译器编译成字节码(.class文件),然后由Java虚拟机(JVM)解释执行。这种机制使得Java程序具有很强的移植性,不受操作系统和硬件平台的影响。

安装Java开发环境

  1. 安装JDK(Java Development Kit)

    首先需要下载并安装JDK。你可以从Oracle官方网站下载最新版本的JDK,或者使用其他版本(如OpenJDK)。下载完成后,按照安装向导进行安装。

    # 检查JDK是否安装成功
    java -version

    该命令用于检查已安装的JDK版本信息。如果安装成功,会显示具体的版本号。

  2. 配置环境变量

    安装完毕后,需要配置环境变量。确保JDK的bin目录路径已添加到系统的环境变量PATH中。

    # 设置环境变量(Linux/MacOS)
    export PATH=/path/to/jdk/bin:$PATH
    
    # 设置环境变量(Windows)
    set PATH=C:\path\to\jdk\bin;%PATH%
  3. 安装IDE(集成开发环境)

    下载并安装一个IDE,如IntelliJ IDEA、Eclipse或NetBeans,用于编写和调试Java代码。

    • IntelliJ IDEA

      IntelliJ IDEA是一个由JetBrains开发的强大的Java IDE,提供丰富的功能和插件。

    • Eclipse

      Eclipse是一个开源的Java IDE,支持多种编程语言和插件。

    • NetBeans

      NetBeans是另一个针对Java开发的IDE,支持多种语言和框架。

第一个Java程序

  1. 创建一个新的Java项目

    在IDE中,创建一个新的Java项目。选择一个适当的项目名称,如HelloWorld

  2. 创建一个新的Java类

    在项目中创建一个新的Java类,命名为HelloWorld

  3. 编写代码

    编写基本的Java程序代码,输出“Hello, World!”。

    public class HelloWorld {
       public static void main(String[] args) {
           System.out.println("Hello, World!");
       }
    }
  4. 运行程序

    在IDE中运行程序,验证输出。

    输出结果:

    Hello, World!

数据类型与变量

Java是一种静态类型语言,支持多种数据类型。数据类型分为两类:基本类型(Primitive Types)和引用类型(Reference Types)。

基本类型

  • 整型(Integer Types)

    • byte:8位有符号整数,取值范围为-128到127。
    • short:16位有符号整数,取值范围为-32,768到32,767。
    • int:32位有符号整数,取值范围为-2,147,483,648到2,147,483,647。
    • long:64位有符号整数,取值范围为-9,223,372,036,854,775,808到9,223,372,036,854,775,807。
  • 浮点型(Floating Point Types)

    • float:32位单精度浮点数。
    • double:64位双精度浮点数。
  • 字符型(Character Types)

    • char:16位Unicode字符,用单引号包围,例如'A'
  • 布尔型(Boolean Type)

    • boolean:表示布尔值,取值为truefalse

示例代码:

public class DataTypesDemo {
    public static void main(String[] args) {
        byte b = 127;
        short s = 32767;
        int i = 2147483647;
        long l = 9223372036854775807L;

        float f = 3.14f;
        double d = 3.14159265358979323846;

        char c = 'A';
        boolean bool = true;

        System.out.println(b);
        System.out.println(s);
        System.out.println(i);
        System.out.println(l);
        System.out.println(f);
        System.out.println(d);
        System.out.println(c);
        System.out.println(bool);
    }
}

变量

变量用于存储程序中的数据。声明变量时需要指定变量类型和名称。

int age = 25;
double salary = 3000.5;
boolean isStudent = true;
char grade = 'A';

变量可以在声明时指定初始值,也可以在声明后赋值。

int age;
age = 25;

控制结构

控制结构用于控制程序流程,包括条件判断和循环。

if-else语句

int age = 25;

if (age >= 18) {
    System.out.println("成年人");
} else {
    System.out.println("未成年人");
}

switch语句

int grade = 85;

switch (grade / 10) {
    case 9:
    case 10:
        System.out.println("优秀");
        break;
    case 8:
        System.out.println("良好");
        break;
    case 7:
        System.out.println("中等");
        break;
    default:
        System.out.println("及格");
}

循环

循环用于重复执行代码块,根据条件决定是否继续执行。

for循环
for (int i = 0; i < 5; i++) {
    System.out.println("循环次数:" + i);
}
while循环
int count = 0;
while (count < 5) {
    System.out.println("循环次数:" + count);
    count++;
}
do-while循环
int count = 0;
do {
    System.out.println("循环次数:" + count);
    count++;
} while (count < 5);

数组与循环

数组用于存储一组相同类型的元素,可以通过索引访问每个元素。

数组的声明与初始化

int[] numbers = new int[5]; // 声明一个长度为5的整数数组
int[] numbers = {1, 2, 3, 4, 5}; // 声明并初始化整数数组

遍历数组

int[] numbers = {1, 2, 3, 4, 5};

// for循环遍历数组
for (int i = 0; i < numbers.length; i++) {
    System.out.println("元素:" + numbers[i]);
}

// foreach循环遍历数组
for (int number : numbers) {
    System.out.println("元素:" + number);
}

Java面向对象编程

类与对象

类是面向对象编程中的核心概念,定义了对象的属性和行为。对象是类的实例。

public class Person {
    String name;
    int age;

    public void introduce() {
        System.out.println("我的名字是" + name + ",我今年" + age + "岁。");
    }
}

public class Main {
    public static void main(String[] args) {
        Person person = new Person();
        person.name = "张三";
        person.age = 25;
        person.introduce();
    }
}

继承与多态

继承允许一个类继承另一个类的属性和方法。多态允许子类覆盖父类的方法。

public class Animal {
    public void eat() {
        System.out.println("动物吃东西");
    }
}

public class Cat extends Animal {
    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.eat();

        Animal cat = new Cat();
        cat.eat();
    }
}

接口与抽象类

接口定义了一组方法的契约,而抽象类可以包含方法的具体实现或抽象方法。

public interface Flyable {
    void fly();
}

public class Bird implements Flyable {
    @Override
    public void fly() {
        System.out.println("鸟儿在飞翔");
    }
}

public abstract class Animal {
    public abstract void eat();
}

public class Cat extends Animal {
    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }
}

public class Main {
    public static void main(String[] args) {
        Flyable bird = new Bird();
        bird.fly();

        Animal cat = new Cat();
        cat.eat();
    }
}

包与访问修饰符

包用于组织类和接口。访问修饰符控制类、方法和变量的可见性。

package com.example;

public class Person {
    private String name;
    protected int age;
    public void introduce() {
        System.out.println("我的名字是" + name + ",我今年" + age + "岁。");
    }
}

public class Main {
    public static void main(String[] args) {
        Person person = new Person();
        person.introduce();
    }
}

Java Web开发

Java Web简介

Java Web开发是基于Java技术的Web应用开发,包括Java Servlet、Java Server Pages (JSP)、JavaServer Faces (JSF)等技术。Java Web应用通常由客户端和服务器端组成,客户端通过浏览器发送请求,服务器端通过Servlet或JSP处理请求并返回响应。

Servlet与JSP基础

Servlet是运行在服务器端的Java类,可以接收和响应客户端请求。JSP(Java Server Pages)是一种动态网页技术,允许在HTML中嵌入Java代码。

// Servlet示例
public class HelloWorldServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>Hello World</title></head>");
        out.println("<body>");
        out.println("<h1>Hello World</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}
<!-- JSP示例 -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Hello World</title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>

MVC设计模式

MVC(Model-View-Controller)是一种常见的软件架构模式,将应用分为模型(Model)、视图(View)和控制器(Controller)三个部分。

  • 模型(Model):处理应用的数据和业务逻辑。
  • 视图(View):显示模型中的数据,通常是一个HTML页面。
  • 控制器(Controller):处理用户的输入,调用模型和视图,将数据传递给视图。

Spring框架简介

Spring是一个流行的Java应用框架,提供了依赖注入(DI)、面向切面编程(AOP)、事务管理等功能。Spring MVC是Spring框架的一部分,实现了MVC设计模式。

// Spring MVC控制器示例
@Controller
public class HelloWorldController {
    @RequestMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("message", "Hello World");
        return "hello";
    }
}
<!-- Spring MVC视图示例 -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Hello World</title>
</head>
<body>
<h1>${message}</h1>
</body>
</html>

Spring Boot快速开发

Spring Boot简化了Spring应用的开发过程,提供了自动配置、依赖管理和命令行界面等功能。

// Spring Boot应用示例
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
// 控制器示例
@RestController
public class HelloWorldController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello World";
    }
}

前端技术入门

HTML与CSS基础

HTML(HyperText Markup Language)是一种用于创建网页的标记语言,CSS(Cascading Style Sheets)用于定义网页的样式。

<!DOCTYPE html>
<html>
<head>
    <title>示例网页</title>
    <style>
        body {
            background-color: #f0f0f0;
        }
        h1 {
            color: #333;
        }
    </style>
</head>
<body>
<h1>示例标题</h1>
<p>这是一个示例段落。</p>
</body>
</html>

JavaScript入门

JavaScript是一种脚本语言,用于增强网页的交互性。

<!DOCTYPE html>
<html>
<head>
    <title>示例网页</title>
    <script>
        function sayHello() {
            var name = document.getElementById("name").value;
            document.getElementById("message").innerHTML = "Hello, " + name;
        }
    </script>
</head>
<body>
<input type="text" id="name" />
<button type="button" onclick="sayHello()">点击我</button>
<div id="message"></div>
</body>
</html>

常见前端框架介绍(如Vue.js、React.js)

  • Vue.js

    Vue.js是一个渐进式JavaScript框架,用于构建用户界面。

new Vue({
    el: '#app',
    data: {
        message: 'Hello Vue!'
    }
});
<div id="app">{{ message }}</div>
  • React.js

    React.js是一个用于构建用户界面的开源库,由Facebook开发。

import React from 'react';
import ReactDOM from 'react-dom';

class HelloWorld extends React.Component {
    render() {
        return <h1>Hello, World!</h1>;
    }
}

ReactDOM.render(<HelloWorld />, document.getElementById('app'));
<div id="app"></div>

数据库与Java

数据库基础

数据库用于存储和管理数据。常见的数据库管理系统有MySQL、Oracle、SQL Server、PostgreSQL等。

SQL语言基础

SQL(Structured Query Language)是用于访问和处理关系型数据库的标准语言。

-- 创建数据库
CREATE DATABASE example;

-- 创建表
CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100)
);

-- 插入数据
INSERT INTO users (id, name, email) VALUES (1, '张三', 'zhangsan@example.com');

-- 查询数据
SELECT * FROM users WHERE name = '张三';

-- 更新数据
UPDATE users SET email = 'zhangsan_new@example.com' WHERE name = '张三';

-- 删除数据
DELETE FROM users WHERE name = '张三';

JDBC编程

JDBC(Java Database Connectivity)是Java访问数据库的标准API。

import java.sql.*;

public class JdbcDemo {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/example";
        String username = "root";
        String password = "password";

        try (Connection conn = DriverManager.getConnection(url, username, password);
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT * FROM users")) {

            while (rs.next()) {
                System.out.println(rs.getInt("id") + " " + rs.getString("name") + " " + rs.getString("email"));
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

ORM框架(如Hibernate)

ORM(Object-Relational Mapping)框架用于将对象映射到关系型数据库表。

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateDemo {
    public static void main(String[] args) {
        SessionFactory sessionFactory = new Configuration()
                .configure()
                .buildSessionFactory();

        Session session = sessionFactory.openSession();
        session.beginTransaction();

        User user = new User();
        user.setId(1);
        user.setName("张三");
        user.setEmail("zhangsan@example.com");
        session.save(user);

        session.getTransaction().commit();
        session.close();
    }
}
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;
    private String email;

    // Getter和Setter方法
}

实战项目:开发一个简单的全栈应用

需求分析

假设我们要开发一个简单的图书管理系统,包括图书的添加、删除、查询和修改功能。用户可以通过网页界面操作。

设计数据库

设计数据库表结构,包括图书表和用户表。

CREATE TABLE books (
    id INT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(100),
    author VARCHAR(100),
    publish_date DATE
);

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(100),
    password VARCHAR(100),
    email VARCHAR(100)
);

后端开发

后端使用Spring Boot框架开发,包括控制器、服务和数据库访问层。

// Controller
@RestController
@RequestMapping("/api/books")
public class BookController {
    @Autowired
    private BookService bookService;

    @GetMapping
    public List<Book> getAllBooks() {
        return bookService.getAllBooks();
    }

    @PostMapping
    public Book addBook(@RequestBody Book book) {
        return bookService.addBook(book);
    }

    @PutMapping
    public Book updateBook(@RequestBody Book book) {
        return bookService.updateBook(book);
    }

    @DeleteMapping("/{id}")
    public void deleteBook(@PathVariable int id) {
        bookService.deleteBook(id);
    }
}

// Service
@Service
public class BookService {
    @Autowired
    private BookRepository bookRepository;

    public List<Book> getAllBooks() {
        return bookRepository.findAll();
    }

    public Book addBook(Book book) {
        return bookRepository.save(book);
    }

    public Book updateBook(Book book) {
        return bookRepository.save(book);
    }

    public void deleteBook(int id) {
        bookRepository.deleteById(id);
    }
}

// Repository
@Repository
public interface BookRepository extends JpaRepository<Book, Integer> {
}

前端开发

前端使用Vue.js开发,包括图书列表和表单。

<!-- HTML -->
<template>
    <div>
        <h1>图书列表</h1>
        <ul>
            <li v-for="book in books" :key="book.id">
                {{ book.title }} - {{ book.author }}
            </li>
        </ul>
        <form @submit.prevent="addBook">
            <input v-model="newBook.title" placeholder="书名" />
            <input v-model="newBook.author" placeholder="作者" />
            <button type="submit">添加</button>
        </form>
    </div>
</template>
// Vue.js
new Vue({
    el: '#app',
    data: {
        books: [],
        newBook: {}
    },
    methods: {
        async addBook() {
            const response = await fetch('/api/books', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify(this.newBook)
            });
            const data = await response.json();
            this.books.push(data);
            this.newBook = {};
        }
    },
    async created() {
        const response = await fetch('/api/books');
        const data = await response.json();
        this.books = data;
    }
});

部署与测试

部署应用到服务器,确保前端和后端通信正常。

使用Postman或其他工具测试API接口,确保功能正确。

# 启动Spring Boot应用
mvn spring-boot:run
# 测试API接口
curl -X GET http://localhost:8080/api/books
curl -X POST http://localhost:8080/api/books -H "Content-Type: application/json" -d '{"title": "Java编程思想", "author": "Bruce Eckel"}'
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消