作者:轩风羽_609 | 来源:互联网 | 2023-01-31 09:10
我正在尝试使用Intellij IDEA运行我的Spring Boot项目.这个项目是Spring MVC类型,意味着它在路径中有JSP文件main/webapp/WEB-INF/jsp
.
我application.properties
有这些设置:
spring.view.prefix=/WEB-INF/jsp/
spring.view.suffix=.jsp
当我在Intellij中运行项目作为"Spring Boot Run Configuration"时,服务器无法识别JSP文件的路径.这是我得到的消息:
ž
如果我使用命令"Maven Run Configuration"运行项目,spring-boot:run
一切正常.
我不知道为什么会这样.每个运行配置的项目代码和设置都相同.
您可以尝试这个项目(而不是我的项目)来理解我的意思https://github.com/mariuszs/spring-boot-web-jsp-example.
我的项目也是如此.我应该注意,当项目使用Spring Boot Run Configuration运行时,我确实在控制台中看到控制器已正确映射.
2017-06-28 08:29:13.906 INFO 10308 --- [ main] o.s.w.s.h.SimpleUrlHandlerMapping : Mapped URL path [/login] onto handler of type [class org.springframework.web.servlet.mvc.ParameterizableViewController]
2017-06-28 08:29:13.835 INFO 10308 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/login],methods=[GET]}" onto public java.lang.String com.intuit.mintbills.controllers.generic.LoginController.getLoginPage()
Muzammil..
6
I solved this problem by setting the working directory to $MODULE_DIR$ in the run configuration.
1> Muzammil..:
I solved this problem by setting the working directory to $MODULE_DIR$ in the run configuration.
2> g00glen00b..:
这是IntelliJ和Spring启动的问题.你应该检查以下事项:
Web方面
确保已启用Web构面.示例项目没有web.xml
文件,因此,IntelliJ没有提取src/main/webapp
.您可以向项目添加虚拟web.xml
文件src/main/webapp/WEB-INF
并重新导入项目,也可以手动添加Web构面并进行正确配置.如果正确配置了Web构面,则应在webapp文件夹中看到蓝色圆圈.
虚拟web.xml
文件的示例:
这是src/main/webapp
文件夹中的"蓝点" :
提供依赖项
IntelliJ的另一个问题是提供的依赖项未正确获取.您通常可以通过打开" 模块"并选择" 依赖关系"选项卡来打开" 项目结构..."来解决此问题.在这里,你可以重写你的依赖的范围,所以你的情况我建议同时配置和对编译.tomcat-embed-jasper
ecj
我最近没有这样做,但每次改变你的时候都可能会被覆盖pom.xml
.在这种情况下,我建议覆盖
你pom.xml
:
org.apache.tomcat.embed
tomcat-embed-jasper
如果您计划在Web容器(例如外部Tomcat)上部署应用程序,则可能需要使用配置文件,否则这可能会导致冲突,因为这些依赖项是由Web容器提供的.
JSP限制
还建议将打包更改为WAR,因为使用带有JAR文件的JSP有一些已知的限制.引用文档:
运行使用嵌入式servlet容器的Spring Boot应用程序(并打包为可执行存档)时,JSP支持存在一些限制.
使用Tomcat它应该可以使用war包装,即可执行的war会起作用,并且也可以部署到标准容器(不限于但包括Tomcat).由于Tomcat中的硬编码文件模式,可执行jar将无法工作.
使用Jetty它应该可以使用war包装,即可执行的war会起作用,并且也可以部署到任何标准容器.
Undertow不支持JSP.
创建自定义error.jsp页面不会覆盖错误处理的默认视图,而应使用自定义错误页面.