小东Freeman + 关注

签名:我们爱我们的倒霉工作,也爱这千疮百孔的世界。

Spring Boot项目中如何跳转到Jsp页面

发表于 2个月前   404次查看    0评论  4 赞

首先,官方不推荐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的依赖

<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>


二、在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,页面处理速度更快,也很好上手。

4人已赞


本文由Fun言网 – 小东Freeman创作,转载请务必附上本文链接和出处,欢迎参与我们的付费投稿计划


你还没有登录,请先 登录注册!
文章评论0