springMVC入门(七)------RESTFul风格的支持
2024-10-09 13:04:02
简介
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/**"/>
结果:
最新文章
- java转换 HTML字符实体,java特殊字符转义字符串
- Python学习--Python基础语法
- 注解:Hibernate双向N->;N关联(两端都控制关联关系)
- linux命令行netstat总结
- 从malloc中窥探Linux内存分配策略
- Javascript水平提升
- 批处理备份和恢复mysql数据库
- 网络编程easy错误点-手知道
- 分布式一致性算法Raft
- An Introduction to Variational Methods (5.1)
- Ubuntu下利用Apache转发模块实现反向代理
- fastboot烧写hi3531
- React demo:express、react-redux、react-router、react-roter-redux、redux-thunk(一)
- git pull遇到错误:error: Your local changes to the following files would be overwritten by merge:
- js中函数对象创建的总结
- Qt5 json 数据处理
- Python之函数&;参数&;参数解构
- C++定义自己的异常
- Maven 入门——Maven 的安装和配置
- SQL Server复制入门(二)----复制的几种模式
热门文章
- 开源项目推荐 - 巨鲸任务调度平台(Spark、Flink)
- springboot整合邮件发送(163邮箱发送为例)
- Vue + Element 实现多选框选项上限提示与限定
- Django学习路35_视图使用方法(复制的代码) + 简单总结
- PHP libxml_clear_errors() 函数
- PHP mysqli_select_db() 函数
- 牛客练习赛63 牛牛的树行棋 差分 树上博弈 sg函数
- js 读取word和txt(react版) + 正则分割段落
- [转]Post和Get的区别
- 【CSP2019】括号树 题解(递推+链表)