• Spring Boot 本地部署 JSP


    自己是Spring Boot 的初学者,开始看教程的时候发现基本上都是部署的 JSP,但是按照教程一步步走下来始终无法成功,一直都是 404:
    在这里插入图片描述

    查阅各种资料后,总结出一套 Spring Boot 支持 JSP 的流程:

    添加依赖

    pom.xml中添加两个依赖:tomcat-embed-jasper(它提供了JSP解析和执行的功能)和 javax.servlet-api(它提供了对 JSP 所需的 Servlet API 的支持)。这是所需的 pom.xml内容:

            <dependency>
                <groupId>org.apache.tomcat.embedgroupId>
                <artifactId>tomcat-embed-jasperartifactId>
                <scope>providedscope>
            dependency>
            <dependency>
                <groupId>javax.servletgroupId>
                <artifactId>javax.servlet-apiartifactId>
                <version>3.1.0version>
                <scope>providedscope>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    要注意的是,将 pom.xml 文件packing 方式修改为 war:

        <packaging>warpackaging>
    
    • 1

    配置主类

    配置 SpringBootServletInitializer 子类以启用 JSP 支持。

    package com.example.springfirst;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.actuate.autoconfigure.wavefront.WavefrontProperties;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
    
    @SpringBootApplication
    public class SpringFirstApplication extends SpringBootServletInitializer {
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(WavefrontProperties.Application.class);
        }
    
        public static void main(String[] args) {
            SpringApplication.run(SpringFirstApplication.class, args);
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    常规内容

    其它的配置,比如 mapping 应该和网上的一致,我就简单记录一下。

    package com.example.springfirst.spittr.config;
    
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    @ComponentScan(basePackages={"com.example.springfirst.spittr"})
    public class RootConfig {
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    package com.example.springfirst.spittr.config;
    
    import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
    import com.example.springfirst.spittr.web.WebConfig;
    
    public class SpitterWebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    
        @Override
        protected String[] getServletMappings() {
            return new String[] { "/" };
        }
    
        @Override
        protected Class<?>[] getRootConfigClasses() {
            return new Class<?>[] { RootConfig.class };
        }
    
        @Override
        protected Class<?>[] getServletConfigClasses() {
            return new Class<?>[] { WebConfig.class };
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    package com.example.springfirst.spittr.web;
    
    import static org.springframework.web.bind.annotation.RequestMethod.*;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import javax.annotation.PostConstruct;
    
    @Controller
    public class HomeController {
    
        @PostConstruct
        public void init() {
            System.out.println("HomeController bean created");
        }
    
        @RequestMapping(value="/home", method = GET)
        public String home() {
            return "home";
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    package com.example.springfirst.spittr.web;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.ViewResolver;
    import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    import org.springframework.web.servlet.view.InternalResourceViewResolver;
    
    @Configuration
    @EnableWebMvc
    @ComponentScan("com.example.springfirst.spittr.web")
    public class WebConfig implements WebMvcConfigurer {
    
        @Bean
        public ViewResolver viewResolver() {
            InternalResourceViewResolver resolver = new InternalResourceViewResolver();
            resolver.setPrefix("/WEB-INF/jsp/");
            resolver.setSuffix(".jsp");
            return resolver;
        }
    
    //    @Override
    //    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    //        configurer.enable();
    //    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    附录

    工程结构如下:
    在这里插入图片描述

  • 相关阅读:
    使用jenkins连接linux部署jar包
    【基础】填涂颜色
    计算机网络实验五 子网划分与路由器配置
    XSS绕过安全狗WAF
    多肽标签X-press,DLYDDDDK
    QGIS编译(跨平台编译)之四十五:Exiv2编译(Windows、Linux、MacOS环境下编译)
    SpringBoot+Vue项目疫情防控期间某村外出务工人员信息管理系统
    基于qiankun搭建angular为基座vue为子应用的微前端项目
    Axure原型设计:从零开始到精通中文版
    web项目的搭建
  • 原文地址:https://blog.csdn.net/qq_42403042/article/details/136618582