我正在尝试在我的第一个SpringBoot应用程序中启动我的登录页面:
主要类
@SpringBootApplication
public class MainGate extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(MainGate.class);
}
public static void main(String... args) {
System.out.println("Booting .. ");
SpringApplication.run(MainGate.class, args) ;
}
}
这是我的Gradle文件
buildscript {
ext {
springBootVersion = '1.5.4.RELEASE'
}
repositories {
maven {
url "http://masked_domain/repository/external-proxy-group/"
}
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
group = 'com.arun'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
task fatJar(type: Jar) {
manifest {
attributes(
'Implementation-Title': 'Arun Spring Boot Application',
'Implementation-Version': version,
'Built-By': System.getProperty('user.name'),
'Built-Date': new Date(),
'Main-Class': 'com.arun.MainGate',
'Built-JDK': System.getProperty('java.version')
)
}
baseName = project.name + '-all'
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
}
repositories {
maven {
url "http://masked_domain/repository/external-proxy-group/"
}
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
testImplementation 'junit:junit:4.12'
}
应用程序属性文件
spring.mvc.view.prefix: jsp/
spring.mvc.view.suffix: .jsp
logging.level.org.springframework=debug
资源文件夹
控制器类
@Controller
public class CommonController {
@RequestMapping("/")
public String home(Map<String, Object> model) {
System.out.println("Reached the homeContoller");
return "sso_arch" ;
}
}
例外我
017-10-20 17:01:28.568 TRACE 6704 --- [nio-8080-exec-1] .w.s.m.m.a.ServletInvocableHandlerMethod : Invoking 'com.arun.controller.CommonController.home' with arguments [{}]
Reached the homeContoller
2017-10-20 17:01:28.568 TRACE 6704 --- [nio-8080-exec-1] .w.s.m.m.a.ServletInvocableHandlerMethod : Method [com.arun.controller.CommonController.home] returned [sso_arch]
2017-10-20 17:01:28.574 DEBUG 6704 --- [nio-8080-exec-1] o.s.w.s.v.ContentNegotiatingViewResolver : Requested media types are [text/html, application/xhtml+xml, image/webp, image/apng, application/xml;q=0.9, */*;q=0.8] based on Accept header types and producible media types [*/*])
2017-10-20 17:01:28.574 DEBUG 6704 --- [nio-8080-exec-1] o.s.w.servlet.view.BeanNameViewResolver : No matching bean found for view name 'sso_arch'
2017-10-20 17:01:28.577 DEBUG 6704 --- [nio-8080-exec-1] o.s.b.f.s.DefaultListableBeanFactory : Invoking afterPropertiesSet() on bean with name 'sso_arch'
How to configure spring boot mvc app for JSP?中提到的解决方案无效。因此提出一个新的主题。
答案 0 :(得分:4)
您找到了正确的问题,但似乎您没有在答案中添加解决方案,您需要Add an InternalResourceViewResolver
此ViewResolver允许我们为视图名称设置前缀或后缀等属性,以生成最终视图页面URL:
@Bean
public ViewResolver getViewResolver(){
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/jsp/");
resolver.setSuffix(".jsp");
resolver.setViewClass(JstlView.class);
return resolver;
}
并确保您拥有依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>