实习笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 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 语法指令

附:Freemaker FTL指令常用标签及语法

  • 第二周

猜你喜欢

转载自blog.csdn.net/qq_28202661/article/details/82586131