吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7424|回复: 4
收起左侧

[Java 转载] SpringBoot打jar包运行后使用jsp页面模板访问404问题的解决方案

[复制链接]
JingXianSen 发表于 2018-11-22 12:11
本帖最后由 JingXianSen 于 2018-11-22 14:25 编辑

新注册的账号,今天来发表第一篇帖子,有什么问题欢迎大家来指导一下。感谢<吾爱破解>提供相互交流的平台。

最近刚开始学习springboot做项目,上周四公司安排一个小的项目,就几个页面,向平时就直接用做一个Javaweb项目,完事部署在tomcat就OK。这次不想再这么弄,想用用新的东西,就看了看springboot的一些使用方法。于是就开始做项目的工作,使用中发现springboot推荐的页面模板使用thymeleaf。然而这个之前也没接触过,于是采用JSP,因为实在没有时间学习(时间安排的比较近,只给了3天时间)。
springboot上手后,很快捷。对于项目服务功能代码其实编写跟之前的mvc是一样的,只是它集成了很多框架,省去了很多的配置,没什么难度。只是到最后的jsp页面显示真的是卡了我好长时间。就来此记录一下,方便大家同样问题的同学们参考参考。希望能有所价值。


好了废话不多说了,接下来正式开始项目相关内容。
使用开发工具 IntelliJ IDEA.

对于需要使用jsp页面模板的,需要自己手动创建文件目录。新建目录在 ./你的项目名/src/main/webapp 如果你有需要也同时新建WEB-INF 目录,我这里有这个目录,但是没有使用。


pom依赖:
[XML] 纯文本查看 复制代码
 

<modelVersion>4.0.0</modelVersion>

    <groupId>com.项目名</groupId>
    <artifactId>statisticalvisits</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <!--<packaging>war</packaging> 如果需要打包在tomcat中运行 可替换为war包,mvn打包会根据此处来执行 --> 

    <name>statisticalvisits</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
<!-- 此处网上有很多博客说如果使用jsp页面,就必须使用springboot-1.4.2版本,但是我使用的时候用的2.0.6没有问题,反而用1.4.x会出问题,如果你有问题可以考虑换位1.4.2的试试 -->

        <!--<version>1.4.2.RELEASE</version> --> 
        <version>2.0.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.1</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

<!-- mysql jar包依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>

        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.1</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </dependency>
<!-- 使用jsp页面模板,必须有这个依赖 ,版本号可自行在mvn仓库选择-->

        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <version>8.5.34</version>
        </dependency>
    </dependencies>

    <build>
<!-- 如果使用打war包,包名可根据此处更改为你想要的项目名,不然放到tomcat运行后项目名可能不是这个 -->

<!--<finalName>visitCount</finalName>-->
        <plugins>
            <plugin>
<!-- maven插件 -->

                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.4.2.RELEASE</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <useDefaultDelimiters>true</useDefaultDelimiters>
                </configuration>
            </plugin>

        </plugins>

        <resources>
<!-- 此处最为重要-否则打包后没有你的JSP页面模板,一定要记得写为资源文件 targetPath 设置必须是 META-INF/resources 

我项目做出来的时候因为没写resources导致打包运行后正常启动,各个接口也都正常访问,但是所有的jsp页面都会报404,找不到页面 ,因为这个问题浪费了我大半天时间-->

            <resource>
                <directory>src/main/webapp</directory>
                <targetPath>META-INF/resources</targetPath>
                <includes>
                    <include>**/**</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>src/test/resource</directory>
                <filtering>true</filtering>
            </testResource>
        </testResources>
    </build>


对于springboot版本问题:网上有很多博客说如果使用jsp页面,就必须使用springboot-1.4.x版本以下,但是我使用的时候用的2.0.6没有问题,反而用1.4.x会出问题,如果你有问题可以考虑换位1.4.2的试试。
划重点:pom中<build>一定要记得写为资源文件 <targetPath> 设置必须是 META-INF/resources  否则打包后你的JSP页面模板在项目中的位置不对,springboot就无法定位到你的页面,我项目做出来的时候因为没写resources导致打包运行后正常启动,各个接口也都正常访问,但是所有的jsp页面都会报404,找不到页面 ,因为这个问题浪费了我大半天时间

然后jsp页面对应的springmvc的模板前缀后缀
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp





下面截图是正确目录打包后的jar包项目结构正确结构jsp页面是在resources目录下




OK 分享的就这些内容,希望能帮到同样问题的同学。只能是给大家提供一个解决方案,当你无法解决的时候可以考虑这个方法试一试!

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
Qizor + 1 + 1 使用内置的tomcat可能还是不行

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| JingXianSen 发表于 2018-11-23 10:47
先给自己顶一下,占个沙发,第一次发帖,希望可以帮助到有过同样问题的同学。
xiaoqinqinlove 发表于 2018-11-26 17:32
既然已经用了springboot了,已经没有必要使用jsp了,官方推荐的是thymeleaf,是对jsp的一种替代,使用起来更加好用,我之前就是html来写的
 楼主| JingXianSen 发表于 2018-11-28 16:56
xiaoqinqinlove 发表于 2018-11-26 17:32
既然已经用了springboot了,已经没有必要使用jsp了,官方推荐的是thymeleaf,是对jsp的一种替代,使用起来 ...

对,是要用新的,这个做个记录,对刚接触springboot的,可能会有碰到相同问题
Liangbj 发表于 2019-9-27 14:59
thymeleaf到底是啥啊,就是用html一些类型的文件吗
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 15:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表