本文提供了全面的Java全栈资料,适合新手入门和初级开发者学习,涵盖了Java基础、Web开发、数据库操作、前端技术和后端技术进阶等多个方面。文章还包括了实战项目演练,帮助读者将理论知识应用于实际开发中。
Java全栈资料:新手入门与初级开发者指南Java是由Sun Microsystems公司开发的一种面向对象编程语言,Java程序可以在任何安装了Java虚拟机(JVM)的设备上运行。Java具有平台无关性,可以编写一次,到处运行(Write Once, Run Anywhere),因此在跨平台开发中占有重要地位。
安装Java环境
访问Oracle官方网站下载Java SE(Standard Edition)的SDK(Software Development Kit)。目前最新版本为Java 17。
根据操作系统下载对应的安装包,如Windows、macOS或Linux。
JAVA_HOME
和PATH
环境变量;对于Linux和macOS,设置JAVA_HOME
环境变量,并将其添加到PATH
。# Linux/macOS export JAVA_HOME=/usr/lib/jvm/java-17-openjdk export PATH=$JAVA_HOME/bin:$PATH
java -version
编写第一个Java程序,打印“Hello, World!”。
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }
HelloWorld.java
的文件。javac HelloWorld.java
java HelloWorld
输出:
Hello, World!
注释
Java中的注释分为单行注释和多行注释。
// 单行注释 /* 多行注释 */
变量与类型
Java中的变量用于存储数据。Java支持多种数据类型,包括基本数据类型和引用数据类型。
// 基本数据类型 int age = 20; double price = 19.99; char grade = 'A'; boolean isPassed = true; // 引用数据类型 String name = "张三"; int[] numbers = {1, 2, 3, 4, 5};
运算符
Java支持多种运算符,包括算术运算符、关系运算符、逻辑运算符等。
int a = 10; int b = 5; // 算术运算符 int sum = a + b; // 15 int difference = a - b; // 5 int product = a * b; // 50 double quotient = (double) a / b; // 2.0 int remainder = a % b; // 0 // 关系运算符 boolean isEqual = a == b; // false boolean isNotEqual = a != b; // true boolean isGreaterThan = a > b; // true boolean isLessThan = a < b; // false // 逻辑运算符 boolean isTrue = a > b && b < a; // false boolean isFalse = a > b || b < a; // true
条件语句
条件语句用于根据条件执行不同的代码块。
int score = 85; if (score >= 90) { System.out.println("优秀"); } else if (score >= 80) { System.out.println("良好"); } else { System.out.println("及格"); }
循环语句
循环语句用于重复执行某段代码。Java支持for
、while
和do-while
等循环结构。
// for 循环 for (int i = 0; i < 5; i++) { System.out.println(i); } // while 循环 int j = 0; while (j < 5) { System.out.println(j); j++; } // do-while 循环 int k = 0; do { System.out.println(k); k++; } while (k < 5);
Web开发是指使用HTML、CSS、JavaScript等前端技术,结合Java、PHP、Python等后端语言进行Web应用开发。Java在Web开发领域有着广泛应用,如Servlet、JSP、Spring Boot等。
Web前端基础
HTML是用于创建网页的标准标记语言。HTML文档由元素构成,每个元素由标签、属性和文本组成。
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>HTML 示例</title> </head> <body> <h1>标题</h1> <p>段落。</p> </body> </html>
CSS是用于描述HTML文档样式的语言。CSS可以控制元素的颜色、大小、布局等。
body { background-color: #f0f0f0; } h1 { color: #333; font-size: 24px; text-align: center; } p { color: #666; font-size: 16px; margin-bottom: 10px; }
JavaScript是一种动态编程语言,用于网页交互。
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>JavaScript 示例</title> <script> function showAlert() { alert("Hello, JavaScript!"); } </script> </head> <body> <button onclick="showAlert()">点击</button> </body> </html>
Servlet
Servlet是运行在服务器端的Java组件,用于响应客户端请求。Servlet可以处理HTTP请求,生成动态内容并发送到客户端。
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); response.getWriter().println("Hello, Servlet!"); } }
JSP
JSP(JavaServer Pages)是一种动态网页开发技术,用于生成HTML、XML等文档。JSP页面由JSP引擎解释执行,生成动态内容发送给客户端。
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Hello, JSP!</title> </head> <body> <h1>Hello, JSP!</h1> </body> </html>
Spring Boot
Spring Boot是基于Spring框架的开发框架,简化了应用开发、配置和部署过程。Spring Boot提供了自动配置、嵌入式服务器、启动器等功能。
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } @RestController public class HelloController { @GetMapping("/") public String hello() { return "Hello, Spring Boot!"; } }
数据库是存储和管理数据的系统。常见的数据库有MySQL、Oracle、SQL Server等。
SQL基础知识
SQL(Structured Query Language)用于管理和操作数据库。SQL语句包括DDL(数据定义语言)、DML(数据操作语言)、DCL(数据控制语言)等。
-- 创建数据库 CREATE DATABASE mydatabase; -- 使用数据库 USE mydatabase; -- 创建表 CREATE TABLE users ( id INT PRIMARY KEY, username VARCHAR(50), password VARCHAR(50) ); -- 插入数据 INSERT INTO users (id, username, password) VALUES (1, '张三', '123456'); -- 查询数据 SELECT * FROM users; -- 更新数据 UPDATE users SET password = '654321' WHERE id = 1; -- 删除数据 DELETE FROM users WHERE id = 1;
JDBC(Java Database Connectivity)是Java访问数据库的接口规范。
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class JdbcExample { public static void main(String[] args) throws Exception { // 加载驱动 Class.forName("com.mysql.cj.jdbc.Driver"); // 连接数据库 Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/mydatabase", "root", "password"); // 准备SQL语句 String sql = "SELECT * FROM users"; PreparedStatement stmt = conn.prepareStatement(sql); // 执行查询 ResultSet rs = stmt.executeQuery(); // 处理结果集 while (rs.next()) { int id = rs.getInt("id"); String username = rs.getString("username"); String password = rs.getString("password"); System.out.println("ID: " + id + ", Username: " + username + ", Password: " + password); } // 关闭资源 rs.close(); stmt.close(); conn.close(); } }
ORM(Object-Relational Mapping)框架将对象映射到关系数据库。Hibernate是Java领域最流行的ORM框架。
import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateExample { public static void main(String[] args) { // 创建SessionFactory对象 SessionFactory sessionFactory = new Configuration() .configure("hibernate.cfg.xml") .buildSessionFactory(); // 获取Session对象 Session session = sessionFactory.openSession(); // 开始事务 session.beginTransaction(); // 创建用户对象 User user = new User(1, "张三", "123456"); // 保存用户对象到数据库 session.save(user); // 提交事务 session.getTransaction().commit(); // 关闭资源 session.close(); sessionFactory.close(); } }
HTML是用于创建网页的标准标记语言。HTML文档由元素构成,每个元素由标签、属性和文本组成。
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>HTML 示例</title> </head> <body> <h1>标题</h1> <p>段落。</p> </body> </html>
CSS是用于描述HTML文档样式的语言。CSS可以控制元素的颜色、大小、布局等。
body { background-color: #f0f0f0; } h1 { color: #333; font-size: 24px; text-align: center; } p { color: #666; font-size: 16px; margin-bottom: 10px; }
JavaScript是一种动态编程语言,用于网页交互。
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>JavaScript 示例</title> <script> function showAlert() { alert("Hello, JavaScript!"); } </script> </head> <body> <button onclick="showAlert()">点击</button> </body> </html>
Vue.js是一个渐进式JavaScript框架,用于构建用户界面。Vue.js易于上手,能够与现有项目无缝集成。
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Vue.js 示例</title> <script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="https://cdn.jsdelivr.net/npm/vue@2"></script> </head> <body> <div id="app"> {{ message }} </div> <script> var app = new Vue({ el: '#app', data: { message: 'Hello, Vue.js!' } }); </script> </body> </html>
RESTful API是一种基于HTTP协议设计的API架构。RESTful API具有无状态、可缓存、分层系统等特性。
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class UserController { @GetMapping("/users") public List<User> getUsers() { // 获取用户列表 List<User> users = userService.getUsers(); return users; } }
Redis是一个开源的内存数据结构存储系统,被广泛应用于缓存、消息队列等场景。
import redis.clients.jedis.Jedis; public class RedisExample { public static void main(String[] args) { // 创建Jedis客户端 Jedis jedis = new Jedis("localhost"); // 设置键值 jedis.set("username", "张三"); // 获取键值 String username = jedis.get("username"); System.out.println("Username: " + username); // 关闭连接 jedis.close(); } }
MySQL优化涉及索引、查询、配置等多个方面。
查询优化
通过增加索引、优化查询语句等方式提高查询性能。
-- 创建索引 CREATE INDEX idx_username ON users(username); -- 优化查询语句 SELECT username FROM users WHERE username LIKE '张%';
配置优化
调整MySQL配置文件(my.cnf)中的参数提高性能。
[mysqld] innodb_buffer_pool_size=1G max_connections=500
需求分析
技术选型
项目结构
ecommerce/ ├── frontend/ │ ├── src/ │ │ ├── components/ │ │ ├── views/ │ │ └── App.vue │ └── public/ ├── backend/ │ ├── src/ │ │ ├── controller/ │ │ ├── service/ │ │ └── Application.java │ └── resources/ │ └── application.properties └── README.md
前端代码示例
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>电商网站</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div id="app"> <h1>欢迎来到电商网站</h1> <button @click="showProducts">查看商品</button> </div> <script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="https://cdn.jsdelivr.net/npm/vue@2"></script> <script> var app = new Vue({ el: '#app', data: { products: [] }, methods: { showProducts: function() { fetch('/api/products') .then(response => response.json()) .then(data => this.products = data); } } }); </script> </body> </html>
后端代码示例
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; @RestController public class ProductController { @GetMapping("/api/products") public List<Product> getProducts() { // 模拟数据 List<Product> products = new ArrayList<>(); products.add(new Product(1, "商品1", 100)); products.add(new Product(2, "商品2", 200)); return products; } }
需求分析
技术选型
项目结构
blog/ ├── frontend/ │ ├── src/ │ │ ├── components/ │ │ ├── views/ │ │ └── App.vue │ └── public/ ├── backend/ │ ├── src/ │ │ ├── controller/ │ │ ├── service/ │ │ └── Application.java │ └── resources/ │ └── application.properties └── README.md
前端代码示例
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>博客系统</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div id="app"> <h1>欢迎来到博客系统</h1> <button @click="getPosts">查看帖子</button> </div> <script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="https://cdn.jsdelivr.net/npm/vue@2"></script> <script> var app = new Vue({ el: '#app', data: { posts: [] }, methods: { getPosts: function() { fetch('/api/posts') .then(response => response.json()) .then(data => this.posts = data); } } }); </script> </body> </html>
后端代码示例
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; @RestController public class PostController { @GetMapping("/api/posts") public List<Post> getPosts() { // 模拟数据 List<Post> posts = new ArrayList<>(); posts.add(new Post(1, "标题1", "内容1")); posts.add(new Post(2, "标题2", "内容2")); return posts; } }
案例分析
案例1:某电商网站的技术架构与设计模式。
具体代码:
// 单例模式示例 public class Singleton { private static Singleton instance; private Singleton() {} public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } }
// 工厂模式示例
public class UserFactory {
public User createUser(String type) {
if ("admin".equals(type)) {
return new AdminUser();
} else if ("customer".equals(type)) {
return new CustomerUser();
}
return null;
}
}
案例2:某博客系统的技术架构与设计模式。
// 策略模式示例 public interface CommentStrategy { void handleComment(Comment comment); }
public class AdminStrategy implements CommentStrategy {
public void handleComment(Comment comment) {
// 处理管理员评论
}
}
public class UserStrategy implements CommentStrategy {
public void handleComment(Comment comment) {
// 处理普通用户评论
}
}
// 装饰器模式示例
public class ArticleDecorator extends Article {
public ArticleDecorator(String title, String content) {
super(title, content);
}
public void addFeature(String feature) { // 添加文章特性 }
}
讨论内容
提高系统性能:
import redis.clients.jedis.Jedis;
public class CacheExample {
public static void main(String[] args) {
Jedis jedis = new Jedis("localhost");
String key = "hot_product";
String value = jedis.get(key);
if (value == null) {
// 从数据库获取数据并存入缓存
Product product = getProductFromDB();
jedis.set(key, product.toString());
value = product.toString();
}
System.out.println("热门产品:" + value);
jedis.close();
}
}
保证系统安全性:
import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/admin/").hasRole("ADMIN")
.antMatchers("/user/").hasRole("USER")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll();
}
}
实现高可用性:
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
@EnableDiscoveryClient
@EnableZuulProxy
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}
参考资料