首先,官方不推荐jsp的支持(jar包不支持jsp,jsp需要运行在servletContext中,war包需要运行在server服务器中如tomcat)官方推荐使用thymeleaf,freemarker等模版引擎,具体原因如下:
运行使用嵌入式servlet容器的Spring Boot应用程序(并打包为可执行存档)时,JSP支持存在一些限制。
1、使用Jetty和Tomcat,如果使用war包装,它应该可以工作。可执行的战争在启动时将起作用java -jar,并且也可以部署到任何标准容器。使用可执行jar时不支持JSP。
2、Undertow不支持JSP。
3、创建自定义error.jsp页面不会覆盖错误处理的默认视图 。 应该使用自定义错误页面。
但是真的有需求需要跳转到jsp页面的话,我们应该怎么做呢,下面给大家说一下。
一、在pom.xm中加入支持JSP的依赖
org.apache.tomcat.embed
tomcat-embed-jasper
provided
javax.servlet
jstl
二、在src/main/resources/application.properties文件中配置JSP和传统Spring MVC中和view的关联
spring.view.prefix=/WEB-INF/views/
spring.view.suffix=.jsp
三、创建webapp目录,放在main目录下,与java、resources同级,jsp和其他静态文件都放在这
这样就可以了,就像传统的springmvc的方式访问即可,以上代码pom.xml中的javax.servlet.jsp.jstl是用于支持JSP标签库的,在Web2.5的容器中没有问题,单当你的容器是Web3.0或以上版本时,就会出问题。 这是个非常坑爹的问题。
javax.servlet.jsp.jstl会自动加载依赖servlet-api-2.5.jar, 而且会在实际运行时把支持Web3.0的3.1版本的javax.servlet-api覆盖掉。即使你在pom.xml显示的在加入3.1版本的javax.servlet-api也没用。导致SpringBoot应用抛出Runtime exception运行错误。
这是一个不可调和的矛盾,要吗不用javax.servlet.jsp.jstl,要吗不用Web3.0。
但绝大多数情况下,jstl标签库不是必须的,而Web3.0是必须的,所以我还是建议大家不要在使用jsp了,效率较低,可以选择framaker或者beetl,我个人更建议用beetl,页面处理速度更快,也很好上手。
你还没有登录,请先使用 QQ登录 或 注册!
文章评论
发表评论