第五章 springMVC视图(forward,redirect,视图控制器,RESTFul),HttpMessageConverter,springMVC处理json
1.springMVC视图:
(1)springMVC的视图是view接口,视图的作用渲染数据,将模型model中的数据展示给用户。
(2)springMVC视图的种类很多,默认有转发视图internalResourceView和重定向视图RedirectView。
(3)转发视图:当控制器方法中所设置的视图名称以“forward:”为前缀时,创建internalResourceView视图,此时的视图名称不会被springMVC配置文件中所配置的视图解析器解析,而是会将前缀“forward:”去掉,剩余部分作为最终路径通过转发的方式实现跳转。(转发是一次请求,指的是浏览器发送请求,第二次其实是在服务器内部)
@RequestMapping("/test_view")
public String testView(){
return "test_view";
}
<!--test_view.html-->
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a th:href="@{/testThymeleafView}">测试testThymeleafView</a><br>
<a th:href="@{/testForward}">测试internalResourceView</a><br>
</body>
</html>
@Controller
public class ViewController {
@RequestMapping("/testThymeleafView")
public String testThymeleafView(){
return "success";
}
@RequestMapping("/testForward")
public String testForward(){
return "forward:/testThymeleafView";
}
}
(4)重定向视图:当控制器方法中所设置的视图名称以“redirect:”为前缀时,创建RedirectView视图,此时的视图不会被springMVC配置文件中所配置的视图解析器解析,而是会将“redirect:”去掉,剩余部分作为最终路径通过重定向的方式实现跳转。(重定向是两次请求,第一次是访问servlet,第二次是访问重定向的地址)
@RequestMapping("/testRedirect")
public String testRedirect(){
return "redirect:/testThymeleafView";
}
(5)视图控制器:
<mvc:view-controller path="/" view-name="index"></mvc:view-controller>
<!--开启MVC注解驱动-->
<mvc:annotation-driven/>
2.RESTFul:
(1)REST:表现层(表述层)资源状态转移。
(2)①资源:资源是一种看待服务器的方式,即,将服务器看作是由很多离散的资源组成。每个资源是服务器上一个可命名的抽象概念。因为资源是一个抽象的概念,所以它不仅能代表服务器文件系统中的一个文件、数据库中的一张表等等具体的东西,可以将资源设计的要多抽象有多抽象,只要想象力允许而且客户端应用开发者能够理解。与面向对象设计类似,资源是以名词为核心来组织的,首先关注的是名词。一个资源可以由一个或多个URL来标识。URL既是资源的名称,也是资源在web上的地址。对某个资源感兴趣的客户端应用,可以通过资源的URL与其进行交互。
②资源的表述:资源的表述是一段对于某个特定时刻的状态的描述。可以在客户端-服务器之间转移(交换)。资源的表述可以有多种方式,例如HTML/XML/JSON纯文本/图片/音频等等。资源的表述个数可以通过协商机制来确定。请求响应的表述通常使用不同的格式。
③状态转移:状态转移指的是在客户端和服务器之间转移代表资源状态的表述。通过转移和操作资源的表述,来间接实现操作资源的目的。