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

相关文章
|
11月前
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
2652 17
Spring Boot 两种部署到服务器的方式
|
9月前
|
Java 数据库 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——指定项目配置文件
在实际项目中,开发环境和生产环境的配置往往不同。为简化配置切换,可通过创建 `application-dev.yml` 和 `application-pro.yml` 分别管理开发与生产环境配置,如设置不同端口(8001/8002)。在 `application.yml` 中使用 `spring.profiles.active` 指定加载的配置文件,实现环境快速切换。本节还介绍了通过配置类读取参数的方法,适用于微服务场景,提升代码可维护性。课程源码可从 [Gitee](https://gitee.com/eson15/springboot_study) 下载。
363 0
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
543 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
741 2
|
Java 应用服务中间件 Maven
idea+maven+tomcat+spring 创建一个jsp项目
这篇文章介绍了如何在IntelliJ IDEA中使用Maven和Tomcat创建一个JSP项目,包括配置Maven依赖、设置Tomcat服务器、编写JSP页面、创建控制器和配置文件,以及项目的运行结果。
815 0
idea+maven+tomcat+spring 创建一个jsp项目
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
488 2
|
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框架。
508 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
Java Maven
springboot项目打jar包后,如何部署到服务器
springboot项目打jar包后,如何部署到服务器
1078 1
|
运维 Java 关系型数据库
Spring运维之boot项目bean属性的绑定读取与校验
Spring运维之boot项目bean属性的绑定读取与校验
180 2
|
存储 运维 Java
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
237 2