欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

如何利用Spring MVC实现RESTful风格

程序员文章站 2024-02-19 21:50:52
springmvc实现restful风格restful中文释义为”表现层状态转换“,它不是一种标准,而是一种设计风格。它的主要作用是充分并正确利用http协议的特性,规范资源获...

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

如何利用Spring MVC实现RESTful风格

上面的代码为查询类型的请求代码,而新增、修改以及删除的请求与此类似,区别就是需要指定不同的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方式实现增删改查操作。

使用简单的加法计算

如何利用Spring MVC实现RESTful风格

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。