发表于: 2020-05-29 23:26:18
1 1849
今天完成的事情:
1. 完成了接口文档的设计:
接口文档链接:https://github.com/OwlWinter/Image-Studio/blob/master/Image-Studio-api.md
遇到的问题:
1. 误删本地git文件
gitbash:
git status //列举最近文件的变化
git reset HEAD [file name]
git checkout [file name]
收获:
1. @Controller 与 @RestController
@RestController = @ResponseBody + @Controller
简单来说使用 @RestController 会返回 json,相较于 @Controller 少写一个注解。
共同点:都用来表示一个类可不可以接收 http 请求。
不同点:
@RestController 没法返回一个页面,只能返回 json、xml 等数据。
@Controller 可以返回一个页面,也可以加上 @ResponseBody 来返回 json、xml 等数据。
2. DispatcherServlet
DispatcherServlet 位于 spring-webmvc 包。
通过 web.xml 中的 url-pattern 将所有的请求都映射到 DispatcherServlet。映射由 @ResquestMapping 注解来完成。
而 DispatcherServlet 负责把请求都委派给 springmvc 中的其他组件处理,比如扫描被 @Controller @RestController 注解的 controller 类、HandlerMapper(处理器映射,没用过)、View Resolvers(视图解析器,好像也没用过)等等。
关于映射:
DispatcherServlet 扫描完所有的 @Controller 注解之后,通过 @RequestMapping 注解来匹配负责处理当前请求的方法。
@RequestMapping 有多种匹配方式:
@RequestMapping("path") //匹配路径
@RequestMapping(value = "path", method = RequestMethod.POST)
@RequestMapping(value = "path", method = RequestMethod.POST, params = "paraml")
@RequestMapping(value = "path", header = "content-type=text/*")
还可以在类级别声明一个 @RequestMapping 注解来过滤传入的请求。
在处理完请求之后。controller 会把逻辑视图的名字与 model 返回给 DispatcherServlet,然后使用 View Resolvers(视图解析器)来定位到真正的 view 渲染结果,比如 jsp。
总结:
a,DispatcherServlet 时 SpringMVC 应用中的主要控制器,所有的请求都要经过它的处理,然后由被 @Controller 注解的类来处理。
b,DispatcherServlet 是前端控制器的模式的实现,前端控制器就是个用来处理网站所有请求的控制器。
c,其声明与配置都在 web.xml 文件中完成。
d,DispatcherServlet 继承自 httpServlet 基类。Servlet 引擎(tomcat、jetty···)会创建它的实例,然后调用它的不同方法(初始化、各种服务···)。
e,DispatcherServlet 与 Spring IoC 完全集成,可以使用 Spring 框架的特性实现依赖注入等特性。
f,DispatcherServlet 在 web.xml 配置中的 load-on-startup = 1 参数意味着在 servelt 在启动的时候就会被创建,在这个期间会完成大量的操作(扫描各种注解···)。
g,默认情况下在 DispatcherServlet 初始化期间,SpringMVC 框架会在 WEB-INF 文件夹下寻找名为 [servlet-name]-servlet.xml 的配置文件,并且创建同名的 bean。如果需要更改配置文件位置则需要使用 contextConfigLocation 来指定。
明天的计划:
1. 完成假数据接口
评论