Spring MVC RESTful开发实例

time:2019-05-09    来源:english诗歌    点击:

一、what是RESTful: REST(english:Representational State Transfer,abbreviationREST)(表现层状态转化)描述了一个架构样式的network系统,比如 web 应用程序。它首次出Now 2000 年 Roy Fielding 的博柯畚闹校 HTTP 规范的main编写者之一。stay目前主流的三种Webservice交互programme中,REST相比于SOAP(Simple Object Access protocol,简单对象访问agreement)以及XML-RPCMore简单明了,无论是对URL的处理still对Payload的编码,REST都倾向于用More简单轻量的方法设计和实现。值得注意的是REST并没有一个to make clear的标准,而更像是一种设计的style。   1、资源(Resources) REST的名称"表现层状态转化"中,省粤酥饔铩"表现层"actually指的是"资源"(Resources)的"表现层"。 所谓"资源",就是network上的一个实体,或者说是network上的一个specific 信息。它sure是一段文本、一张picture、一首歌曲、一种service,总之就是一个specific 的实stay。你sure用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取this个资源,访问它的URI就sure,thereforeURI就成了每一个资源的地址或独一无二的识别符。   2、表现层(Representation) "资源"是一种信息实体,它sure有多种外stay表现问健e把"资源"specific 呈现出来男问剑凶鏊"表现层"(Representation)。 比如,文本sure用txt格奖硐郑瞫ure用HTML格式、XML格式、JSON格奖硐郑琫ven to the extent thatsure采用二进制格式;picturesure用JPG格奖硐郑瞫ure用PNG格奖硐帧 URI只代表资源的实体,不代表它男问健Q细地说,有些网址最后的".html"后缀名是不必要的,becausethis个后缀名express格式,属于"表现层"冻耄鳸RI应该只代表"资源"的位置。它的specific 表现问剑应该stayHTTP请求的头信息中用Accept和Content-Type字段指定,this两个字段才是对"表现层"的描述。   3、状态转化(State Transfer) 客户端用到的手段,只能是HTTPagreement。specific 此担就是HTTPagreement里面,四个express操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也sure用于to update资源),PUT用来to update资源,DELETE用来删除资源。 4、综上RESTful实际的含义: 相当于是一种开发设计style; 用URI代表资源; 客户端和service器之间,传递this种资源的某种表现层; 客户送ü母鯤TTP动词(GET、POST、PUT、DELETE),对service器端资源进行操作,实现"表现层状态转化"。   5、实例   资源为userID为100 URI:http://www.example.com/user/100   GET :http://www.example.com/user/100 expressservice器端返回userID为100的user信息   POST:http://www.example.com/user/100 新增userID为100的user信息   PUT:http://www.example.com/user/100 to updateuser为100的user信息   DELETE:http://www.example.com/user/100 删除userID为100的user信息   二、Spring MVC框架中how 使用RESTful stay实际的开发中使用RESTfulmain实现了RESTful url的规范,表现层的资源表郑╤ttp的ContentType)   test实例:查询user信息,返回json数据。   1、controller开发: 进行url映射使用RESTfulstyle的url,takeuser的id传入controller   输出json使用@ResponseBodytakejava对象输出json   //RESTful查询user信息 @RequestMapping("usersView/{usercode}") public @ResponseBody Userinfo usersView(@PathVariable("usercode") String usercode) throws Exception{ Userinfo userinfo = userinfoService.FindUserinfoByUsercode(usercode); return userinfo; } @ResponseBody Userinfo定义返回数据类型,默认@ResponseBody会返回json数据,需要jackson包的support,所以maven中要加入jackson @PathVariable("usercode") 定义了从url中获取问   2、使用新的前端控制器来解析RESTful类型的url 修改web.xml   <!-- Springmvc-RESTful前端控制器 --> <servlet> <servlet-name>springmvc-RESTful</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:/spring/springmvc.xml</param-value> </init-param> </servlet>   <servlet-mapping> <servlet-name>springmvc-RESTful</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>   <!-- Springmvc前端控制器 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:/spring/springmvc.xml</param-value> </init-param> </servlet>   <servlet-mapping> <servlet-name>springmvc</servlet-name> <!-- 第一种 *.action 第二种 / All的访问让DispatcherServlet解析 第三中 /* 不对 --> <url-pattern>*.action</url-pattern> </servlet-mapping> this里要注意的是sure同时使用多个前端控制器,springmvc和springmvc-RESTfulsure共存,howeverRESTful的前端控制器take影响静态page面的解析,需要特别处理,需要stayspringmvc.xml中添加静态资源的解析方法   3、stayspringmvc中加入json解析器和静态资源解析 修改springmvc.xml   <!-- 默认加载了很多问蠖ǚ椒ǎ鏹son转换解析器就默认加载了,实际开发会用到,上边的就不用了--> <mvc:annotation-driven/>     <!--添加对静态资源的解析--> <mvc:resources mapping="/js/**" location="/js/"/> <mvc:resources mapping="/img/**" location="/img/"/> <mvc:resources mapping="/html/**" location="/html/"/> annotation-driven 会加载jackson,用于takejava对象装换称json输出   4、stay项目中引入jackson包 修改pom.xml,添加jackson包   <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.9.3</version> </dependency> 5、test   访问RESTfulstyle的url,controller从url中获取usercode问akejava对象转换成json输出 Image.png 6、错误test Westay浏览器中输入一个错误的RESTful url,查看系统错误提示信息,surefind 名为springmvc-RESTful的前端控制器的错误提示信息,反向证明了RESTful的工作正常。 Image2.png

newest文章
推荐文章
推荐谌