针对文章:
(19)SpringBoot添加JSP支持
有网友提了这么一些疑问:
1、SpringBoot使用JSP时,仍旧可以打成jar包的形式吗?
2、SpringBoot使用JSP时,比如说css,image,js等三种静态资源文件,应该放在什么目录下?这些静态资源映射,在springboot中具体应该怎么做?
例如,下面是spring中做的静态资源映射,但是在springboot中不知道怎么处理:!--springmvc.xml资源映射--mvc:resourceslocation="/WEB-INF/css/"mapping="/css/**"/mvc:resourceslocation="/WEB-INF/js/"mapping="/js/**"/mvc:resourceslocation="/WEB-INF/image/"mapping="/image/**"/3、下面这个tomcat的包必须导入吗,spring-boot-starter-web中不是有一个内嵌的tomcat吗?
dependency
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter-tomcat/artifactId
scopeprovided/scope
/dependency
1、针对第一个问题,答案是不可以的。
我们先看一段英文描述,如下:
WhenrunningaSpringBootapplicationthatusesanembeddedservletcontainer(andispackagedasanexecutablearchive),therearesomelimitationsintheJSPsupport.
WithTomcatitshouldworkifyouusewarpackaging,i.e.anexecutablewarwillwork,andwillalsobedeployabletoastandardcontainer(notlimitedto,butincludingTomcat).AnexecutablejarwillnotworkbecauseofahardcodedfilepatterninTomcat.
JettydoesnotcurrentlyworkasanembeddedcontainerwithJSPs.
UndertowdoesnotsupportJSPs.
原文的大体意思就是:Tomcat支持war的打包方式,springboot支持war打包方式。Jetty现在不支持JSP嵌入容器。Undertow根本就不支持JSP。
所以答案就是打包成war,JSP会自然按照servlet的标准部署。但也就意味着你不可以用嵌入式的方式运行,而是TomcatServer+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包运行的插件:
UsingSpringBootwithJSPsinExecutableJars辽宁治疗白癜风的医院初期白癜风治的好吗