Spring Boot - 整合Jsp/FreeMarker
Spring Boot - 初识 Hello World
索引
- Spring Boot - 初识 Hello World
- Spring Boot - Servlet、过滤器、监听器、拦截器
- Spring Boot - 静态资源处理、启动加载、日志处理
- Spring Boot - 数据库配置
- Spring Boot - 部署Deploy
准备
- Jdk8
- Ide intelliJ IDEA 或者 eclipse
- Maven 3
返回Json格式数据
修改pom依赖
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.wanye</groupId> <artifactId>com.wanye.springboot</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> </project>
创建启动类
package com.wanye; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * Created by wanye on 2017/5/20. */ @SpringBootApplication public class Start { public static void main(String[] args) { SpringApplication.run(Start.class, args); } }
创建Controller
package com.wanye.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.Map; /** * Created by wanye on 2017/5/20. */ @RestController // @Controller + @ResponseBody public class HelloController { @RequestMapping("/hello") public Map<String, String> hello(){ Map<String, String> hello = new HashMap<String, String>(); hello.put("data", "hello 小红"); hello.put("status", "SUCCESS"); return hello; } }
启动方式
通过main()方法来启动
验证
访问http://localhost:8080/hello 我们可以看到页面返回了数据,并且自动转换成JSON格式,接下来我们讲解刚刚用到的注解
整合JSP/FreeMarker
在整合JSP/FreeMarker之前,我们先了解一下spring boot对于controller的支持
- 模版引擎:spring boot支持FreeMarker 、Groovy 、Thymeleaf (Spring 官⽹网使⽤用这个)、Velocity 、JSP
- 接收参数:@RequestBody、@RequestParam、@ModelAttribute、JSONObject、HttpEntity 等
通过JSP模板引擎渲染
修改pom依赖
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.wanye</groupId> <artifactId>com.wanye.springboot</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 整合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> <!-- 整合jsp --> </dependencies> </project>
添加JSP文件
- 增加⽬目录“src/main/webapp/WEB-INF/jsp/”,将jsp⽂文件放⼊入这个⽬目录中,示例home.jsp代码(只用来验证是否访问到该文件)
<html> <head> <title>jsp</title> </head> <body> hello jsp </body> </html>
- 在⽬目录“resources”中,增加application.properties配置⽂文件
# 页面默认前缀目录 spring.mvc.view.prefix=/WEB-INF/jsp/ # 响应页面默认后缀 spring.mvc.view.suffix=.jsp
- 创建JSPController
package com.wanye.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /** * Created by wanye on 2017/5/20. */ @Controller public class JSPController { @RequestMapping("/jsp/home") public String home() { return "home"; } }
启动方式
#必须⽤用sping-boot:run启动 mvn clean spring-boot:run
验证
访问http://localhost:8080/jsp/home 页面返回”hello jsp”,说明整合JSP成功,该请求能够访问到home.jsp这个文件
通过FreeMarker模板引擎渲染
修改pom文件
删除刚刚jsp的pom配置,并修改spring boot 启动依赖的jar
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.wanye</groupId> <artifactId>com.wanye.springboot</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> </dependencies> </project>
添加.ftl模板文件
- 在resources下创建templates文件夹,将.ftl文件放⼊
- application.properties文件中无需配置(删除jsp配置)
- home.ftl文件
<html> <head> <title></title> </head> <body> hello freemarker. ${time?string("yyyy-MM-dd hh:mm:ss")} </body> </html>
- 创建FreemarkerController
package com.wanye.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import java.util.Date; /** * Created by wanye on 2017/5/20. */ @Controller public class FreemarkerController { @RequestMapping("/ftl/home1") public String home1(Model model) { model.addAttribute("time", new Date(System.currentTimeMillis())); return "home"; } @RequestMapping("/ftl/home2") public ModelAndView home2() { ModelAndView res = new ModelAndView("home"); res.addObject("time", new Date(System.currentTimeMillis())); return res; } }
这里通过两种方式,向页面传递参数“time”。大家自己了解一下Model, ModelAndView的使用方法,我这里就不进行详细的讲述了。
启动方式
两种方式都可以:主函数main()启动或者spring-boot:run
验证
访问http://localhost:8080/ftl/home1 页面,验证是否输出了当前时间。关于FreeMarker语法,大家自己了解一下,不是本文关注的重点
总结
本文讲述了(json,jsp,freemarker)配置及整合方法,并针对web开发常用的注解的概念及功能进行了介绍,留下了一个疑问:为什么整合jsp后必须通过spring-boot:run方式启动?欢迎大家留言讨论。
注解含义
@SpringBootApplication 等价于 @Configuration + @ComponentScan + @EnableAutoConfiguration
- @Configuration (可以理解为spring的xml配置) +
- @ComponentScan (进行组件扫描,如果扫描到有@Component、@Controller、@Service等这些注解的类,并注册为Bean,可以自动收集所有的Spring组件,包括@Configuration类) +
- @EnableAutoConfiguration (开启自动配置,这个注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring,建议标记在启动类上)
- @RestController 等价于 @Controller + @ResponseBody 返回json数据格式(springboot默认使用jackson组件进行转换)
- @RequestMapping 提供路由信息,注册访问路径
最后
若本文对你有帮助,望点赞。为了提高大家学习效果,录制了同步的视频课程,还望大家支持视频课程
相关推荐
81314797 2020-11-18
89314493 2020-11-03
81941231 2020-09-17
thisisid 2020-09-09
如狼 2020-08-15
82384399 2020-06-16
86384798 2020-05-12
80183053 2020-05-02
86384798 2020-04-26
86384798 2020-04-11
rionchen 2020-04-09
86384798 2020-04-07
86384798 2020-04-04
80183053 2020-03-07
87201943 2020-03-06
83961233 2020-02-26
87201943 2020-02-21