我不熟悉Spring boot(和servlet 3.0)。我正在尝试用JSP作为视图创建spring mvc项目。当我从控制器返回一个视图时,它不会被解析为JstlView。
以下是我所做的:
@SpringBootApplication
public class MyApp extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
@Controller
public class MainController {
@RequestMapping( value="/main" , method = RequestMethod.GET )
public String main(){
return "main";
}
@RequestMapping( value="/" , method = RequestMethod.GET )
public String welcome(){
return "welcome";
}
}
两者都创造了。src\main\webapp\WEB-INF\jsp
中的jsp文件。
在谷歌搜索之后,我发现我需要在应用程序中指定这一点。所以我在道具中添加了以下内容:
spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp
logging.level.org.springframework: TRACE
logging.level.com: TRACE
即使在这之后,它也不起作用。这是痕迹。
2016-04-24 19:54:49.016 TRACE 7880 --- [nio-8080-exec-1] .w.s.m.m.a.ServletInvocableHandlerMethod : Invoking [MainController.welcome] method with arguments []
2016-04-24 19:54:49.016 TRACE 7880 --- [nio-8080-exec-1] .w.s.m.m.a.ServletInvocableHandlerMethod : Method [welcome] returned [welcome]
2016-04-24 19:54:49.020 DEBUG 7880 --- [nio-8080-exec-1] o.s.w.s.v.ContentNegotiatingViewResolver : Requested media types are [text/html, application/xhtml+xml, image/webp, application/xml;q=0.9, */*;q=0.8] based on Accept header types and producible media types [*/*])
2016-04-24 19:54:49.020 DEBUG 7880 --- [nio-8080-exec-1] o.s.w.servlet.view.BeanNameViewResolver : No matching bean found for view name 'welcome'
2016-04-24 19:54:49.022 DEBUG 7880 --- [nio-8080-exec-1] o.s.b.f.s.DefaultListableBeanFactory : Invoking afterPropertiesSet() on bean with name 'welcome'
2016-04-24 19:54:49.022 TRACE 7880 --- [nio-8080-exec-1] o.s.w.s.v.InternalResourceViewResolver : Cached view [welcome]
2016-04-24 19:54:49.022 DEBUG 7880 --- [nio-8080-exec-1] o.s.w.s.v.ContentNegotiatingViewResolver : Returning [org.springframework.web.servlet.view.InternalResourceView: name 'welcome'; URL [/WEB-INF/jsp/welcome.jsp]] based on requested media type 'text/html'
2016-04-24 19:54:49.022 DEBUG 7880 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Rendering view [org.springframework.web.servlet.view.InternalResourceView: name 'welcome'; URL [/WEB-INF/jsp/welcome.jsp]] in DispatcherServlet with name 'dispatcherServlet'
2016-04-24 19:54:49.022 TRACE 7880 --- [nio-8080-exec-1] o.s.w.servlet.view.InternalResourceView : Rendering view with name 'welcome' with model {} and static attributes {}
2016-04-24 19:54:49.026 DEBUG 7880 --- [nio-8080-exec-1] o.s.w.servlet.view.InternalResourceView : Forwarding to resource [/WEB-INF/jsp/welcome.jsp] in InternalResourceView 'welcome'
2
正如您在跟踪中看到的,这是试图解析/jsp/welcome。jsp作为InternalResourceView而不是JstlView。最终它以404失败。
我还需要遵循哪些步骤?是否有使用jsp的SpringBoot-mvc教程?
另外,我可以用jsp通过web创建spring mvc应用程序。xml(在我的配置文件中使用JstlView)。但是我找不到任何关于Spring boot mvc和jsp的教程。
您不需要ViewResolver。波姆。正如Yura所说,xml需要上述依赖项,并将jsp文件放在src\main\webapp\WEB-INF\jsp中。
假设它嵌入了Tomcat,
你的pom中需要有以下内容。xml
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
嵌入式Tomcat核心包不支持JSP呈现。
@Bean
public ViewResolver getViewResolver(){
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/jsp/");
resolver.setSuffix(".jsp");
resolver.setViewClass(JstlView.class);
return resolver;
}
也需要,您的页面应该在 /webapp/WEB-INF/jsp/
<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>
问题内容: 如何配置Spring Boot应用程序侦听的TCP / IP端口,因此它不使用默认端口8080。 问题答案: 正如在所述的文档任一组使用命令行选项来JVM中的系统属性-或添加在与 对于随机端口使用
我正在尝试使用OpenTelemetry代理从我用Scala编写的Akka应用程序中导出度量和跟踪,目的是使用OpenSearch中的数据。 我的应用程序的技术堆栈: Akka-2.6* 我已经将OpenTelemetry instrumentation运行时依赖项添加到构建中。sbt: 我正在属性文件中传递OpenTelem计配置: 我的代码中唯一其他相关的部分是属性文件: 我确实在OpenSe
Spring security 5.1.0。Rc1支持webflux中的OAuth2资源服务器https://spring.io/blog/2018/08/21/spring-security-5-1-0-rc1-released . 这里给出的例子讲述了基于JWT格式的OAuth2。我如何配置基于oAuth2的资源服务器并指定令牌解码uri。 在SpringMVC中,我可以使用@EnableRe
问题内容: 如何配置Spring Boot应用程序侦听的TCP / IP端口,因此它不使用默认端口8080。 问题答案: 正如在所述的文档任一组使用命令行选项来JVM中的系统属性或添加在与 对于随机端口使用
问题内容: 我需要找到Android应用程序中的瓶颈所在。 我可以使用哪些配置文件工具或技术? 问题答案: 您可以使用Traceview。它远非理想,但可行。 本文介绍了如何使用它。
我将Web服务部署为Tomcat 8.0.24上的Web应用程序(war)。应用程序罐已经过测试,它们工作正常。现在,为了配置和测试log4j,我引发了一个运行时错误(没有连接db)。 我试图只为应用程序日志设置log4j2(而不是tomcat),并使用Netbeans 8.0.2构建war。 我在类路径中包含了以下罐子: 和log4j2。WEB-INF中的xml,只有根记录器配置为捕获来自WEB