首页 > 编程语言 >使用Java和Spring MVC构建Web应用

使用Java和Spring MVC构建Web应用

时间:2024-07-20 15:53:06浏览次数:6  
标签:Web Java Spring boot springframework public org import id

使用Java和Spring MVC构建Web应用

大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!

在现代企业中,Web 应用程序是最常见的应用类型之一。Spring MVC 是一个强大且流行的 Java Web 框架,用于构建功能强大且易于维护的 Web 应用程序。本文将通过实际示例展示如何使用 Java 和 Spring MVC 构建一个简单的 Web 应用。

1. 项目结构

在开始之前,我们需要了解 Spring MVC 项目的基本结构。一个典型的 Spring MVC 项目包含以下几个主要部分:

  • Controller: 处理用户请求并返回视图。
  • Service: 业务逻辑层,处理具体的业务操作。
  • Repository: 数据访问层,与数据库进行交互。
  • Model: 数据模型,表示应用程序的核心数据。
  • View: 用户界面,显示数据给用户。

2. 设置项目

首先,我们使用 Maven 创建一个 Spring Boot 项目,这样可以简化配置。以下是 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/POM/4.0.0">
    <modelVersion>4.0.0</modelVersion>
    <groupId>cn.juwatech</groupId>
    <artifactId>spring-mvc-demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <properties>
        <java.version>11</java.version>
        <spring.boot.version>2.5.4</spring.boot.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

3. 创建模型

我们创建一个简单的 User 模型类,并使用 JPA 注解将其映射到数据库表:

package cn.juwatech.model;

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 Long id;
    private String name;
    private String email;

    // Getters and Setters
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

4. 创建数据访问层

使用 Spring Data JPA,我们可以创建一个简单的 UserRepository 接口:

package cn.juwatech.repository;

import cn.juwatech.model.User;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
}

5. 创建服务层

服务层包含业务逻辑。在这个示例中,我们创建一个 UserService 类来处理用户数据的业务逻辑:

package cn.juwatech.service;

import cn.juwatech.model.User;
import cn.juwatech.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public List<User> findAllUsers() {
        return userRepository.findAll();
    }

    public Optional<User> findUserById(Long id) {
        return userRepository.findById(id);
    }

    public User saveUser(User user) {
        return userRepository.save(user);
    }

    public void deleteUser(Long id) {
        userRepository.deleteById(id);
    }
}

6. 创建控制器

控制器处理用户请求,并将数据传递给视图。以下是一个 UserController 示例:

package cn.juwatech.controller;

import cn.juwatech.model.User;
import cn.juwatech.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

@Controller
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping
    public String listUsers(Model model) {
        model.addAttribute("users", userService.findAllUsers());
        return "user/list";
    }

    @GetMapping("/{id}")
    public String getUser(@PathVariable("id") Long id, Model model) {
        model.addAttribute("user", userService.findUserById(id).orElse(null));
        return "user/detail";
    }

    @GetMapping("/new")
    public String newUserForm(Model model) {
        model.addAttribute("user", new User());
        return "user/form";
    }

    @PostMapping
    public String saveUser(@ModelAttribute User user) {
        userService.saveUser(user);
        return "redirect:/users";
    }

    @PostMapping("/{id}/delete")
    public String deleteUser(@PathVariable("id") Long id) {
        userService.deleteUser(id);
        return "redirect:/users";
    }
}

7. 创建视图

视图是与用户交互的部分。在本例中,我们使用 Thymeleaf 作为模板引擎。以下是一个简单的 Thymeleaf 视图示例:

src/main/resources/templates/user/list.html:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>User List</title>
</head>
<body>
    <h1>User List</h1>
    <table>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Email</th>
            <th>Actions</th>
        </tr>
        <tr th:each="user : ${users}">
            <td th:text="${user.id}"></td>
            <td th:text="${user.name}"></td>
            <td th:text="${user.email}"></td>
            <td>
                <a th:href="@{/users/{id}(id=${user.id})}">View</a>
                <form th:action="@{/users/{id}/delete(id=${user.id})}" method="post">
                    <button type="submit">Delete</button>
                </form>
            </td>
        </tr>
    </table>
    <a href="/users/new">Add New User</a>
