发表于: 2018-05-20 22:57:04

1 1252


今天完成的事情:      


1.1 rest
REST,即Representational State Transfer的缩写,即"表现层状态转化"。
如果一个架构符合REST原则,就称它为RESTful架构。
1.2 资源(Resources)
REST的名称"表现层状态转化"中,省略了主语。"表现层"其实指的是"资源"(Resources)的"表现层"。
所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。所谓"上网",就是与互联网上一系列的"资源"互动,调用它的URI。
1.3 表现层(Representation)
"资源"是一种信息实体,它可以有多种外在表现形式。我们把"资源"具体呈现出来的形式,叫做它的"表现层"(Representation)。
比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式;图片可以用JPG格式表现,也可以用PNG格式表现。
URI只代表资源的实体,不代表它的形式。严格地说,有些网址最后的".html"后缀名是不必要的,因为这个后缀名表示格式,属于"表现层"范畴,而URI应该只代表"资源"的位置。它的具体表现形式,应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现层"的描述。
1.4 状态转化(State Transfer)
访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,势必涉及到数据和状态的变化。
互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。
客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。
1.5 总结一下什么是RESTful架构:
  1.   (1)每一个URI代表一种资源;
  1.   (2)客户端和服务器之间,传递这种资源的某种表现层;
  2.   (3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。
  3.       (4)通过Representation(客户端)来处理资源(服务器端)。也就是说,客户端不能直接操作服务器端的资源,只能通过对相应的Representation的操作,并发送相应的请求,最后由服务器端来处理资源并返回结果。
  4.       (5)客户端和服务器端传送的任何一个Message(消息),都应该是自描述的。也就是说处理这个Message所需要的上下文环境都应该包含在这个Message当中。
REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表征。获得这些表征致使这些应用程序转变了其状态。随着不断获取资源的表征,客户端应用不断地在转变着其状态,所谓表征状态转移(Representational State Transfer)。
1.6 REST API的优点
1)可以利用缓存Cache来提高响应速度
2)通讯本身的无状态性可以让不同的服务器处理一系列请求中的不同请求,提高服务器的扩展性
3)浏览器即可做客户端,简化软件开发的需求
4)相对于其他叠加的HTTP协议之上的机制,REST的软件依赖性更小
5)不需要额外的资源发现机制
6)在软件技术演进中的长期的兼容性更好
1.7 REST API的设计
对于开发人员来说,关心的是如何使用REST架构,这里我们来简单谈谈这个问题。REST不仅仅是一种崭新的架构,它带来的更是一种全新的Web开发过程中的思维方式:通过URL来设计系统结构。在REST中,所有的URL都对应着资源,只要URL的设计是良好的,那么其呈现的系统结构也就是良好的。这点和TDD(Test Driven Development)很相似,他是通过测试用例来设计系统的接口,每一个测试用例都表示一系列用户的需求。开发人员不需要一开始就编写功能,而只需要把需要实现的功能通过测试用例的形式表现出来即可。这个和REST中通过URL设计系统结构的方式类似,我们只需要根据需求设计出合理地URL,这些URL不一定非要链接到指定的页面或者完成一些行为,只要它们能够直观的表现出系统的用户接口。根据这些URL,我们就可以方便的设计系统结构。

从REST架构的概念上来看,所有能够被抽象成资源的东西都可以被指定为一个URL,而开发人员所需要做的工作就是如何能把用户需求抽象为资源,以及如何抽象的精确。因为对资源抽象的越为精确,对REST的应用来说就越好。这个和传统MVC开发模式中基于Action的思想差别就非常大。设计良好的URL,不但对于开发人员来说可以更明确的认识系统结构,对使用者来说也方便记忆和识别资源,因为URL足够简单和有意义。按照以往的设计模式,很多URL后面都是一堆参数,对于使用者来说也是很不方便的


2.1 springmvc:配置web.xml 配置springmvc.xml 然后写controller——这是任务二的核心。
web.xml配置主要配置下面几点:

上面讲的比较详细,如果只要运行起来不需要配置那么多


a.配置springmybatis(spring整合mybatis的配置文件)的配置文件路径
<context-param>
 <param-name>contextConfigLocation</param-name>
 <param-value>classpath:springmybatis.xml</param-value>

</context-param>


b.<filter>过滤器 过滤method动作 字符编码 URL等等(还有拦截器<mvc:interceptors>(在springmvc.xml中配置),监听器<listener>配置log4j日志监听器等,这些是一大块,根据需求使用,都要学习。)
过滤POST请求:
<!--配置HiddenHttpMethodFilter,把POST请求转换为Delete或Put请求-->
<filter>
 <filter-name>HiddenHttpMethodFilter</filter-name>
 <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
 <init-param>
   <param-name>methodParam</param-name>
   <!-- 如果是_method 不设置也可以,因为默认就是_method  -->
   <param-value>_method</param-value>
 </init-param>
</filter>
<filter-mapping>
 <filter-name>HiddenHttpMethodFilter</filter-name>
 <url-pattern>/*</url-pattern>
</filter-mapping>

c.<servlet>配置SpringMVC的 DispatchServlet,拦截分发,中央调度处理器,属于核心配置。这里配置拦截请求,拦截url。配置springmvc.xml文件的路径 (springmvc.xml里面配置拦截器Controller,配置视图解析器,返回物理视图的地址。简单说就是配置jsp等web视图文件路径等等)


使用<servlet-mapping>配置匹配请求拦截、默认静态文件等等:
<servlet>
 <servlet-name>SpringMVC</servlet-name>
 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 <init-param>
   <param-name>contectConfinLocation</param-name>
   <param-value>/WEB-INF/SpringMVC-servlet.xml</param-value>
 </init-param>
</servlet>
<servlet-mapping>
 <servlet-name>SpringMVC</servlet-name>
 <url-pattern>/</url-pattern>
</servlet-mapping>
/SpringMVC-servlet.xml主要配置视图前缀和后缀,还有控制器:
<context:component-scan base-package="com.restful.controller"/>
<!-- 配置视图解析器: 如何把 handler 方法返回值解析为实际的物理视图 说白了就是根据传递的信息指定到具体地址 -->
<bean "org.springframework.web.servlet.view.InternalResourceViewResolver">
   <property name="suffix" value=".jsp"/>
   <property name="prefix" value="/WEB-INF/jsp/"/>
</bean>
d.<welcome-file-list>欢迎页 <error-page>错误跳转页面等等
<welcome-file-list>
 <welcome-file>index.jsp</welcome-file>

</welcome-file-list>


明天计划的事情:

      再找找web服务器的方法,然后开始完成任务二内容。
遇到的问题: 

      我的代码不能web服务器跑得不到验证,这个无解了。
收获:

      任务的二的整体流程以及知识点。


返回列表 返回列表
评论

    分享到