美文网首页
spring-boot集成jsp

spring-boot集成jsp

作者: b470b9fc7145 | 来源:发表于2018-01-17 18:10 被阅读147次

序言:

SpringBoot默认不支持JSP,如果想在项目中使用,需要进行相关初始化工作。为了方便大家更好的开发,本案例可直接作为JSP开发的脚手架工程 SpringBoot+War+JSP .

常见问题:

1.修改JSP需重启才能生效:

在生产环境中,SpringBoot重新编译JSP可能会导致较大的性能损失,并且很难追查到问题根源,所以在最新的版本中,官方已经默认关闭此功能,详见JspServlet类的初始化参数。那么,如何解决这个问题呢?推荐两个解决办法:1.使用devtools 2. 添加配置(server.servlet.jsp.init-parameters.development=true)

2.各种404:

1.必须导入嵌入式容器和JASPER解析器
2.必须创建webapp目录

正文:SpringBoot 添加对JSP的支持

1. 搭建脚手架

首先使用 Spring Initializr 构建工程,其中源码和静态资源目录默认生成,这里只需手工添加Web资源目录。如图:

image

2. 依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>

3. 在工程中返回jsp页面

然后再继续配置application.properties文件,如下:

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

这与只使用SpringMVC时的配置十分类似,而且可以看出使用的是InternalResourceViewResolver视图解析器。使用代码测试一下:

@Controller
public class SpringBootController {
    @RequestMapping("/")
    public String index(){
        return "welcome";
    }
}

以上会返回/src/main/WEB-INF/jsp/welcome.jsp视图。
但是,返回页面只是在eclipse这种IDE中直接运行Spring Boot程序时会起作用,如果打包成jar包后是不会包含我们创建的WEB-INF/jsp目录的,也就没有我们定义的jsp页面,所以会返回404状态码,所以这种方法实际上是没有什么意义的,个人感觉(没用你还说什么!!只是提出一种解决方式。。)

4. 在打包后返回jsp页面

如果想在打包后使用java -jar ***.jar来运行代码,就要使用如下这种方法,在/src/main/resources/中建立如下的目录META-INF/resources/WEB-INF/jsp,然后application.properties的配置和第一种方法相同。但是这样在使用mvn package打包后会包含上面建立的目录,如下:

[图片上传失败...(image-3dbe99-1516183862313)]

这时使用java -jar SpringBootTemplate-0.0.1-SNAPSHOT.jar就可以愉快地部署应用程序了,顺便说一句,此时在jsp页面也可以使用EL表达式获取Model中存储的数据了。

参考文档

详解SpringBoot 添加对JSP的支持(附常见坑点)
Spring Boot使用方法小札(1):Web应用返回jsp页面

相关文章

网友评论

      本文标题:spring-boot集成jsp

      本文链接:https://www.haomeiwen.com/subject/oybuoxtx.html