Restful风格:
一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
URL定义
资源:互联网所有的事物都可以被抽象为资源
资源操作:使用POST、DELETE、PUT、GET,使用不同方法对资源进行操作。
分别对应 添加、 删除、修改、查询。
Restful的特性
资源(Resources):网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的存在。可以用一个URI(统一资源定位符)指向它,每种资源对应一个特性的URI。要获取这个资源,访问它的URI就可以,因此URI即为每一个资源的独一无二的识别符。
表现层(Representation):把资源具体呈现出来的形式,叫做它的表现层(Representation)。比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式。
状态转换(State Transfer):每发出一个请求,就代表了客户端和服务器的一次交互过程。HTTP协议,是一个无状态协议,即所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生“状态转换”(State Transfer)。而这种转换是建立在表现层之上的,所以就是“表现层状态转换”。具体说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。他们分别对应四种基本操作:GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删除资源。
接下来简单实现一下:
首先:建立一个实体类:
package gvn.openlab.bean;
public class Employee {
private int id;//id模拟数据库自增
private String name;
private String sex;
private static int i=0;
public Employee() {
this.id = i;
i++;
}
public Employee( String name, String sex) {
this();
this.name = name;
this.sex = sex;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
在建立一个接口定义相应的方法:
package gvn.openlab.dao;
import gvn.openlab.bean.Employee;
import java.util.List;
public interface EmpDao {
public List<Employee> findall();//查找所有数据
public void sava (Employee employee);//添加数据方法
public void delete(Integer id);//按id删除数据
public Employee findByid(Integer id);//按id查找数据
}
实现接口方法:
package gvn.openlab.dao.impl;
import gvn.openlab.bean.Employee;
import gvn.openlab.dao.EmpDao;
import org.springframework.stereotype.Controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class EmpDaoImpl implements EmpDao {
private static Map<Integer,Employee> map=new HashMap<Integer,Employee>();//定义一个map装假数据
static {
//静态代码块 加载数据入map
Employee e=new Employee("若尘","男");
Employee e1=new Employee("若曦","男");
Employee e2=new Employee("梓渝","男");
map.put(e.getId(),e);
map.put(e1.getId(),e1);
map.put(e2.getId(),e2);
System.out.println("sta方法执行");
}
@Override
public List<Employee> findall() {
//查寻数据
// System.out.println(new ArrayList<>(map.values()));
return new ArrayList<>(map.values());//将map封装成List
}
@Override
public void sava(Employee employee) {
//添加方法
map.put( employee.getId(),employee);
}
@Override
public void delete(Integer id) {
//删除方法
map.remove(id);
}
@Override
public Employee findByid(Integer id) {
//通过id进行查找数据
return map.get(id);
}
}
没有连接数据库,只是进行假数据的;
jsp文件:
首先进入界面:
<%--
Created by