spring boot2.1.1整合jsp 打成jar包以及404问题解决

环境

idea 2019
jdk1.8
maven3.6
spring boot2.1.1(目前springboot最高版本为2.1.8情况下,2.0以上版本都是可行的,2.0以下未测试)
项目类型:jar

1 导入依赖

 <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.1.1.RELEASEversion>
        <relativePath/> 
    parent>
    <groupId>com.wn.demogroupId>
    <artifactId>spring-boot-jsp2artifactId>
    <version>0.0.1-SNAPSHOTversion>
    <name>spring-boot-jsp2name>
    <description>Demo project for Spring Bootdescription>

    <properties>
        <java.version>1.8java.version>
    properties>

    <dependencies>
    	
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        
        <dependency>
            <groupId>org.apache.tomcat.embedgroupId>
            <artifactId>tomcat-embed-jasperartifactId>
        dependency>
        
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>jstlartifactId>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>
    dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>

2 创建webapp目录

在src/main/目录下创建webapp/WEB-INF/jsp目录,jsp目录下存放jsp文件,如图:
spring boot2.1.1整合jsp 打成jar包以及404问题解决_第1张图片

3 编写application.properties/yml文件

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

4 创建测试Controller和jsp文件

创建Controller类:

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

import java.util.HashMap;
import java.util.Map;

@Controller
public class StudentController {

    @GetMapping("/student")
    public String studentDemo(Model model) {
        // 构造数据
        Map<String, Object> studnet = new HashMap<>();
        studnet.put("id", 1001);
        studnet.put("name", "曹操");
        studnet.put("sex", true);
        // 将数据加入Model中
        model.addAttribute("student", studnet);
        // 返回视图路径 prefix:/WEB-INF/jsp/  suffix:.jsp
        return "demo";
    }
}

在webapp/WEB-INF/jsp目录下创建demo.jsp文件:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>



    
    Title


学号 姓名 性别
${student.id} ${student.name} ${student.sex = true ? '男' : '女'}

5 404问题

如果你创建的是Module而不是项目,在使用spring boot核心类右键run启动后,访问回出现404,提示找不到对应的jsp资源(项目不会出现这个情况),如图:

spring boot2.1.1整合jsp 打成jar包以及404问题解决_第2张图片

提示404错误:

spring boot2.1.1整合jsp 打成jar包以及404问题解决_第3张图片

解决方式:使用maven >>spring-boot:run启动:

spring boot2.1.1整合jsp 打成jar包以及404问题解决_第4张图片

总结

spring boot官方不支持jsp,以上通过jar包方式整合jsp的方式,在idea中测试没问题,但是打成jar包通过java -jar命令运行会出现404错误,所以用jar包方式运行jsp应用是不可取的,建议打成war包的,使用外置tomcat的方式运行jsp应用。

你可能感兴趣的:(spring boot2.1.1整合jsp 打成jar包以及404问题解决)