</body>
</html>

8. 配置 Spring Boot 应用程序

最后,创建一个主应用程序类来启动 Spring Boot 应用程序:

package cn.juwatech;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringMvcDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringMvcDemoApplication.class, args);
    }
}

9. 启动应用

使用 Maven 构建并运行应用程序:

mvn spring-boot:run

访问 http://localhost:8080/users 即可看到用户列表,进行用户的查看、添加和删除操作。

本文著作权归聚娃科技微赚淘客系统开发者团队,转载请注明出处!

标签:Web,Java,Spring,boot,springframework,public,org,import,id
From: https://www.cnblogs.com/szk123456/p/18313214

相关文章

  • Java中的编译器插件开发与应用
    Java中的编译器插件开发与应用大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在Java语言中,编译器插件的开发与应用是一种高级编程技术,能够扩展Java编译器的功能,以满足特定的需求。这些插件可以在编译过程中进行代码分析、优化,甚至修改源代码。本文将......
  • 使用Java和Elastic Stack进行日志分析
    使用Java和ElasticStack进行日志分析大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在现代企业中,日志分析是确保系统健康、进行故障排查和优化性能的重要环节。ElasticStack(ELKStack)是一个强大的工具集,包含Elasticsearch、Logstash和Kibana,能够有......
  • 一周学完Java基础,第六天,常见容器
    (1)列表List         接口:    java.util.List<>    实现方式:    java.util.ArrayList<>:变长数组    java.util.LinkedList<>:双链表    函数:    add():在末尾添加一个元素    clear():......
  • Spring Boot+WebSocket向前端推送消息
     ​ 博客主页:   南来_北往......
  • Springboot 启动时Bean的创建与注入(二)-面试热点-springboot源码解读-xunznux
    Springboot启动时Bean的创建与注入,以及对应的源码解读文章目录Springboot启动时Bean的创建与注入,以及对应的源码解读11、getBean:200,AbstractBeanFactory(org.springframework.beans.factory.support)12、doGetBean:335,AbstractBeanFactory(org.springframework......
  • 通过渗透拿到对方web网站服务器控制权!让对方服务器成为木偶?
    一.靶场服务器打开(模拟要攻击的对象)1.1打开web服务1.2查看IP1.3右键计算机属性 远程设置不允许远程链接 (后面会通过远程渗透打开这个功能)1.4将服务器(此电脑)用户 设置密码并将服务器锁定二.打开win11攻击机上一篇文章中已经将对方网站登录密码破开,于是......
  • 学生Java学习路程-3
    ok,到了一周一次的总结时刻,我大致会有下面几个方面的论述:1.这周学习了Java的那些东西2.这周遇到了什么苦难3.未来是否需要改进方法等几个方面阐述我的学习路程。这周首先就是进行了for循环跟while的一些练习,主要学习的方面在Scanner的学习,这是网上以及网课建议新手用的输入形式,以......
  • JavaScript Program to print pyramid pattern (打印金字塔图案的程序)
     编写程序打印由星星组成的金字塔图案 例子: 输入:n=6输出:    *    **    ***    ****    *****    ******     *****    ****    ***    **    ......
  • Javascript 在我的本地服务器上运行,但在 WordPress 上不起作用
    大家好,我有一个问题。我有一个在本地服务器中完美运行的模板/主题,但是当我将其移动到Wordpress时,根据我的研究,我得到了“jQuery不兼容”的信息。 我附上了代码的图像。你能帮我一下吗,一切看起来都很完美,在我看来一切都很完美,但在Wordpress中却不然。提前谢谢你!......
  • Java基础语法(一)
    目录一、Java入门 java定义前期准备Java应用java的主要特性JDK和JRE二、Java基础概念注释关键字关键字特点字面量分类特殊的字面量\t变量数据类型标识符键盘录入Scanner类三、运算符四、循环和判断五、数组六、方法一、Java入门 java定义  ......