我正在将现有的jsp应用程序迁移到spring boot。我已经完成了标准的hello world示例,坦率地说这些示例并不能很好地扩展(IMO)。在spring boot example中,控制器被定义为采用默认路径并将您路由到hello.jsp。将其缩小意味着每个jsp都必须拥有自己的控制器requestMapping - 这是不可取的。所以我继续创建了一个映射所有JSP的方法方法
@RequestMapping(value = "/")
String home() {
Logger.info("Routing to the home page")
return "home"
}
@RequestMapping(value = "/{file:.+}")
String jspMapper(@PathVariable String file) {
Logger.info("Routing to the $file page (generically)")
return file
}
现在这"工作"但是这意味着所有现有的jsps都需要更改其链接:
<a href="home.jsp">Home</a>
为:
<a href="home">Home</a>
此外,诸如.js,.html,.css,.png等所有资源都没有与jsps混合工作(当然使用子目录)。我知道我可以在资源下添加一个静态文件夹,但这也需要更改JSP中的引用(据我所知)。
有没有办法让所有请求(我没有注册要匹配的servlet)路由到webapp文件夹(在我的情况下是WEB-INF / jsp)?如果可能的话,我想尽量减少对jsps的更改。
Gradle snippits获取环境信息:
ext {
springBootVersion = '1.5.2.RELEASE'
}
apply plugin: 'org.springframework.boot'
apply plugin: 'war'
apply plugin: 'groovy'
sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.boot:spring-boot-starter-tomcat')
compile('javax.servlet:jstl')
compile('org.apache.tomcat.embed:tomcat-embed-jasper')
compile('org.eclipse.jdt.core.compiler:ecj:4.6.1')
compile('org.codehaus.groovy:groovy-all')