Spring Boot 整合 JSP

简介: Spring Boot 整合 JSP

新建工程



f81642d7325d4de7a1ee3811c60fac63.png


配置如下


6a38f11e2ef04c3fba2154e8a38f5d0a.png


点击下一步


55a90ba3afb64df79a0b9b457cd7c797.png


点击完成,完成创建


在初始化完成后的目录结构如下所示


7997533f057342fc8dadebe847e57b7e.png


现在填充目录


c9d726ff72954eab89ffb2fe5cc09b1f.png


pom.xml


<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!-- 父级依赖 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.6</version>
        <relativePath/>
    </parent>
    <!-- 项目包结构 -->
    <groupId>com.liu</groupId>
    <!-- 项目工件名 -->
    <artifactId>springboot_day1</artifactId>
    <!-- 项目版本 -->
    <version>0.0.1-SNAPSHOT</version>
    <!-- 项目名 -->
    <name>springboot_day1</name>
    <!-- 项目描述 -->
    <description>这是我学习springboot和jsp整合的demo</description>
    <!-- 打包方式 -->
    <packaging>war</packaging>
    <!-- JDK1.8 -->
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <!-- 项目依赖 -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--添加tomcat依赖模块.-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <!-- 添加servlet依赖模块 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <!--jsp页面使用jstl标签-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>
        <!-- 使用jsp引擎,springboot内置tomcat没有此依赖 -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <resources>
            <resource>
                <directory>src/main/webapp</directory>
                <!--这里必须是META-INF/resources-->
                <targetPath>META-INF/resources</targetPath>
                <includes>
                    <!--以任意开头点任意结尾的文件-->
                    <include>**/**</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>


application.yml


server:
  port: 8181
spring:
  mvc:
    view:
      prefix: /
      suffix: .jsp


ControllerTest


@Controller
@RequestMapping("/test")
public class ControllerTest {
    @RequestMapping("/index")
    public String hello() {
        System.out.println("Hello >>>");
        return "index";
    }
}


index.jsp


<html>
<body>
<h1>hello spring boot and jsp</h1>
</body>
</html>


启动,测试


dbb5d541164e464a823927553833173c.png


快速写一个 Spring Boot 的 CRUD

包结构如下


32fdec4d8dcf479e907a0ef3739af4db.png


User实体类


@Data
@AllArgsConstructor
public class User {
    private int id;
    private String name;
    private int age;
}


pom.xml


<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!-- 父级依赖 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.6</version>
        <relativePath/>
    </parent>
    <!-- 项目包结构 -->
    <groupId>com.liu</groupId>
    <!-- 项目工件名 -->
    <artifactId>springboot_day1</artifactId>
    <!-- 项目版本 -->
    <version>0.0.1-SNAPSHOT</version>
    <!-- 项目名 -->
    <name>springboot_day1</name>
    <!-- 项目描述 -->
    <description>这是我学习springboot和jsp整合的demo</description>
    <!-- 打包方式 -->
    <packaging>war</packaging>
    <!-- JDK1.8 -->
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <!-- 项目依赖 -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--添加tomcat依赖模块.-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <!-- 添加servlet依赖模块 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <!--jsp页面使用jstl标签-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>
        <!-- 使用jsp引擎,springboot内置tomcat没有此依赖 -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <resources>
            <resource>
                <directory>src/main/webapp</directory>
                <!--这里必须是META-INF/resources-->
                <targetPath>META-INF/resources</targetPath>
                <includes>
                    <!--以任意开头点任意结尾的文件-->
                    <include>**/**</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>


UserService接口


public interface UserService {
    Collection<User> findAll();
    User findById(long id);
    void add(User user);
    void deleteById(long id);
    void update(User user);
}


UserServiceImpl


这里使用 HashMap 模拟数据库


@Service
public class UserServiceImpl implements UserService {
    private static HashMap<Long, User> users;
    static {
        users = new HashMap<>();
        users.put(1L, new User(1, "小刘", 12));
        users.put(2L, new User(2, "李白", 34));
        users.put(3L, new User(3, "王昭君", 22));
        users.put(4L, new User(4, "貂蝉", 16));
    }
    @Override
    public Collection<User> findAll() {
        return users.values();
    }
    @Override
    public User findById(long id) {
        return users.get(id);
    }
    @Override
    public void add(User user) {
        users.put(user.getId(), user);
    }
    @Override
    public void deleteById(long id) {
        users.remove(id);
    }
    @Override
    public void update(User user) {
        users.put(user.getId(), user);
    }
}


