• Spring Boot 项目中使用 JSP


    Spring Boot 项目中使用 JSP

    在 Spring Boot 项目中不是不可以使用 JSP 。想在 Spring Boot 中使用 JSP,需要满足一些特殊要求。

    项目结构

    Spring Boot 项目想要支持 JSP,其项目结构必须如下:

    spring-boot-jsp
    ├── pom.xml
    └── src
        ├── main
        │   ├── java
        │   ├── resouces
        │   └── webapp
        │       └── WEB-INF
        │           └── jsp
        │               └── welcome.jsp
        └── test
    

    配置文件 application.properties 中进行配置:

    spring.mvc.view.prefix=/WEB-INF/jsp/
    spring.mvc.view.suffix=.jsp
    
    • spring.mvc.view.prefix 指明 jsp 文件在 webapp 下的哪个目录

    • spring.mvc.view.suffix 指明 jsp 以什么样的后缀结尾

    引入依赖包

    <dependency>
      <groupId>org.springframework.bootgroupId>
      <artifactId>spring-boot-starter-webartifactId>
    dependency>
    <dependency>
      <groupId>javax.servletgroupId>
      <artifactId>jstlartifactId>
    dependency>
    <dependency>
      <groupId>org.apache.tomcat.embedgroupId>
      <artifactId>tomcat-embed-jasperartifactId>
    dependency>
    
    • spring-boot-starter-web 包依赖了 spring-boot-starter-tomcat,因此,后者不再需要单独配置;

    • jstl 是一个 JSP 的 jstl 标签库;

    • tomcat-embed-jasper 主要用来支持 JSP 的解析和运行。

    编写页面和后台

    <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    DOCTYPE html>
    <html>
    <body>
    Time: ${time}
    <br>
    Message: ${message}
    body>
    html>
    
    @Controller
    public class WelcomeController {
    
        @GetMapping("/")
        public String welcome(Model model) {
            model.addAttribute("time", new Date());
            model.addAttribute("message", "hello world");
            return "welcome";
        }
    
    }
    

    运行

    方式一:Maven 命令运行

    cmd 进入项目根路径下,执行:

    mvn clean spring-boot:run
    

    补充:IDEA 的 Maven 工具窗口中,有个 M 图标,通过点击它在弹出的窗口中可直接手动执行 maven 命令。

    方式二:在 IDEA 中运行

    如果像其他项目一样,直接在 IDEA 中通过 main 方法来启动项目,在访问测试的时候会出现 404 not found

    这是因为 Spring Boot JSP 项目需要额外进行一个设置:选择 Edit Configurations 选项,打开 Configuration,为 Working directory 赋值为项目的根目录。

    springboot-jsp-1

    方式三:打 war 包部署运行

    • step 1 :在 pom.xml 里设置打包格式为 war

      <packaging>warpackaging>
      
    • step 2:排除内嵌的 Tomcat 依赖,避免 jar 包冲突。

      <dependency>
          <groupId>org.springframework.bootgroupId>
          <artifactId>spring-boot-starter-webartifactId>
          
          <exclusions>
              <exclusion>
                  <groupId>org.springframework.bootgroupId>
                  <artifactId>spring-boot-starter-tomcatartifactId>
              exclusion>
          exclusions>
      dependency>
      
    • step 3:添加 Servlet 的支持

      Spring Boot 项目必须实现 SpringBootServletInitializer 接口的 .configure() 方法才能让外部容器运行 Spring Boot 项目。

      在启动类同目录下创建 ServletInitializer 类:

      public class ServletInitializer extends SpringBootServletInitializer {
      
          @Override
          protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
              return application.sources(JspApplication.class);
          }
      
      }
      
    • step 4:maven 命令打包

      在项目根目录下执行:

      mvn clean package
      
    • step 5:发布运行

      将项目 target 目录下的 .war 包拷贝到 tomcat 的 webapps 目录下,运行 tomcat 的 bin 目录下的 startup.bat 启动 tomcat 。

      在浏览器中访问即可。

  • 相关阅读:
    C++ 继承
    Springboot整合HBase
    园子的商业化努力-困境求助:开设捐助通道
    SpringBoot整合Spring Boot Admin监控
    【Vue项目复习笔记】详情页的展示
    Docker如何安装seafile
    一文讲清楚什么是类型化数组、ArrayBuffer、TypedArray、DataView等概念
    已解决:KeyError: ‘The truth value of a Series is ambiguous‘ 问题
    YOLOv8涨点技巧:手把手教程,注意力机制如何在不同数据集上实现涨点的工作,内涵多种网络改进方法
    计网实验软件 Cisco Packet Tracer 8 获取并汉化
  • 原文地址:https://blog.csdn.net/m0_73393501/article/details/139328628