SpringMVC学习笔记二

REST 或 RESTful的网络服务,允许客户端发出以统一资源标识符访问和操作网络资源的请求。简单来说就是将服务器中的资源通过URI的方式来定位。

REST风格的URL将HTTP协议中的四种请求方式GET、POST、PUT、DELETE分别对应四种基本操作:GET 用来获取资源,POST 用来新建资源,PUT 用来更新资源,DELETE 用来删除资源。

操作

REST风格URL及请求方式

传统方式URL及请求方式

获取

/getBookById/1  GET请求

/getBookById?id=1  GET请求

添加

/addBook  POST请求

/addBook  POST请求

更新

/updateBook  PUT请求

/updateBook  POST请求

删除

/deleteBookById/1  DELETE请求

/deleteBookById/?id=1  GET请求

 那么如何发送PUT和DELETE请求的?

浏览器 form 表单只支持 GET 与 POST 请求,而PUT、DELETE 等请求方式并不支持,Spring3.0 添加了一个过滤器HiddenHttpMethodFilter,可以将POST请求转换为PUT或DELETE请求。

转换PUT和DELETE请求的步骤

需要在

1、web.xml中配置过滤器HiddenHttpMethodFilter

<!--配置HiddenHttpMethodFilte过滤器,目的是为了将POST请求转换为PUT或DELETE请求-->
<filter>
    <filter-name>hiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>hiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

2、在Post请求的form表单中添加一个_method的请求函数

  1. _method的值为put(忽略大小写)则转换为PUT请求
  2. _method的值为delete(忽略大小写)则转换为DELETE请求
<form action="${pageContext.request.contextPath}/testPut" method="post">
  <input type="hidden" name="_method" value="put">
  <input type="submit" value="转换PUT请求">
</form>
<form action="${pageContext.request.contextPath}/testDelete" method="post">
  <input type="hidden" name="_method" value="delete">
  <input type="submit" value="转换DELETE请求">
</form>

SpringMVC处理请求数据

Spring MVC 通过分析处理方法的签名(方法名+ 参数列表),可以将HTTP请求信息绑定到处理方法的相应入参中,并根据方法的返回值类型做出相应的后续处理。

必要时可以对方法入参标注相应的注解( @PathVariable 、@RequestParam、@RequestHeader、@CookieValue 等)。

@RequestParam注解

  1. 在处理方法入参处使用 @RequestParam 可以把请求参数传递给请求方法。如果请求参数的参数名与处理方法的形参名一致,可以不加该注解。
  2. @RequestParam中的属性:
    1. value属性:用来设置请求参数的参数名。
    2. required属性:用来设置该请求参数是否是必须的,默认是true。
    3. defaultValue属性:用来设置一个默认值,如果没有传入该请求参数将使用此值。

 @RequestHeader注解

  1. 每次发送请求时请求头包含了若干个属性,服务器可通过@RequestHeader注解获取客户端的信息,通过 @RequestHeader 即可将请求头中的属性值绑定到处理方法的入参中。
  2. @RequestHeader中的属性
    1. value属性:用来设置请求头中的属性名。
    2. name属性:与value功能一样,是value的一个别名。
    3. required属性:用来设置该请求参数是否是必须的,默认是true。
    4. defaultValue属性:用来设置一个默认值,如果没有传入该请求参数将使用此值。

 

@CookieValue注解

  1. 通过 @CookieValue 即可将请求头中的Cookie对象的值绑定到处理方法的入参中。
  2. @CookieValue中的属性
    1. value属性:用来设置请求头Cookie对象的名字。
    2. name属性:与value功能一样,是value的一个别名。
    3. required属性:用来设置该请求参数是否是必须的,默认是true。
    4. defaultValue属性:用来设置一个默认值,如果没有传入该请求参数将使用此值。

使用POJO作为入参

  1. Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性值。而且支持级联属性赋值。
  2. 必须要保证请求参数名与POJO的属性名保持一致。
  3. 操作流程:
    1. 创建POJO类

 使用原生Servlet-API作为入参

  1. 不使用@RequestParam注解和入参为POJO同样可以获取请求参数,可以使用原生的Servlet API作为入参进行操作。
  2. SpringMVC处理器方法中接受的原生Servlet API有以下9个:
    1. HttpServletRequest
    2. HttpServletResponse
    3. HttpSession
    4. java.security.Principal
    5. Locale
    6. InputStream
    7. OutputStream
    8. Reader
    9. Writer

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值