springmvc中使用RESTful

一、RESTful的概念和意义

1、什么是RESTful?

      RESTful就是一个资源定位以及资源操作的风格。不是标准也不是协议,只是一种风格。基于这种风格设计的软件可以更加的简洁,更有层次。

  • 资源:互联网所有的事物都可以被抽象为资源 url (只要互联网上的事物可以用一     个 url 来表示,那么它就是一个资源)
  •  资源操作:使用POSTDELETEPUTGET,使用不同方法对资源进行操作。
           分别对应添加、删除、修改、查询。

2、为什么使用使用RESTful

互联网开始的网页是前端后端融在一起的,如 JSP 等。
在桌面时代问题不大,但是近年来移动互联网的发展,各种类型的 Client 层出不穷,
RESTful 可以通过一套统一的接口为 Web iOS Android 提供服务。
客户端不需要绑定服务器相关的信息和服务层分离,一套服务系统可应用于多种客户端

3urlRESTful实现

RESTful http url http://localhost:8080/users/toUpdateUser.do?
id=1&name=a&sex=a
RESTful url 是简洁的: http://localhost:8080/users - rest/1/2
参数通过 url 传递, rest 接口返回 json 数据

4、传统方式操作资源

操作啥(原来 url )?操作谁(传入的参数)
url 中先定义动作,然后传递的参数表明这个动作操作的是哪个对象(数据)
先定位动作,然后定位对象
http://localhost:8080/springmvc07/user/queryUserById.do?id=1 查询
http://localhost:8080/springmvc07/user/saveUser.do 新增
http://localhost:8080/springmvc07/user/updateUser.do 更新
http://localhost:8080/springmvc07/user/deleteUserById.do?id=1 删除

二、使用RESTful风格

1、更改web.xml中Dispatcher的配置,将url-pattern更改为"/"

springmvc_rest
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
springmvc_rest
/

2、在webapp目录下新建一个restful-test.jsp页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    restful风格


get:查询

restful的get请求方式
restful的get请求方式,带参数

post:添加

put:修改

delete:删除

3、在controller文件夹下新建一个RestfulController.java 

  • @RequestMapping(value = "/{id}",method = RequestMethod.GET/POST/PUT/DELETE)等价于@GetMapping/PostMapping/PutMapping/DeleteMapping("/{id}")
  • 这里的@PathVariable("")表示参数和前端页面的参数自动绑定
@RestController
@RequestMapping("/user-restful")
public class RestfulController {
//查询所有:get
//@RequestMapping(value = "/user",method = RequestMethod.GET)
    @GetMapping
    public void queryAll(){
        System.out.println("RestfulController:查询.....");
    }


    //@RequestMapping(value = "/user/{id}",method = RequestMethod.GET)
    @GetMapping("/{id}")
    public void queryById(@PathVariable("id") int id){
        System.out.println("RestfulController:查询带参数id为....."+id);
    }


    //添加:post
//@RequestMapping(value = "/user/{id}", method = RequestMethod.POST)
    @PostMapping("/{id}/{name}")   //要对应起来,才能输出
    public void addUsers(@PathVariable("id") int id,@PathVariable("name") String name){

        System.out.println("RestfulController:增加带参数id为....."+id);
    }


    //修改:put
//@RequestMapping(value = "/user/{id}",method = RequestMethod.PUT)
    @PutMapping("/{id}")
    public void updateUsers(@PathVariable("id") Integer id){
        System.out.println("RestfulController:修改带参数id为....."+id);
    }
    //删:delete
//@RequestMapping(value = "/user/{id}",method = RequestMethod.DELETE)
    @DeleteMapping("/{id}")
    public void delete(@PathVariable("id") Integer id){

        System.out.println("RestfulController:删除带参数id为....."+id);
    }


}

4、当点击删除和修改按钮时,输出语句失败?

注意,web程序中只支持GET和POST提交方式,需要PUT和DELETE提交,需要在web.xml中配置

>
- name > HiddenHttpMethodFilter < /filter - name >
- class > org . springframework . web . filter . HiddenHttpMethodFilter < /filter - class >
< /filter >
- mapping >
- name > HiddenHttpMethodFilter < /filter - name >
- pattern >/ * < /url - pattern >
< /filter - mapping >

同时需要jsp传递一个参数:_method=PUT/DELETE  

  固定的不能改 

5、释放静态资源

设置静态资源解析 , 解决 404 的错误
DispatcherServlet 拦截 / 开头的所有请求,对静态资源的访问就报 404
springmvc.xml 中设置静态资源的解析:
location = "/js/" mapping = "/js/**" />
location = "/img/" mapping = "/img/**" />
location = "/css/" mapping = "/css/**" />
default-servlet-name = "default" />

三、练习使用

 1.RESTful风格的查询所有,提交方式为GET

1.1在restful-test.jsp中

type = "button" id = "btn1" value = " 查询所有 " />

1.2、 给按钮添加点击事件,提交ajax请求

使用ajax要使用jQuery,所以引入标签



                    
                    

你可能感兴趣的:(#,springmvc,restful,java)