没有定义控制器的Spring Boot JSP应用程序

时间:2017-03-30 13:58:55

标签: jsp spring-boot migration

我正在将现有的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')

0 个答案:

没有答案