发表于: 2017-08-24 19:12:16

3 1048


今天完成的事情:

Json

Json是JavaScript对象表示法,是存储和交换文本信息的语法,类似XML。

但是Json比xml更小,更快,更容易解析

{
"employees": [
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName":"Carter" }
]
}

这里面,我们用花括号来保存对象,方括号来保存数组,并且数据之间用逗号来分割,数据可以存在键值对中。

键值对是这样的

"firstName":"John"

java中我们一般这样写

firstName="John"

然后Json的值可以是数字(整数或浮点数)、字符串(双引号中的)、逻辑值(true or false)、数组(方括号中)、对象(花括号中)、null

我们在SpringMVC中要返回Json只需要用@ResponseBody注解就可以了,这里需要注意

在servlet.xml中使用<mvc:annotation-driven/>的话,会自动注入RequestMappingHandlerAdapter,不用手动去配置了。如果要配置的话可以

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"
     p:ignoreDefaultModelOnRedirect="true" >
<property name="messageConverters">
   <list>
       <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
   </list>
</property>
</bean>  

这个项目写json一直莫名其妙出问题,我就重开了一个项目

照着一个例子简单写了一下

就一个bookVO实体类,一个方法,controller

@RequestMapping(value = "/books", method = RequestMethod.GET)
public @ResponseBody List<BookVO> listBook() {
return getBookList().getBooks();
}

测一下

能返回json。感觉我之前写的还是有问题,或者包可能冲突了,总出不来这个

不过确实使用起来挺容易的。

Servlet:

即Server Applet 服务器端小程序

狭义:javax.servlet.Servlet接口及其子接口

广义:指实现了Servlet接口的实现类

Servlet的实例对象由Servlet容器负责创建;Servlet的方法由容器在特定情况下调用;Servlet容器会在Web应用卸载时销毁Servlet对象的实例。

传统的使用接口的方式:

1、创建一个类实现接口2、new实现类对象3、调用类的方法

使用Servlet接口的方式:

1、创建一个类实现Servlet接口

2、在web.xml文件里注册这个实现类

3、Servlet容器(jetty之类的)会创建实现类对象

ServletConfig接口:

封装了Servlet配置信息。ServletConfig对象的主要功能:1、获取Servlet名称,2、获取Servlet初始化参数,3、获取ServletContext对象

HttpServletRequest接口:代表HTTP请求,对象由Servlet容器创建

功能:获取请求参数、获取请求路径即URL地址相关信息、在请求域中保存数据、转发请求

HttpServletResponse接口:代表HTTP响应,对象由Servlet容器创建
功能:向浏览器输出数据、重定向请求

转发:在服务器内部完成,用户感知不到;浏览器地址栏不变;整个过程浏览器只发出了一个请求;可以共享“请求域”数据;目标资源可以在WEB-INF目录下
重定向:服务器以302状态码通知浏览器访问新地址;浏览器地址栏改变;整个过程浏览器发出两次请求;不能共享“请求域”数据;目标资源不可以在WEB-INF目录下

关于深度思考:

RESTful

REST的名称"表现层状态转化"中,省略了主语。"表现层"其实指的是"资源"(Resources)的"表现层"。

  所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。所谓"上网",就是与互联网上一系列的"资源"互动,调用它的URI。"资源"是一种信息实体,它可以有多种外在表现形式。我们把"资源"具体呈现出来的形式,叫做它的"表现层"(Representation)。

访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,势必涉及到数据和状态的变化。
  互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。
  客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。

maven的module

所有用Maven管理的真实的项目都应该是分模块的,每个模块都对应着一个pom.xml。它们之间通过继承和聚合(也称作多模块,multi-module)相互关联,使用多模块的Maven配置,可以帮助项目划分模块,鼓励重用,防止POM变得过于庞大,方便某个模块的构建,而不用每次都构建整个项目,并且使得针对某个模块的特殊控制更为方便。

Http协议和content-type类型,状态码之前贴过了

HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,响应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。

content-type的可用值有很多,具体参考下面这篇文章

http://blog.csdn.net/blueheart20/article/details/45174399

SpringMVC和Struts的区别是什么,为什么更倾向于使用SpringMVC?

Struts2是类级别的拦截,一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个request对应一个上下文。而方法同时又跟一个url对应,所以说,从架构本身上SpringMVC更容易实现RESTful。而且SpringMVC的方法之间基本上独立的,请求数据通过参数获取,处理结果通过ModelMap交回给框架,方法之间不共享变量。而Struts2就比较乱了,Action变量是共享的,增加阅读时候的难度。

明天计划的事情:

先准备一下小课堂,任务二收尾一下应该可以提交了,梳理一下知识

遇到的问题:

暂无

收获:

小知识点,稍微捋了一下SpringMVC的实现过程

禅道链接:http://task.ptteng.com/zentao/project-task-286.html


返回列表 返回列表
评论

    分享到