喜欢有帮助记得点赞哦,加关注不迷路
在SpringBoot官方文档中不建议我们使用JSP这样的技术,取而代之的是freemark、velocity这样的模板引擎。所谓的模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档,模板引擎可以让(网站)程序实现界面与数据分离,业务代码与逻辑代码的分离,这就大大提升了开发效率,良好的设计也使得代码重用变得更加容易,不依赖servlet、网络或者web环境。
现在我们一起看一下在SpringBoot如何使用freemark模板。
1.在pom.xml文件中引入freemark依赖包
<!-- 引入freeMarker的依赖包. -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
2.在src/main/resource/创建一个templates文件夹,文件名后缀为*.ftl,里面新建一个index.ftl的文件,内容如下
<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h1>Welcome ${name}!</h1>
</body>
</html>
3.在Controller中写入一个方法
@Controller
public class FreeMarkerController {
@RequestMapping("index")
public String index(Map<String,Object> map) {
//向map总存值,前端页面可以根据键获取值
map.put("name", "张三");
//跳转页面
return "index";
}
}
4.访问页面
运行main方法即可启动我们程序,输入下图地址可以看到以下内容即配置成功。
一个简单的freemark整合就完成了,接下来我们看看怎么传递一个list并且在前端页面中获取数据
1.我们在Controller中造一些数据
//集合数据
@RequestMapping("list")
public String list(ModelMap map) {
map.addAttribute("sex", 1);
//向集合中存放数据
List<String> list = new ArrayList<String>();
list.add("三体");
list.add("百年孤独");
list.add("明朝那些事儿");
//将集合放到域中
map.addAttribute("list", list);
//返回list.ftl页面
return "list";
}
2.前段页面使用我们使用if判断和list做遍历,写法和jstl还是有一些区别的
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<!-- 判断性别 -->
<#if sex==1>
男<br/>
<#elseif sex==2>
女<br/>
<#else>
其他<br/>
</#if>
<!-- 遍历集合 -->
<#list list as user>
${user}<br/>
</#list>
</body>
</html>
3.访问页面
最后我们说一下springboot中使用freemark的一些常用配置,可以在src/main/resources下新建application.properties文件配置如下
########################################################
###FREEMARKER (FreeMarkerAutoConfiguration)
########################################################
spring.freemarker.allow-request-override=false
spring.freemarker.cache=true
spring.freemarker.check-template-location=true
spring.freemarker.charset=UTF-8
spring.freemarker.content-type=text/html
spring.freemarker.expose-request-attributes=false
spring.freemarker.expose-session-attributes=false
spring.freemarker.expose-spring-macro-helpers=false
#spring.freemarker.prefix=
#spring.freemarker.request-context-attribute=
#spring.freemarker.settings.*=
spring.freemarker.suffix=.ftl
spring.freemarker.template-loader-path=classpath:/templates/
#comma-separated list
#spring.freemarker.view-names= # whitelist of view names that can be resolved
接下来我们说一下怎么在SpringBoot中使用JSP,但是JSP应该尽量避免使用,原因如下:
1)jsp只能打包为:war格式,不支持jar格式,只能在标准的容器里面跑(tomcat,jetty都可以)
2)内嵌的Jetty目前不支持JSPs
3)Undertow不支持jsps
4)jsp自定义错误页面不能覆盖spring boot 默认的错误页面
案例:
1)在pom文件中引入jsp依赖
<!-- 引入jsp -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!-- 引入jstl-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
2)在application.properties文件中配置JSP
spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp
3)写一个方法跳转页面
@RequestMapping("tojsp")
public String toJsp() {
return "tojsp";
}
4)新建一个jsp页面,目录如下图所示
这样我们就可以使用JSP完成我们的视图渲染。
以上就是分享的使用SpringBoot在freemark和JSP渲染视图,希望对各位读者有所帮助。