Springmvc Controller和RestFul风格

概念

Springmvc Controller和RestFul风格
有接口实现和注解两种实现方式,但是不建议使用,推荐使用注解。
注解编写一个控制类:

package controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class ControllerDemo2 {
    @RequestMapping("/t1")
    public String hello(Model model){
        model.addAttribute("msg","ControllerDemo2");
        return "test";
    }
    @RequestMapping("/t2")
    public String test2(Model model){
        model.addAttribute("msg","test2");
        return "test";
    }
}

可以发现实现了不同的方法指向同一个jsp网页,实现了复用性.

RestFul风格

概念

Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
功能:
资源:互联网所有的事物都可以被抽象为资源
资源操作:使用POST、DELETE、PUT、GET,使用不同方法对资源进行操作。
分别对应 添加、 删除、修改、查询。

与传统的url不同的是网页的地址更加简单,没有复杂的?之类的符合。
简单例子:
新建一个类 RestFulController
在Spring MVC中可以使用 @PathVariable 注解,让方法参数的值对应绑定到一个URI模板变量上。

package controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class RestFulController {
    @RequestMapping("/commit/{p1}/{p2}")
    public String test(@PathVariable int p1,@PathVariable int p2, Model model){
        int result=p1+p2;
        model.addAttribute("msg","结果:"+result);
        return "test";
    }
}

运行测试:
Springmvc Controller和RestFul风格
使用路径变量的好处?
使路径变得更加简洁;
获得参数更加方便,框架会自动进行类型转换。
通过路径变量的类型可以约束访问参数,如果类型不一样,则访问不到对应的请求方法,如这里访问是的路径是/commit/1/a,则路径与方法不匹配,而不会是参数转换失败。

通过其他注释区分不同的请求方式

package controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class RestFulController {
    @GetMapping("/commit/{p1}/{p2}")
    public String test(@PathVariable int p1,@PathVariable int p2, Model model){
        int result=p1+p2;
        model.addAttribute("msg","结果:"+result);
        return "test";
    }
    @PostMapping("/commit/{p1}/{p2}")
    public String test2(@PathVariable int p1,@PathVariable int p2, Model model){
        int result=p1*p2;
        model.addAttribute("msg","结果:"+result);
        return "test";
    }
}

直接访问走get方法
Springmvc Controller和RestFul风格
通过表单请求访问
Springmvc Controller和RestFul风格
Springmvc Controller和RestFul风格
Springmvc Controller和RestFul风格
可以看到路径一样,但是执行的方法并不一样。

上一篇:Restful-Api知识点总结


下一篇:RESTful API