UserController 控制器


@Controller
@RequestMapping("user")
public class UserController {
    @Autowired
    private UserService userService;
    @GetMapping("/index")
    public ModelAndView index() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("index");
        modelAndView.addObject("Users", userService.findAll());
        return modelAndView;
    }
    @GetMapping("/findAll")
    @ResponseBody
    public Collection<User> findAll() {
        System.out.println("查询所有的接口");
        return userService.findAll();
    }
    @GetMapping("/findById/{id}")
    public ModelAndView findById(@PathVariable("id") long id) {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("user", userService.findById(id));
        modelAndView.setViewName("update");
        return modelAndView;
    }
    @PostMapping("/save")
    public String save(User user) {
        System.out.println("保存接口 USer:" + user);
        userService.add(user);
        return "redirect:/user/index";
    }
    @GetMapping("/deleteById/{id}")
    public String delete(@PathVariable("id") long id) {
        System.out.println("删除接口 id" + id);
        userService.deleteById(id);
        return "redirect:/user/index";
    }
    @PostMapping("/update")
    public String update(User user) {
        System.out.println("更新接口 User:" + user);
        userService.update(user);
        return "redirect:/user/index";
    }
}


SpringbootDay1Application


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


index.jsp


<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<table>
    <h1>用户信息</h1>
    <table>
        <tr>
            <th>用户编号</th>
            <th>用户姓名</th>
            <th>用户年龄</th>
            <th>操作</th>
        </tr>
        <c:forEach items="${Users}" var="user">
            <tr>
                <td>${user.id}</td>
                <td>${user.name}</td>
                <td>${user.age}</td>
                <td>
                    <a href="/user/findById/${user.id}">修改</a>
                    <a href="/user/deleteById/${user.id}">删除</a>
                </td>
            </tr>
        </c:forEach>
    </table>
    <a href="/add.jsp">添加用户</a>
</table>
</body>
</html>


add.jsp


<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="/user/save" method="post">
    <input type="text" name="id" value="${user.id}">
    <input type="text" name="name" value="${user.name}">
    <input type="text" name="age" value="${user.age}">
    <input type="submit">
</form>
</body>
</html>


update.jsp


<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="/user/update" method="post">
    <input type="text" name="id" value="${user.id}" readonly>
    <input type="text" name="name" value="${user.name}">
    <input type="text" name="age" value="${user.age}">
    <input type="submit">
</form>
</body>
</html>


启动测试


20f1ee1e0c1c487985203161b0f86d7e.gif

相关文章
|
7天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
19 2
|
1月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
54 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
2月前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
1月前
|
Java 应用服务中间件 Maven
idea+maven+tomcat+spring 创建一个jsp项目
这篇文章介绍了如何在IntelliJ IDEA中使用Maven和Tomcat创建一个JSP项目,包括配置Maven依赖、设置Tomcat服务器、编写JSP页面、创建控制器和配置文件,以及项目的运行结果。
171 0
idea+maven+tomcat+spring 创建一个jsp项目
|
1月前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
61 2
|
3月前
|
安全 Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+jsp实现的健身房管理系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术实现的健身房管理系统。随着健康生活观念的普及,健身房成为日常锻炼的重要场所,高效管理会员信息、课程安排等变得尤为重要。该系统旨在通过简洁的操作界面帮助管理者轻松处理日常运营挑战。技术栈包括:JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Shiro、Spring Boot 2.0等。系统功能覆盖登录、会员管理(如会员列表、充值管理)、教练管理、课程管理、器材管理、物品遗失管理、商品管理及信息统计等多方面。
|
3月前
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
89 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
5月前
|
运维 Java 关系型数据库
Spring运维之boot项目bean属性的绑定读取与校验
Spring运维之boot项目bean属性的绑定读取与校验
54 2
|
5月前
|
存储 运维 Java
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
63 2
|
5月前
|
Java Maven
springboot项目打jar包后,如何部署到服务器
springboot项目打jar包后,如何部署到服务器
424 1