• 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 。

      在浏览器中访问即可。

  • 相关阅读:
    性能测试工具:Jmeter介绍
    Qtday1
    CDR插件开发之Addon插件007 - Addon插件简介和案例演示
    基于SpringBoot的美发门店管理系统
    RK3568平台开发系列讲解(驱动基础篇)驱动模块传参
    【Javascript】编写⼀个函数,排列任意元素个数的数字数组,按从⼩到⼤顺序输出
    猿创征文 |【Ant Design Pro】使用ant design pro做为你的开发模板(六)OpenAPI,快速管理你的请求接口
    Linux-MySQL数据库之主从复制与读写分离
    堆栈介绍.
    游戏测试常见问题
  • 原文地址:https://blog.csdn.net/m0_73393501/article/details/139328628