`

81. Spring Boot集成JSP疑问【从零开始学Spring Boot】

阅读更多

 

  

【原创文章,转载请注明出处】

       针对文章:

19Spring Boot JSP支持【从零开始学Spring Boot 

       有网友提了这么一些疑问:

 

 

1Spring Boot使用jsp时,仍旧可以打成jar包的形式吗?

2Spring Boot使用jsp时,比如说cssimagejs 等三种静态资源文件,应该放在什么目录下?这些静态资源映射,在spring boot中具体应该怎么做?


   
例如,下面是spring中做的静态资源映射,但是在spring boot中不知道怎么处理:
 

    <!-- springmvc.xml 资源映射 -->
    <mvc:resources location="/WEB-INF/css/" mapping="/css/**"/>
    <mvc:resources location="/WEB-INF/js/" mapping="/js/**"/>
    <mvc:resources location="/WEB-INF/image/" mapping="/image/**"/>
 

3
下面这个tomcat的包必须导入吗,spring-boot-starter-web中不是有一个内嵌的tomcat吗?

 

       <dependency>

           <groupId>org.springframework.boot</groupId>

           <artifactId>spring-boot-starter-tomcat</artifactId>

           <scope>provided</scope>

       </dependency>

 

<1>、针对第一个问题,答案是不可以的。

       我们先看一段英文描述,如下:

When running a Spring Boot application that uses an embedded servlet container (and is packaged as an executable archive), there are some limitations in the JSP support.

 

  • With Tomcat it should work if you use war packaging, i.e. an executable war will work, and will also be deployable to a standard container (not limited to, but including Tomcat). An executable jar will not work because of a hard coded file pattern in Tomcat.
  • Jetty does not currently work as an embedded container with JSPs.
  • Undertow does not support JSPs.

       原文的大体意思就是:Tomcat支持war的打包方式,spring boot支持war打包方式。Jetty现在不支持JSP嵌入容器。Undertow根本就不支持JSP

       所以答案就是打包成warjsp会自然按照servlet的标准部署。但也就意味着你不可以用嵌入式的方式运行,而是Tomcat Server + war的部署方式。

       看到这里有些网友肯定会有疑问那什么是嵌入式的web服务器?我们这边就拿jetty来说明下。

       Jetty 可以非常容易的嵌入到应用程序当中而不需要程序为了使用 Jetty 做修改。

       从某种程度上,你也可以把 Jetty 理解为一个嵌入式的Web服务器。所以我们经常会说嵌入式jetty

       Jetty有一个口号:不要把你的应用部署到Jetty中,把Jetty部署到你的应用中Jetty可以在Java应用程序中向其他POJO一样被实例化,换句话说,以嵌入式的模式运行Jetty是指Http模块放入你的应用程序中,而非部署你的程序到一个HTTP服务器。这就是所谓的嵌入式jetty

       另外在说明一点就是JSP解析是需要JSP引擎处理的,tomcat就提供了JSP处理引擎。所以很显然JSP是依赖容器而存在的,不然就没法访问了。那么既然是依赖于tomcat的话。好了第一个问题就解说到这里,不知道是否对你有帮助?留言评论!

      出了这篇文章之后,有一网友找到一支持打成jar包运行的插件:

Using Spring Boot with JSPs in Executable Jars
https://github.com/ghillert/spring-boot-jsp-demo

经过java -jar xxx.jar运行后,可以正常访问网页。(博主没有具体的尝试)

       这也可以说明原本是不支持的,但是如果非要支持的话,那么需要进行使用插件进行支持。

 

 

 

<2>针对第二个问题

       对于第二个问题,如果看过之前的文章就很好解决了,只需要在src/main/resouces下新建一个static目录,然后在static下新建子目录:css,images,js目录,在images放入一张test.jpg图片,那么访问路径是:http://127.0.0.1:8080/images/test.jpg

       当前目录结构应该是这样子的:

       (1)--src/java/resources

         (2)-- static

                (3)-- css

                (3)-- images

                (3)-- js

       那么有人会有疑问这个,打包的时候能打上嘛,答案是可以的,请看实际打包解压图:



 

更多说明看:13)处理静态资源(默认资源映射)【从零开始学Spring Boot 

 

 

<3>第三个问题

       是的,Spring Boot内嵌了Tomcat,那么以下的配置是必须的嘛:

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

 

       如果没有这个配置的话,那么打包出来会包含tomcatjar包,整个war文件都会变大,第二就是如果版本是一样的,比如我这里是8.0的,那么是不会报错的,如果是7.0tomcat的话,那么就启动报错了。有另外一种配置方式如下:

       <dependency> 
            <groupId>org.springframework.boot</groupId> 
            <artifactId>spring-boot-starter-web</artifactId>  
           <exclusions> 
            <exclusion> 
                <groupId>org.springframework.boot</groupId>  
                <artifactId>spring-boot-starter-tomcat</artifactId> 
            </exclusion> 
           </exclusions>  
        </dependency>

 

当然具体的,这个可以看:http://www.it610.com/article/3598864.htm 有一定的参考价值。

       以上7.0,8.0是我自己尝试了才发表的言论。

 

结束语

       出去打了2小时的羽毛球,1个小时的游泳,实在是爽。

       好吧,这里我们还是必要总结下,上面说了那么多,其实就是两三句就可以概括了。

      (a) 第一就是:Spring Boot使用jsp的话,是不可以打包成jar包的,需要打包成war成文件。

       (b)第二就是:静态资源存放在resourcesstatic下,新建images,js,css目录即可,当然出了static还可以是resources下创建resources文件存放资源,还有就是public。具体看我的第13篇博客文章。

 

       (c)第三就是:spring-boot-starter-tomcat是必须添加的嘛,我只能说在我的这个demo中我的这个是必须添加的,不然第一占导出包大小,其次就是可能tomcat jar包会冲突,导致无法启动程序。另外要说明的就是还有别的方式使用tomcat的方式,大家可以参考别的文章进行学习。另外这是原创文章,大家有什么自己的疑问都可以给我留言,各抒己见。好了,那本章就到此为此吧。拜拜!

 à悟空学院:https://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!

SpringBoot视频:http://t.cn/A6ZagYTi

Spring Cloud视频:http://t.cn/A6ZagxSR

SpringBoot Shiro视频:http://t.cn/A6Zag7IV

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringData和JPA视频:http://t.cn/A6Zad1OH

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

Sharding-JDBC分库分表实战http://t.cn/A6ZarrqS

分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr

 

 更多查看博客: http://412887952-qq-com.iteye.com/

 

 

  • 大小: 36.9 KB
分享到:
评论
4 楼 林祥纤 2017-04-13  
大頭蝦 写道
Spring Boot使用jsp时,仍旧可以打成jar包的形式吗?
这个是可以的,只要把 jsp 文件放在静态路径的目录即可(本人用的是 spring boot 1.4.2.RELEASE,高版本好像有问题)
jsp 的路径:src\main\resources\META-INF\resources\pages\layout\basic.jsp
访问路径是:\pages\layout\basic.jsp


高版本还真的不是很清楚,我研究的是1.3.3版本的。
3 楼 大頭蝦 2017-04-13  
Spring Boot使用jsp时,仍旧可以打成jar包的形式吗?
这个是可以的,只要把 jsp 文件放在静态路径的目录即可(本人用的是 spring boot 1.4.2.RELEASE,高版本好像有问题)
jsp 的路径:src\main\resources\META-INF\resources\pages\layout\basic.jsp
访问路径是:\pages\layout\basic.jsp
2 楼 林祥纤 2016-11-14  
k88520 写道
感谢博主答疑解惑


不客气。
1 楼 k88520 2016-11-02  
感谢博主答疑解惑

相关推荐

    19. [视频]Spring Boot 添加JSP支持【从零开始学Spring Boot】

    以下是一个详细的过程,指导你如何从零开始在Spring Boot应用中集成并使用JSP。 首先,我们需要理解Spring Boot的默认视图解析机制。Spring Boot推荐使用Thymeleaf、Freemarker或Mustache等模板引擎,因为它们提供...

    从零开始学Spring Boot

    1.22 Spring Boot 添加JSP支持 1.23 Spring Boot Servlet 1.24 Spring Boot过滤器、监听器 1.25 Spring Boot 拦截器HandlerInterceptor 1.26 Spring Boot启动加载数据CommandLineRunner 1.27 Spring Boot环境变量...

    Springboot从入门到实战-02-整合JSP

    本节课程将引导读者从零开始学习Spring Boot,从创建项目到整合JSP,逐步深入学习Spring Boot的各方面知识。 描述解释 虾米大王教你学编程是一系列教程,旨在指导读者学习Java编程语言和相关技术栈,包括Spring ...

    干净可用spring-boot的项目

    这大大节省了开发者从零开始构建新项目的时间,提高了开发效率。 下面我们将深入探讨Spring Boot的核心特性和主要知识点: 1. **起步依赖(Starter Dependencies)**:Spring Boot通过“起步依赖”管理依赖关系,...

    spring-framework-learning:Spring Framework从零开始学习

    Spring Framework从零开始学习 您将学习最受欢迎的Java框架,以使用Spring框架构建动态而强大的Web应用程序。 在本课程中,您将深入了解Spring Framework。 您还将了解Spring框架功能,例如Spring Boot,Spring容器...

    从零开始学java web

    本教程“从零开始学Java Web”旨在帮助初学者系统地掌握这一领域的基础知识,从第一章到第十七章,内容全面且详细。下面我们将逐一探讨这些章节可能涵盖的关键知识点。 第一章:Java Web入门 这一章通常会介绍Java ...

    《从零开始学JAVA》配套PPT

    《从零开始学JAVA》是一本面向初学者的优秀教程,配套的PPT旨在通过清晰易懂的方式,帮助读者逐步掌握Java编程语言的核心概念和技术。这21章的内容覆盖了从基础到进阶的全面知识体系,对于想要系统学习Java的你来说...

    图书管理系统从零开始搭建javaweb项目

    【标题】:“图书管理系统从零开始搭建javaweb项目” 【描述】:“图书管理系统包括用户管理、图书管理、购物车等功能,适合入门javaweb初学者” 【知识点详解】: 1. **JavaWeb基础**:JavaWeb是Java技术在Web...

    Spring的第一个案例

    在"Spring的第一个案例"中,我们将学习如何从零开始创建一个Spring项目。首先,我们需要一个合适的开发环境,如IDEA或Eclipse,以及Spring Initializr来生成初始的项目结构。接着,我们将添加必要的依赖,如Spring ...

    架构探险 从零开始写javaweb框架Pdf及书上源码

    《架构探险:从零开始写JavaWeb框架》是一本深入探讨JavaWeb开发的书籍,旨在帮助读者理解并构建自己的JavaWeb框架。这本书的PDF版本以及配套的源码提供了丰富的学习资源,让读者能够亲手实践书中的理论知识。下面将...

    java spring框架学习资料 pdf

    《Java Spring框架学习指南》是一份详尽的教育资源,旨在帮助开发者从零基础开始逐步掌握Spring框架,并深入理解其核心概念和技术。这份PDF文档全面覆盖了Spring框架的基础知识,包括IoC(Inversion of Control)...

    Spring新手教程3件套.rar

    总的来说,这份Spring新手教程3件套将帮助你从零开始,逐步掌握Spring框架的各个方面,无论是基本的依赖注入,还是进阶的Web开发和分布式系统支持,都将为你提供坚实的理论基础和实践经验。通过系统学习并实践这些...

    jsp学习视频

    【JSP学习视频】资源包含了全面的JSP(JavaServer Pages)学习教程,旨在帮助初学者从零开始,逐步掌握这一强大的服务器端脚本技术。JSP是Java平台上的一个核心组件,它允许开发者创建动态网页,将业务逻辑与表现层...

    spring入门视频

    它集成了大量常用的第三方库配置,如JDBC、MongoDB、REST、WebSocket等,让你可以"零配置"地开始开发。 2. **创建Spring Boot项目**:讲解如何使用Spring Initializr创建一个新的Spring Boot项目,选择所需的依赖,...

    SpringCloud 29 道面试题和答案.docx

    Spring Boot的特点是零配置、内嵌式服务器、自动配置等。开发者可以通过`application.properties`或`application.yml`文件覆盖默认属性。例如,要修改Spring MVC视图解析的前缀和后缀,可以在配置文件中设置: ```...

    零基础学Java.Web开发源代码

    "零基础学Java Web开发"这个资源包含了JSP(JavaServer Pages)、Servlet、Struts、Spring和Hibernate等核心技术的学习材料,这些都是构建企业级Web应用不可或缺的部分。 首先,JSP是Java平台上的服务器端脚本语言...

    SpringBootNewbie:我从零开始的学习之路

    本篇文章将详细探讨Spring Boot的基础知识,以及如何从零开始学习这一强大的工具。 首先,Spring Boot是Spring框架的扩展,旨在简化Spring应用程序的初始设置和配置。它内置了一个Tomcat服务器,支持“开箱即用”的...

    架构探险 从零开始写javaweb框架

    本篇文章将基于"架构探险 从零开始写javaweb框架"的主题,深入探讨Java Web开发的核心概念、关键技术和实践要点。 1. **Java Web基础**:首先,我们需要理解Java Web的基础,包括Servlet、JSP(JavaServer Pages)...

    spring-mvc-step-by-step

    最后,通过一个完整的实例,你将有机会将所学知识应用于实际项目,从零开始构建一个具备增删改查功能的Web应用。 这个PDF教程会一步步引导你探索Spring MVC的各个方面,无论你是初学者还是有一定经验的开发者,都...

Global site tag (gtag.js) - Google Analytics