Java项目学习:初学者的简单教程

2024/12/18 4:03:08

本文主要是介绍Java项目学习:初学者的简单教程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

概述

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调试工具等。

安装步骤

  1. 访问JDK下载页面下载合适的JDK版本。
  2. 双击下载的安装包,按照安装向导完成JDK的安装。
  3. 配置环境变量:
    • 打开“系统属性” -> “高级系统设置” -> “环境变量”。
    • 在系统变量中新建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

  1. 访问JetBrains官网下载IntelliJ IDEA。
  2. 安装IntelliJ IDEA。
  3. 打开IntelliJ IDEA,点击“File” -> “New” -> “Project”,在弹出的窗口中选择“Java”,然后设置项目名称和位置,点击“Finish”。

Eclipse

  1. 访问Eclipse官网下载Eclipse。
  2. 安装Eclipse。
  3. 打开Eclipse,选择“File” -> “New” -> “Java Project”。
  4. 输入项目名称,选择JDK版本,点击“Finish”。
第一个Java项目:Hello World

创建项目

打开安装好的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项目结构

项目文件夹组织

Java项目的文件夹组织应遵循一定的架构规范。常见的项目结构如下:

src
└── main
    ├── java
    │   └── com
    │       └── example
    │           └── HelloWorld.java
    └── resources
        └── application.properties
  • java目录存放Java源代码。
  • resources目录存放配置文件和资源文件。

配置文件介绍

配置文件通常用于存放项目运行时需要的配置信息,如数据库连接信息、应用配置等。常用的配置文件包括application.propertiesapplication.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页面展示出来。



这篇关于Java项目学习:初学者的简单教程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程