论坛首页 编程语言技术论坛

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

浏览 3290 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2016-08-06  

 

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

       针对文章:

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吗?
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

       <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的话。好了第一个问题就解说到这里,不知道是否对你有帮助?留言评论!

 

<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

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


<!--[endif]-->

更多说明看: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个小时的游泳,实在是爽。

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

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

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

 

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

 

 

 

 

  • 大小: 36.9 KB
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics