springMVC入门(七)------RESTFul风格的支持

简介

RESTful风格(Representational State Transfer),又叫表现层状态转移,是一种开发理念,也是对HTTP协议很好的诠释
主要理念是将互联网中的网页、数据、服务都视作资源,每次请求只是使得资源的状态发生变化
具体来说,使用规范化的URL来定位网络中的资源,使用HTTP请求的四种请求方式使得资源的状态发生改变
如:GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删除资源

RESTful规范

1、对URL进行规范,写RESTful格式的URL

非REST的URL:http://..../queryItems.action?id=001
REST的URL风格:http://..../items/001
特点:URL简洁,将参数通过URL传到服务端,请求URL只是对资源的定位,因此不应该出现动词

2、http的方法规范

不管是删除、添加、更新,使用的URL是一致的,如果进行删除,需设置HTTP的方法为delete,其它同理
后台controller方法:判断http方法,如果是delete则执行删除,如果是post则执行添加

3、对http的contentType规范

请求时执行contentType,要json数据,则设置成json格式的type
而实际使用中第2点往往没有做到

springMVC对RESTful的支持

springmvc中使用URL模板映射支持URL规范

测试代码

    //通过URL中的{XXX}表示占位符,与@PathVariable(XXX)配合建立URL路径到参数的绑定关系
    @RequestMapping("/user/{id}/{otherParam}")
    @ResponseBody
    public User queryUser(@PathVariable("id") String id) {
        User user = new User();
        if("123".equals(id)) {
            user.setUsername("nlskyfree");
        }
        return user;
    }

JSP页面

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page language="java" contentType="text/html; charset=utf-8"  pageEncoding="utf-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 4.01 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<body>
<h2>Hello World!</h2>
用户名:${user.username}
</body>
</html>

修改web.xml映射方式

<servlet-mapping>
   <!--
    常用两种配置方式
    第一种:*.action,访问以.action结尾的,由DispatcherServlet解析
    第二种:/,所有访问的地址都由DispacherServlet进行解析,对于静态文件的解析需要配置不让DispacherServlet进行解析,
    使用此种方式可以实现RESTful风格的url
     -->
      <servlet-name>springmvc</servlet-name>
      <url-pattern>/</url-pattern>
  </servlet-mapping>

配置springmvc对静态资源的访问
注意以下标签需配合mvc:annotation-driven</mvc:annotation-driven>使用

    <!-- 静态资源管理 -->
    <!-- 注意到mapping的值"/resources/**"有两个*,它表示映射resources/下所有的URL,包括子路径(即接多个/)
        ,如果只有一个*,将只能映射1级路径,即只能访问1,访问2、3将会报错。 -->
    <mvc:resources location="/jsp" mapping="/jsp/**"/>
    <mvc:resources location="/js" mapping="/js/**"/>

结果:

posted @ 2018-08-30 14:27  nlskyfree  阅读(759)  评论(0编辑  收藏  举报