发表于: 2017-06-28 12:27:32
1 998
今天完成:
学习用idea把任务二上传到github.
再看了一次师兄此前给的慕课网springmvc工作流程链接内容,思考springmvc工作流程.
再次思考几个http方法使用。
spring对rest的封装有哪些?
PUT和POST都可用作更新资源,那么它们的区别在哪里呢?在哪种场景下用PUT?哪种用POST呢?
首先,PUT方法是幂等的,POST不是。查了资料发现别人的举例中,把我们传统认为的创建也理解为更新才造成理解困难的。
比如这个举例,
举个例子,在我们的支付系统中,一个api的功能是创建收款金额二维码,它和金额相关,每个用户可以有多个二维码,如果连续调用则会创建新的二维码,这个时候就用POST。
在我日报中有提到,PUT创建是作用在一个具体资源上,客户端确定URI时采用PUT.
比如,更新一篇文章,此文章具有具体的URI,提交相同的内容,结果都一致:/blog/{document_id}/update
POST创建是作用于一个集合资源上,服务端确定url时候就用POST.
例,一个接口的功能是将当前余额减一个值,每次提交指定该值为100,接口为/amount/deduction,调用一次,你的余额-100,调用两次,余额-200,此时用POST.
思考了下web.xml配置:
web.xml:在webapp/WEB-INF下。配置了DispatcherServlet 和 servletMapping,当用户在浏览器栏输入URL时,servletMapping会根据URL映射到某个servlet(这里就是DispatcherServlet),DispatcherServlet来处理请求。
刚开始我以为配置了DispatcherServlet,DispatcherServlet就可以完成处理请求的事。不明白servletMapping的作用。servletMapping是起个连接的作用吧。DispatcherServlet具体怎么处理,我暂不明了,在理解这里时候,实在理解不了就先记住,要加这个配置。
然后web.xml里还要加上加载spring配置文件的位置。
写到这里我去查了下web启动加载web.xml的过程。
(1) 首先项目启动会加载web.xml,web.xml读取context-parm 和listener(此案例没有配置,应该有默认值)。
(2) 容器创建ServletContext上下文。容器把从context-parm中读到的存储在ServletContext中。
(3) listener创建监听。(没用到,了解下),容器读取根据制定类路径实例化过滤器(过滤器也没用到,作了解咯)。项目初始化完成。
(4) 在发起第一次请求时,servlet才会被加载实例化。
我这里没有context-parm节点,配置的是application范围内的参数,这个节点用于配置应用于整个web项目的上下文(也就是配置文件么)。不配置有默认加载位置" /WEB-INF/applicationContext. xml" 。
我的是<init-param>,配置servlet范围内的参数,只能在servlet的init()方法中取得。
springmvc里工作流程:
MVC本质:业务数据抽取和业务数据的实现相分离。
一种架构模式,程序分层,分工合作,各部分相互独立又协同工作。
一种思考方式,需要展示什么信息,如何布局,调用哪些业务逻辑。
概念:
前端控制器:类似分诊台,接待病人,将病人分为不同的科室。
负责分发请求,将请求分发给不同的控制器。也将处理好的请求分发给视图模板。
view:UI.视图层,数据的呈现。
Model:业务数据的表示,通常是多个业务实体的组合。
Controller:调用业务逻辑产生合适的数据(model),传递数据给视图层(view)用于呈现。
DispatherServlet(前端控制器):
Controller:自己理解
Handler是diapatcher调用controller的一种中间过渡对象。
HandlerAdapter:是DispatherServlet内部使用的类。handler是controller的一种表现形式,在springMVC中没有controller接口,有个annotation标签,为了识别controller。
DispatherServlet通过handler来识别controller。
HandlerAdapter:适配器模式,将不同类型的handler适配成DispatherServlet可以使用的handler,让DispatherServlet可以调用controller。
HandlerInterceptor:拦截器,是一个接口。
HandlerMapping:是前端控制器和controller之间映射的一种类。
HandlerMapping工作完之后,会给DispatherServlet一个HandlerAdapter。这个HandlerAdapter中会包括某个具体的controller实例。这个controller需要被包裹的handlerInterceptor。
HandlerExecutionChain:
ModelAndView:可以认为是Model/Map的具体表现。DispatherServlet会将controller中Model或者Map统统转化为ModelAndView。
ViewResolver:视图解析器。根据配置帮助DispatcherServlet找view对象(例如jsp)。
View:呈现页面。
spring对rest的封装有哪些?SpringMVC实现rest风格接口要考虑:
>>spring本身怎么从path中获取变量。
>>系统如何区分一个请求应该被spring拦截还是直接访问静态资源。
问题一,通过@PathVariable
问题二,我还没遇到,看讲解无法深入体会,只做了了解就不多说了。
一个好链接:http://uule.iteye.com/blog/2100546
发现@PathVariable和@RequestParam使用位置相同,那么它们的区别是?
都是获取参数的。
@PathVariable是在请求路径上有变量值时,通过此注解来获取。
@RequestParam用来获得静态的URL请求入参
@PathVariable 使用:
当使用@RequestMapping URI template 样式映射时, 即 someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。
所遇问题:
总觉得哪里还不够,看是明白了,做的不多
反思:此处要用小号字 捂脸 我被自己的任务一坑得不行 我想起师兄把我的任务一代码下下来看过 师兄你有对着它心中奔腾一种可爱的小动物吗
今天要做:
看下任务三
我要开始写文献综述了 开完题来线下找师兄咯
评论