版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28202661/article/details/82586131
- 第一周
API返回一个页面
使用freemarker,
- 第一步,freemarker依赖引入,
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
- 第二步,打开application.properties项目启动配置文件,配置freemarker相关参数(路径,后缀等)
spring.freemarker.template-loader-path=classpath:/templates/service/
spring.freemarker.suffix=.ftl //配置文件后缀名
spring.freemarker.request-context-attribute=request
spring.freemarker.settings.classic_compatible = true //空值处理
- 第三步,在配置的模板路径下新建 *.ftl 文件
- 第四步,对象调用
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@Controller
public class test {
//设置请求路径,请求方式,required = true表示必须带有请求参数,若请求参数名与方法参数名不一致,可采取@RequestParam(value = "requestName", required = true) String requestName的写法进行映射
//添加一个Model,作为向页面传递数据的载具
@RequestMapping(value = "/queryReport/carrier", method = RequestMethod.GET)
public String queryReport(@RequestParam(value = "requestName", required = true) String requestName, Model model) {
String name = requestName;
model.addAttribute("name", name); //此举将向前台页面传递数据,页面通过${name}即可获取
return “result”; //此举将返回模板路径下的 result.ftl页面
}
}
- 前台页面展示
<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h1>你好,${name}!</h1>
</body>
</html>
//控制台打印
你好,小龙!
@Controller和@RestController的区别
@ResterController::无法返回jsp页面,或者html,返回的内容就是Return 里的内容。
@Controller:可返回jsp页面,或者html,若返回json等内容到页面,则需要加@ResponseBody注解
附:@Controller和@RestController的区别?
采用链式编程极容易造成空指针异常,使用时应当注意判空
现象:比如获取一个对象 Object a = A.getB().getC().getD() ; 当getD前面的任意一个get返回空的话,将导致getD出现空指针异常
思路:关键位置判断是否为空,如若可确定至getB不为空,则只需要判断getC不为空即可
解决:
C c = A.getB().getC();
if(c不为空){
//设置状态码标识(可以此设置页面上相关数据是否展示,非必选项)
//执行代码(C不为空才取D,避免报错空指针异常)
D d = c.getD();
}
String字符串工具类(判空)
import java.util.List;
import java.util.Map;
/**
* String字符串工具类.
*/
public final class StringUtil {
/**
* 函数功能说明 : 判断集合是否为空.
*
* @param 对象List
* @return True:为空False:非空
*/
public static boolean isEmpty(final List<?> obj) {
return null == obj || obj.isEmpty();
}
/**
* 函数功能说明 : 判断Map集合是否为空.
*
* @param obj
* 判断对象
*/
public static boolean isEmpty(final Map<?, ?> obj) {
return null == obj || obj.isEmpty();
}
/**
* 函数功能说明 : 判断对象是否为空.
*
* @param obj
* 判断对象
*/
public static boolean isEmpty(final Object obj) {
if (null == obj) {
return true;
}
if (obj instanceof String) {
return ((String) obj).trim().isEmpty();
}
return !(obj instanceof Number) ? false : false;
}
/**
* 函数功能说明 : 判断对象数组是否为空.
*
* @param obj
* 判断对象
*/
public static boolean isEmpty(final Object[] obj) {
return null == obj || 0 == obj.length;
}
/**
* 函数功能说明 : 判断字符串是否为空 .
*
* @param str
* 判断对象
*/
public static boolean isEmpty(final String str) {
return null == str || "".equals(str);
}
}
.ftl 页面对空值的处理
<#if haveReport == "0" >
<div>
<h3>
信息展示中...
</h3>
</div>
<#else>
<div>
<h3>
还未生成信息
</h3>
</div>
</#if>
ftl 语法指令
- 第二周