如何利用Spring MVC实现RESTful风格
springmvc实现restful风格
restful
中文释义为”表现层状态转换“,它不是一种标准,而是一种设计风格。
它的主要作用是充分并正确利用http协议的特性,规范资源获取的uri路径。
通俗的讲,restful风格的设计允许将参数通过url拼接传到服务端,目的是让url看起来更简洁实用。
并且对于不同的操作,要指定不同的http方法(post/get/put/delete)。可以这么说,只要是具有上述相关条件和原则的应用程序或设计就可以被称为restful风格的应用。
一个满足restful的程序或设计应满足以下条件和约束:
第一:对请求的url进行规范,在url中不会出现动词,而是使用http协议的动词
第二:充分利用http方法,http方法名包括:get、post、put、patch、delete
使用spring mvc实现restful风格
spring mvc可以使用@requestmapping的路径设置,结合@pathvariable的参数指定,来实现restful风格的请求。
样例要实现,通过拼接水果商品的id来实现一个restful风格的请求,并向后台发送该请求,以此来获取json格式的水果数据
在该方法中,在@requestmapping注解的请求路径中添加了一个动态数据"{id}",它的作用是解析前台的请求路径,将动态数据所在的位置解析为名为id的请求参数。
@pathvariable注解,在其中指定请求参数的key名称,并映射在后面定义的形参上,这里定义fruitid形参来接收名为id的请求参数,最后使用@responsebody注解加上之前配置的类型转换器,返回客户端json类型的水果详细信息,总的来说,利用sprngmvc实现restful风格主要就是在于请求路径和请求参数的映射,以及requestmapping的指定,更改web.xml中配置文件的内容,将*.do改成"/",这样编写的restful风格的请求才能被前端控制器拦截到并解析。
然后重启工程,输入网址:http://localhost:8080/工程名/queryfruit/1
上面的代码为查询类型的请求代码,而新增、修改以及删除的请求与此类似,区别就是需要指定不同的requestmethod(post/put/delete),样例代码如下:
前端在访问restful风格的增、删、该请求时,需要配置http请求的方法(method参数)。如果是在jsp页面上使用form表单的提交方式来请求restful风格的服务,需要根据请求的类型,在form表单标签中指定http请求的相关method参数。
静态资源访问问题
前面在web.xml中配置了符合restful风格的dispatcherservlet前端控制器过滤器。但是这种过滤方式会造成静态资源无法访问的问题,例如:在webcontent下的image文件夹下放置一张图片logo.jpg。
由于图片放置在web-inf文件外(由于javaweb的保护机制,web-inf文件夹下的文件不可直接访问),所以原则上是可以通过直接访问静态资源的方式获取该图片的,但是输入http://localhost:8080/工程名/image/logo.jpg的请求后,不能获取到图片资源。
原因:
在web.xml中配置了前端控制器的请求过滤机制,为了接收restful风格的请求,将过滤的后缀去除了,变成过滤所有后缀的请求路径,此时静态资源会被当做一个业务请求被前端控制器处理,前端控制器没有发现能够处理该请求的controller控制器方法,所以对外抛出了404错误。
解决方式一:
在类加载配置文件springmvc中使用"mvc:resources"配置静态资源的解析路径,将需要加载的静态资源的uri路径配置在标签中,然后配置该uri映射的真是资源路径。
当在springmvc.xml中配置了静态资源文件的解析路径后,前端控制器就会根据请求url中的具体子路径来映射出静态资源的真是路径,然后为前端反馈真实的静态资源信息。
解决方式二:
在springmvc.xml中使用"<mvc:default-servlet-handler/>"配置默认的servlet处理器,该配置将在springmvc上下文中定义一个defaultservlethttprequesthandler,他会对进入dispatcherservlet的请求进行筛选,若发现没有经过映射的请求,就将该请求交由web应用服务器默认的servlet处理,如果不是静态资源的请求,才由dispatcherservlet前端控制器继续处理,此时就可以将请求中的静态资源和其他业务请求分开处理,从而正常地返回静态资源信息。
spring mvc的restful学习
什么restful
restful也称为rest(representational state transfer),可以将它理解为一种软件架构风格或设计风格
restful风格就是把请求参数编程请求路径的一种风格。
例如,传统的url请求如下:
而采用restful风格后,url请求变为:
restful风格在http请求中使用put,delete,post和get方式分别对应添加,删除,修改和查询的操作。不过国内开发目前只使用post和get方式实现增删改查操作。
使用简单的加法计算
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
上一篇: winform开发使用通用多线程基类分享(以队列形式)
下一篇: 浅谈C#中的常量、类型推断和作用域
推荐阅读
-
如何利用Spring MVC实现RESTful风格
-
如何利用Spring MVC实现RESTful风格
-
Spring MVC风格的restful接口开发
-
Spring MVC风格的restful接口开发
-
利用Spring MVC+Mybatis实现Mysql分页数据查询的过程详解
-
详解Spring框架之基于Restful风格实现的SpringMVC
-
Spring Boot利用@Async如何实现异步调用:自定义线程池
-
Spring Boot利用@Async如何实现异步调用:自定义线程池
-
Spring mvc实现Restful返回json格式数据实例详解
-
Spring mvc实现Restful返回xml格式数据实例详解