springboot同时支持jsp+vue页面启动

本文介绍了在SpringBoot项目中,如何配置pom.xml文件,包括依赖管理和Maven版本设置,以及WebConfig类中的视图解析器、路径匹配、资源处理等内容,最后展示了TestController的简单接口测试。
摘要由CSDN通过智能技术生成

1、参考文档链接

        参考上面文档边百度边改,现在可以了,分享下

2、Java项目目录结构

3、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 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  <modelVersion>4.0.0</modelVersion>  
  <groupId>com.wxs</groupId>  
  <artifactId>test</artifactId>  
  <version>1.0-SNAPSHOT</version>  
  <packaging>war</packaging>  
  <name>test</name>  
  <!-- FIXME change it to the project's website -->  
  <url>http://www.example.com</url>  
  <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
    <maven.compiler.source>17</maven.compiler.source>  
    <maven.compiler.target>17</maven.compiler.target> 
  </properties>  
  <parent> 
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-parent</artifactId>  
    <version>1.5.9.RELEASE</version> 
  </parent>  
  <dependencies> 
    <dependency> 
      <groupId>org.springframework.boot</groupId>  
      <artifactId>spring-boot-starter-web</artifactId> 
    </dependency>  
    <!--要支持jsp需 添加servlet依赖模块 -->
    <dependency> 
      <groupId>javax.servlet</groupId>  
      <artifactId>javax.servlet-api</artifactId>  
    </dependency>
    <!-- 要支持jsp需 添加jstl标签库依赖模块 -->
    <dependency> 
      <groupId>javax.servlet</groupId>  
      <artifactId>jstl</artifactId> 
    </dependency>  
    <!-- 要支持jsp需 使用jsp引擎,springboot内置tomcat没有此依赖 -->
    <dependency> 
      <groupId>org.apache.tomcat.embed</groupId>  
      <artifactId>tomcat-embed-jasper</artifactId>  
    </dependency>
    <dependency> 
      <groupId>junit</groupId>  
      <artifactId>junit</artifactId>  
      <version>4.11</version>  
      <scope>test</scope> 
    </dependency>
 <!-- 要支持html 需添加thymeleaf -->
    <dependency>
      <groupId>org.thymeleaf</groupId>
      <artifactId>thymeleaf-spring5</artifactId>
      <version>3.0.15.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.thymeleaf</groupId>
      <artifactId>thymeleaf</artifactId>
      <version>3.0.15.RELEASE</version>
    </dependency>
  </dependencies>  
  <build>
      <resources>
          <!--要支持jsp需  springboot使用的web资源要编译到META-INF/resources-->
          <resource>
              <directory>src/main/webapp</directory>
              <targetPath>META-INF/resources</targetPath>
              <includes>
                  <include>**/*.*</include>
              </includes>
          </resource>
        <resource>
          <directory>src/main/resources</directory>
          <includes>
            <include>**/**</include>
          </includes>
          <filtering>false</filtering>
        </resource>
      </resources>
    <pluginManagement> 
      <!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->  
      <plugins>
        <plugin> 
          <artifactId>maven-clean-plugin</artifactId>  
          <version>3.1.0</version> 
        </plugin>  
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->  
        <plugin> 
          <artifactId>maven-resources-plugin</artifactId>  
          <version>3.0.2</version> 
        </plugin>  
        <plugin> 
          <artifactId>maven-compiler-plugin</artifactId>  
          <version>3.8.0</version> 
        </plugin>  
        <plugin> 
          <artifactId>maven-surefire-plugin</artifactId>  
          <version>2.22.1</version> 
        </plugin>  
        <plugin> 
          <artifactId>maven-jar-plugin</artifactId>  
          <version>3.0.2</version> 
        </plugin>  
        <plugin> 
          <artifactId>maven-install-plugin</artifactId>  
          <version>2.5.2</version> 
        </plugin>  
        <plugin> 
          <artifactId>maven-deploy-plugin</artifactId>  
          <version>2.8.2</version> 
        </plugin>  
        <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->  
        <plugin> 
          <artifactId>maven-site-plugin</artifactId>  
          <version>3.7.1</version> 
        </plugin>  
        <plugin> 
          <artifactId>maven-project-info-reports-plugin</artifactId>  
          <version>3.0.0</version> 
        </plugin> 
      </plugins> 
    </pluginManagement> 
  </build> 
