Java项目学习涵盖了从基础知识到实战项目的全过程,包括变量与数据类型、流程控制语句、函数与方法以及类与对象等核心概念。本文还将指导你搭建开发环境,创建并运行第一个Java项目,同时介绍常用的库和框架,帮助读者掌握Java项目开发的必备技能。
Java项目学习:初学者的简单教程 Java基础回顾变量与数据类型
在Java中,变量是用来存储数据的容器。变量需要声明类型,不同的类型决定了变量能够存储的数据类型。
基本数据类型
Java的基本数据类型可以分为以下几类:
- 整型:
byte
,short
,int
,long
- 浮点型:
float
,double
- 字符型:
char
- 布尔型:
boolean
示例代码
public class DataTypeExample {
public static void main(String[] args) {
byte myByte = 127;
short myShort = 32767;
int myInt = 2147483647;
long myLong = 9223372036854775807L;
float myFloat = 3.14f;
double myDouble = 3.14159;
char myChar = 'A';
boolean myBoolean = true;
System.out.println("byte: " + myByte);
System.out.println("short: " + myShort);
System.out.println("int: " + myInt);
System.out.println("long: " + myLong);
System.out.println("float: " + myFloat);
System.out.println("double: " + myDouble);
System.out.println("char: " + myChar);
System.out.println("boolean: " + myBoolean);
}
}
流程控制语句
流程控制语句可以帮助我们控制程序的执行流程。Java中的流程控制语句包括条件语句、循环语句以及跳转语句。
条件语句
条件语句最常见的是if-else
语句。if
语句在条件为真时执行,else
语句在条件为假时执行。
示例代码
public class ConditionalExample {
public static void main(String[] args) {
int age = 20;
if (age >= 18) {
System.out.println("成年人");
} else {
System.out.println("未成年人");
}
}
}
循环语句
Java中的循环语句包括for
, while
, do-while
循环。
for
循环适用于已知迭代次数的情况。while
循环适用于条件为真的情况。do-while
循环类似于while
, 但至少会执行一次循环体。
示例代码
public class LoopExample {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println("for循环: " + i);
}
int count = 0;
while (count < 5) {
System.out.println("while循环: " + count);
count++;
}
count = 0;
do {
System.out.println("do-while循环: " + count);
count++;
} while (count < 5);
}
}
函数与方法
在Java中,函数被称为方法。方法是一个包含一系列语句的代码块,用于执行特定任务。方法可以返回一个值,也可以不返回值。
示例代码
public class MethodExample {
public static void main(String[] args) {
System.out.println(add(3, 4)); // 输出7
printMessage(); // 输出"Hello, World!"
}
public static int add(int a, int b) {
return a + b;
}
public static void printMessage() {
System.out.println("Hello, World!");
}
}
类与对象
类是对象的蓝图,对象是类的实例。类可以定义变量(属性)和方法,对象可以执行这些方法和访问这些变量。
示例代码
public class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void introduce() {
System.out.println("我叫" + name + ", 今年" + age + "岁");
}
}
public class TestPerson {
public static void main(String[] args) {
Person person = new Person("张三", 25);
person.introduce(); // 输出: 我叫张三, 今年25岁
}
}
开发环境搭建
JDK安装与配置
Java开发工具包(JDK)是Java开发环境的一部分,包括Java编译器、Java运行时环境、Java文档工具和Java调试工具等。
安装步骤
- 访问JDK下载页面下载合适的JDK版本。
- 双击下载的安装包,按照安装向导完成JDK的安装。
- 配置环境变量:
- 打开“系统属性” -> “高级系统设置” -> “环境变量”。
- 在系统变量中新建
JAVA_HOME
,变量值为JDK安装路径。 - 在系统变量中找到
Path
,添加%JAVA_HOME%\bin
。例如,如果JDK安装路径为C:\Program Files\Java\jdk-11.0.2
,则JAVA_HOME
应设置为C:\Program Files\Java\jdk-11.0.2
,并在Path
中添加C:\Program Files\Java\jdk-11.0.2\bin
。
验证环境变量配置
打开命令提示符,输入以下命令:
java -version
如果正确配置了环境变量,将显示Java版本信息。
IDE选择与安装
IntelliJ IDEA
- 访问JetBrains官网下载IntelliJ IDEA。
- 安装IntelliJ IDEA。
- 打开IntelliJ IDEA,点击“File” -> “New” -> “Project”,在弹出的窗口中选择“Java”,然后设置项目名称和位置,点击“Finish”。
Eclipse
- 访问Eclipse官网下载Eclipse。
- 安装Eclipse。
- 打开Eclipse,选择“File” -> “New” -> “Java Project”。
- 输入项目名称,选择JDK版本,点击“Finish”。
创建项目
打开安装好的IDE,新建一个Java项目。在IntelliJ IDEA中,选择“File” -> “New” -> “Project”,在弹出的窗口中选择“Java”,然后设置项目名称和位置,点击“Finish”。
编写代码
在项目中创建一个新的Java类。在IntelliJ IDEA中,右键点击项目,在弹出的菜单中选择“New” -> “Java Class”,输入类名HelloWorld
,点击“OK”。
在新创建的类中编写以下代码:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
运行项目
在IDE中,右键点击HelloWorld
类,选择“Run 'HelloWorld.main(...)'”。程序会在控制台输出Hello World!
。
项目文件夹组织
Java项目的文件夹组织应遵循一定的架构规范。常见的项目结构如下:
src
└── main
├── java
│ └── com
│ └── example
│ └── HelloWorld.java
└── resources
└── application.properties
java
目录存放Java源代码。resources
目录存放配置文件和资源文件。
配置文件介绍
配置文件通常用于存放项目运行时需要的配置信息,如数据库连接信息、应用配置等。常用的配置文件包括application.properties
和application.yml
。
示例代码
# application.properties
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/mydatabase
db.username=root
db.password=root
包与模块划分
Java项目通常会按照功能模块划分包(Package)。每个包下可以包含相关的Java文件。包的命名遵循反向域名规则,如com.example
.
示例代码
src
└── main
└── java
└── com
└── example
├── controller
│ └── UserController.java
├── model
│ └── User.java
└── service
└── UserService.java
常用库与框架简介
Servlet与JSP
Servlet是运行在服务器端的Java程序,用于处理客户端发送的HTTP请求。JSP(JavaServer Pages)是Servlet的一种表现形式,可以在HTML中嵌入Java代码。
Servlet示例代码
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/hello")
public class HelloWorldServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
response.getWriter().println("Hello World!");
}
}
JSP示例代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>
Hello World!
</body>
</html>
Spring框架基础
Spring是一个轻量级的Java框架,用于简化Java企业应用开发。Spring包括多个模块,如Spring Core、Spring MVC、Spring Data等。Spring MVC用于构建Web应用。
Spring MVC示例代码
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HelloController {
@GetMapping("/")
public String index(Model model) {
model.addAttribute("message", "Hello World!");
return "index";
}
}
配置文件
<!-- spring-servlet.xml -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="helloController" class="com.example.controller.HelloController"/>
</beans>
Maven依赖管理
Maven是一个项目管理和构建工具,可以管理项目的构建、报告和文档。Maven依赖管理允许项目自动下载和管理所需的依赖库。
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</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.10</version>
</dependency>
</dependencies>
</project>
项目实战:简单图书管理系统
需求分析
图书管理系统是一个用于管理图书信息的应用系统,包括添加、删除、更新图书信息等功能。系统需要展示图书列表,允许用户查询和编辑图书信息。
功能模块设计
图书管理系统可以分为以下几个模块:
- 数据层:负责与数据库交互,如添加、删除、查询图书信息。
- 业务逻辑层:处理业务逻辑,如验证用户输入、调用数据层方法。
- 控制层:负责处理HTTP请求,如接收客户端请求、调用业务逻辑层方法。
- 视图层:负责展示数据,如展示图书列表、编辑图书信息的表单。
数据库设计与操作
数据库设计:
CREATE TABLE books (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100),
author VARCHAR(100),
published_date DATE,
description TEXT
);
数据库连接与操作示例:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class DatabaseConnection {
private static Connection getConnection() throws SQLException {
return DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "root", "password");
}
public static List<Book> findAll() throws SQLException {
List<Book> books = new ArrayList<>();
try (Connection conn = getConnection()) {
String query = "SELECT * FROM books";
try (PreparedStatement stmt = conn.prepareStatement(query);
ResultSet rs = stmt.executeQuery()) {
while (rs.next()) {
books.add(new Book(rs.getInt("id"), rs.getString("title"), rs.getString("author"), rs.getDate("published_date"), rs.getString("description")));
}
}
}
return books;
}
public static Book findById(int id) throws SQLException {
Book book = null;
try (Connection conn = getConnection()) {
String query = "SELECT * FROM books WHERE id = ?";
try (PreparedStatement stmt = conn.prepareStatement(query)) {
stmt.setInt(1, id);
try (ResultSet rs = stmt.executeQuery()) {
if (rs.next()) {
book = new Book(rs.getInt("id"), rs.getString("title"), rs.getString("author"), rs.getDate("published_date"), rs.getString("description"));
}
}
}
}
return book;
}
public static void add(Book book) throws SQLException {
try (Connection conn = getConnection()) {
String query = "INSERT INTO books (title, author, published_date, description) VALUES (?, ?, ?, ?)";
try (PreparedStatement stmt = conn.prepareStatement(query)) {
stmt.setString(1, book.getTitle());
stmt.setString(2, book.getAuthor());
stmt.setDate(3, book.getPublishedDate());
stmt.setString(4, book.getDescription());
stmt.executeUpdate();
}
}
}
public static void update(Book book) throws SQLException {
try (Connection conn = getConnection()) {
String query = "UPDATE books SET title = ?, author = ?, published_date = ?, description = ? WHERE id = ?";
try (PreparedStatement stmt = conn.prepareStatement(query)) {
stmt.setString(1, book.getTitle());
stmt.setString(2, book.getAuthor());
stmt.setDate(3, book.getPublishedDate());
stmt.setString(4, book.getDescription());
stmt.setInt(5, book.getId());
stmt.executeUpdate();
}
}
}
public static void delete(int id) throws SQLException {
try (Connection conn = getConnection()) {
String query = "DELETE FROM books WHERE id = ?";
try (PreparedStatement stmt = conn.prepareStatement(query)) {
stmt.setInt(1, id);
stmt.executeUpdate();
}
}
}
}
代码实现与测试
数据层
创建一个名为BookRepository
的接口,用于定义数据层方法。
示例代码
package com.example.repository;
import com.example.entity.Book;
import java.util.List;
public interface BookRepository {
List<Book> findAll();
Book findById(int id);
void add(Book book);
void update(Book book);
void delete(int id);
}
实现BookRepository
接口,创建BookRepositoryImpl
类,用于实际操作数据库。
示例代码
package com.example.repository;
import com.example.entity.Book;
import java.util.ArrayList;
import java.util.List;
public class BookRepositoryImpl implements BookRepository {
@Override
public List<Book> findAll() throws SQLException {
return DatabaseConnection.findAll();
}
@Override
public Book findById(int id) throws SQLException {
return DatabaseConnection.findById(id);
}
@Override
public void add(Book book) throws SQLException {
DatabaseConnection.add(book);
}
@Override
public void update(Book book) throws SQLException {
DatabaseConnection.update(book);
}
@Override
public void delete(int id) throws SQLException {
DatabaseConnection.delete(id);
}
}
业务逻辑层
创建一个名为BookService
的接口,用于定义业务逻辑方法。
示例代码
package com.example.service;
import com.example.entity.Book;
import java.util.List;
public interface BookService {
List<Book> findAll();
Book findById(int id);
void add(Book book);
void update(Book book);
void delete(int id);
}
实现BookService
接口,创建BookServiceImpl
类,用于调用数据层方法。
示例代码
package com.example.service;
import com.example.entity.Book;
import com.example.repository.BookRepository;
public class BookServiceImpl implements BookService {
private BookRepository repository = new BookRepositoryImpl();
@Override
public List<Book> findAll() {
try {
return repository.findAll();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
@Override
public Book findById(int id) {
try {
return repository.findById(id);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
@Override
public void add(Book book) {
try {
repository.add(book);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
@Override
public void update(Book book) {
try {
repository.update(book);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
@Override
public void delete(int id) {
try {
repository.delete(id);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
控制层
创建一个名为BookController
的类,用于处理HTTP请求。
示例代码
package com.example.controller;
import com.example.entity.Book;
import com.example.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Controller
public class BookController {
@Autowired
private BookService bookService;
@GetMapping("/")
public String list(Model model) {
List<Book> books = bookService.findAll();
model.addAttribute("books", books);
return "list";
}
@GetMapping("/add")
public String addBookForm() {
return "addBook";
}
@PostMapping("/add")
public String addBook(@ModelAttribute Book book) {
bookService.add(book);
return "redirect:/";
}
@GetMapping("/edit/{id}")
public String editBook(@PathVariable int id, Model model) {
Book book = bookService.findById(id);
model.addAttribute("book", book);
return "editBook";
}
@PostMapping("/edit/{id}")
public String updateBook(@PathVariable int id, @ModelAttribute Book book) {
bookService.update(book);
return "redirect:/";
}
@GetMapping("/delete/{id}")
public String deleteBook(@PathVariable int id) {
bookService.delete(id);
return "redirect:/";
}
}
视图层
创建HTML页面展示图书列表。
示例代码
<!-- list.html -->
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>图书列表</title>
</head>
<body>
<h1>图书列表</h1>
<table>
<tr>
<th>ID</th>
<th>书名</th>
<th>作者</th>
<th>出版日期</th>
<th>描述</th>
<th>操作</th>
</tr>
<tr th:each="book : ${books}">
<td th:text="${book.id}"></td>
<td th:text="${book.title}"></td>
<td th:text="${book.author}"></td>
<td th:text="${book.publishedDate}"></td>
<td th:text="${book.description}"></td>
<td>
<a th:href="@{/edit/{id}(id=${book.id})}">编辑</a>
<a th:href="@{/delete/{id}(id=${book.id})}" onclick="return confirm('确定要删除吗?')">删除</a>
</td>
</tr>
</table>
<a href="/add" th:href="@{/add}">添加图书</a>
</body>
</html>
创建HTML页面用于添加图书信息。
示例代码
<!-- addBook.html -->
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>添加图书</title>
</head>
<body>
<h1>添加图书</h1>
<form th:action="@{/add}" method="post">
<label for="title">书名:</label>
<input type="text" id="title" name="title">
<br>
<label for="author">作者:</label>
<input type="text" id="author" name="author">
<br>
<label for="publishedDate">出版日期:</label>
<input type="date" id="publishedDate" name="publishedDate">
<br>
<label for="description">描述:</label>
<textarea id="description" name="description"></textarea>
<br>
<input type="submit" value="添加">
</form>
</body>
</html>
创建HTML页面用于编辑图书信息。
示例代码
<!-- editBook.html -->
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>编辑图书</title>
</head>
<body>
<h1>编辑图书</h1>
<form th:action="@{/edit/{id}(id=${book.id})}" method="post">
<label for="title">书名:</label>
<input type="text" id="title" name="title" th:value="${book.title}">
<br>
<label for="author">作者:</label>
<input type="text" id="author" name="author" th:value="${book.author}">
<br>
<label for="publishedDate">出版日期:</label>
<input type="date" id="publishedDate" name="publishedDate" th:value="${book.publishedDate}">
<br>
<label for="description">描述:</label>
<textarea id="description" name="description" th:value="${book.description}"></textarea>
<br>
<input type="submit" value="保存">
</form>
</body>
</html>
测试
启动Spring Boot应用,访问http://localhost:8080/
,查看图书列表页面;访问http://localhost:8080/add
,查看添加图书页面;访问http://localhost:8080/edit/1
,查看编辑图书页面。
通过以上步骤,我们成功地实现了一个简单的图书管理系统,其中包括了添加、删除、更新图书信息的功能,并且用户界面也已经通过HTML页面展示出来。
共同学习,写下你的评论
评论加载中...
作者其他优质文章