本文详细介绍了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开发环境
-
安装JDK(Java Development Kit)
首先需要下载并安装JDK。你可以从Oracle官方网站下载最新版本的JDK,或者使用其他版本(如OpenJDK)。下载完成后,按照安装向导进行安装。
# 检查JDK是否安装成功 java -version
该命令用于检查已安装的JDK版本信息。如果安装成功,会显示具体的版本号。
-
配置环境变量
安装完毕后,需要配置环境变量。确保JDK的
bin
目录路径已添加到系统的环境变量PATH
中。# 设置环境变量(Linux/MacOS) export PATH=/path/to/jdk/bin:$PATH # 设置环境变量(Windows) set PATH=C:\path\to\jdk\bin;%PATH%
-
安装IDE(集成开发环境)
下载并安装一个IDE,如IntelliJ IDEA、Eclipse或NetBeans,用于编写和调试Java代码。
-
IntelliJ IDEA
IntelliJ IDEA是一个由JetBrains开发的强大的Java IDE,提供丰富的功能和插件。
-
Eclipse
Eclipse是一个开源的Java IDE,支持多种编程语言和插件。
-
NetBeans
NetBeans是另一个针对Java开发的IDE,支持多种语言和框架。
-
第一个Java程序
-
创建一个新的Java项目
在IDE中,创建一个新的Java项目。选择一个适当的项目名称,如
HelloWorld
。 -
创建一个新的Java类
在项目中创建一个新的Java类,命名为
HelloWorld
。 -
编写代码
编写基本的Java程序代码,输出“Hello, World!”。
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }
-
运行程序
在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
:表示布尔值,取值为true
或false
。
示例代码:
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"}'
共同学习,写下你的评论
评论加载中...
作者其他优质文章