</project>

4、WebConfig内容

package com.wxs.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.format.FormatterRegistry;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.validation.MessageCodesResolver;
import org.springframework.validation.Validator;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.HandlerMethodReturnValueHandler;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.*;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.thymeleaf.spring5.SpringTemplateEngine;
import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.spring5.view.ThymeleafViewResolver;
import org.thymeleaf.templateresolver.ITemplateResolver;

import java.util.List;

    @Configuration
    @EnableWebMvc
    public class WebConfig implements WebMvcConfigurer {
        @Bean
        public ViewResolver viewResolver() {
            InternalResourceViewResolver resolver = new InternalResourceViewResolver();
            resolver.setPrefix("/jsp/");
            resolver.setSuffix(".jsp");
            resolver.setViewNames("*");
            resolver.setOrder(2);
            return resolver;
        }

        @Bean
        public ITemplateResolver templateResolver() {
            SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
            templateResolver.setTemplateMode("HTML5");
            templateResolver.setPrefix("/");
            templateResolver.setSuffix(".html");
            templateResolver.setCharacterEncoding("utf-8");
            templateResolver.setCacheable(false);
            return templateResolver;
        }

        @Bean
        public SpringTemplateEngine templateEngine() {
            SpringTemplateEngine templateEngine = new SpringTemplateEngine();
            templateEngine.setTemplateResolver(templateResolver());
            // templateEngine
            return templateEngine;
        }

        @Bean
        public ThymeleafViewResolver viewResolverThymeLeaf() {
            ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
            viewResolver.setTemplateEngine(templateEngine());
            viewResolver.setCharacterEncoding("utf-8");
            viewResolver.setOrder(1);
            viewResolver.setViewNames(new String[]{"dist/*", "vue/*"});
            return viewResolver;
        }

    @Override
    public void configurePathMatch(PathMatchConfigurer pathMatchConfigurer) {

    }

    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer contentNegotiationConfigurer) {

    }

    @Override
    public void configureAsyncSupport(AsyncSupportConfigurer asyncSupportConfigurer) {

    }

    @Override
        public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
            configurer.enable();
        }

    @Override
    public void addFormatters(FormatterRegistry formatterRegistry) {

    }

    @Override
    public void addInterceptors(InterceptorRegistry interceptorRegistry) {

    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/img/**").addResourceLocations("/img/");
        registry.addResourceHandler("/static/**").addResourceLocations("/WEB-INF/" + "/static/");
        registry.addResourceHandler("/js/**").addResourceLocations("/dist/js/");
        registry.addResourceHandler("/css/**").addResourceLocations("/dist/css/");
        registry.addResourceHandler("/wxs/**").addResourceLocations("file:C:/Users/amd/Desktop/");

    }

    @Override
    public void addCorsMappings(CorsRegistry corsRegistry) {

    }

    @Override
    public void addViewControllers(ViewControllerRegistry viewControllerRegistry) {

    }

    @Override
    public void configureViewResolvers(ViewResolverRegistry viewResolverRegistry) {

    }

    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> list) {

    }

    @Override
    public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> list) {

    }

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> list) {

    }

    @Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> list) {

    }

    @Override
    public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> list) {

    }

    @Override
    public void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> list) {

    }

    @Override
    public Validator getValidator() {
        return null;
    }

    @Override
    public MessageCodesResolver getMessageCodesResolver() {
        return null;
    }
}

5、TestController内容

package com.wxs.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;


@Controller
public class TestController {
    @RequestMapping("/jsp")
    public String jsp(Model model) {
        return "index2";
    }

    @GetMapping("/vue")
    public String vue(Model model) {
        return "dist/index";
    }
}

6、测试

http://localhost:6066/jsp   jsp请求

http://localhost:6066/vue  vue请求

7、完事了~~~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值