发表于: 2018-04-03 20:10:42

1 812


今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin) 

今天跟着深度思考 学习

1.什么是restful?rest的请求方法有哪些,有什么区别?

restful是一种架构风格

REST -- REpresentational State Transfer 直接翻译:表现层状态转移。这是很难听懂的解释

作用呢。

URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。

REST是面向资源的编程,而资源是通过URL暴露的

REST很好的利用了一些HTTP本身的一些特征,如HTTP动词,HTTP状态码,HTTP报头

HTTP动词

GET     获取一个资源 
POST    添加一个资源 
PUT     修改一个资源 
DELETE  删除一个资源 

HTTP状态码

200 OK 
400 Bad Request 
500 Internal Server Error

HTTP报头

Authorization 认证报头 
Cache-Control 缓存报头 
Cnotent-Type  消息体类型报头 
......

SpringMVC实现restful服务:

SpringMVC原生态的支持了REST风格的架构设计

所涉及到的注解:

--@RequestMapping

---@PathVariable

---@ResponseBody


@RequestMapping

在对 Spring MVC 进行的配置的时候, 你需要指定请求与处理方法之间的映射关系。

要配置 Web 请求的映射,就需要你用上 @RequestMapping 注解。 
@RequestMapping 注解可以在控制器类的级别和/或其中的方法的级别上使用。 
在类的级别上的注解会将一个特定请求或者请求模式映射到一个控制器之上。

之后你还可以另外添加方法级别的注解来进一步指定到处理方法的映射关系。

Spring MVC 的 @RequestMapping 注解能够处理 HTTP 请求的方法, 比如 GET, PUT, POST, DELETE 以及 PATCH。 
所有的请求默认都会是 HTTP GET 类型的。 
为了能降一个请求映射到一个特定的 HTTP 方法,你需要在 @RequestMapping 中使用 method 来声明 HTTP 请求所使用的方法类型


@PathVariable 

@PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中。


@ResponseBody

@ResponseBody是作用在方法上的,@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】,在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。 比如异步获取 json 数据,加上 @ResponseBody 后,会直接返回 json 数据。@RequestBody 将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。


上图表示的是spring mvc的执行流程 

1。向服务器发送Http request请求,请求被前端控制器(DispatcherServlet捕获。

2。前端控制器根据xml文件中的配置(或者注解)对请求的URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用处理器映射器(HandlerMapping获得处理该请求的Handler以及Handler对应的拦截器,最后以 HandlerExecutionChain 对象的形式返回。

3。前端控制器根据获得的Handler,选择一个合适的处理器适配器(HandlerAdapter去执行该Handler。

4。处理器适配器提取request中的模型数据,填充Handler入参,执行处理器(Handler(也称之为Controller).

5。Handler(Controller)执行完成后,向处理器适配器返回一个ModelAndView对象,处理器适配器再向前端控制器返回该ModelAndView对象(ModelAndView只是一个逻辑视图)。

6。根据返回的ModelAndView,前端控制器请求一个适合的视图解析器(ViewResolver(必须是已经注册到Spring容器中的ViewResolver)去进行视图解析,然后视图解析器向前端控制器返回一个真正的视图View(jsp)。

7。前端控制器通过Model解析出ModelAndView中的参数进行解析,最终展现出完整的View并通过Http response返回给客户端。


然后有这个图也可以看出

  1. 前端控制器DispatcherServlet(不需要程序员开发)。 
    作用:接收请求,响应结果,相当于转发器,中央处理器。有了DispatcherServlet减少了其它组件之间的耦合度。
  2. 处理器映射器HandlerMapping(不需要程序员开发)。 
    作用:根据请求的url查找Handler。
  3. 处理器适配器HandlerAdapter(不需要程序员开发)。 
    作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler。
  4. 处理器Handler(需要程序员开发)。 
    注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler
  5. 视图解析器ViewResolver(不需要程序员开发)。 
    作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)
  6. 视图View(需要程序员开发jsp)。 
    View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf…) 
    【注】不需要程序员开发的,需要程序员自己做一下配置即可。


然后根据流程建了层 多了一个webapp 和controller层 


然后根据how 2j 尝试了下springmvc 教程

报404  明天继续研究



明天计划的事情:(一定要写非常细致的内容) 

spring mvc +理解概念
遇到的问题:(遇到什么困难,怎么解决的) 
收获:(通过今天的学习,学到了什么知识)

有了一些概念


返回列表 返回列表
评论

    分享到