@Transactional//事务
事务最简单最直接的目的就是保证数据的有效性,数据的一致性。
@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);
GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。
通过@RequestBody可以解析Body中json格式的数据。
① form-data、x-www-form-urlencoded:不可以用@RequestBody;可以用@RequestParam。
② application/json:json字符串部分可以用@RequestBody;url中的?后面参数可以用@RequestParam。
@ResponseBody:将返回的值直接写到Http的响应体中,不需要替换为Spring的Model或者解析为视图,相当于response.getWriter.write();当使用了Jackson框架和@ResponseBody注解之后,Jackson框架自动将对象解析成Json串返还数据给前端页面。
json/@RequestBody/@ResponseBody
equals与equalsIgnoreCase
equals方法在比较的过程中严格区分大小写,而equalsIgnoreCase方法在比较的过程中忽略大小写。
不建议使用printStackTrace()
**printStackTrace()**方法打印异常在控制台,e.printStackTrace() 语句要产生的字符串记录的是堆栈信息,特别的多,控制台的内存被占满了,所以服务会被卡死。建议使用logger输出到日志文件里面 logger.error("", e);
request.getParameter(“name”)返回String类型,返回request范围内存在的对象
request.getAttribute(“name”)返回object类型,获取http提交过来的数据
@RestController注解 相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面
@ModelAttribute
@ModelAttribute
public void model(Model model) {
model.addAttribute("message", "注解成功");
}
@RequestMapping("/value")
public String handleRequest() {
return "test1";
}
这样写就会在访问控制器方法 handleRequest() 时,会首先调用 model() 方法将 message 添加进页面参数中去,在视图中可以直接调用,但是这样写会导致该控制器所有的方法都会首先调用 model() 方法,但同样的也很方便,因为可以加入各种各样的数据。
@PathVariable 注解
接收请求路径中占位符的值