Controller与RestFul风格

1、Controller

在Controller类中使用注解后 视图解析器会自动将该类中返回值为String类型的方法进行解析 将返回的字符串进行url的拼接

在这里面需要注意的是 返回的字符串是需要跳转的jsp的文件名 不需要其它任何表示

注册servlet url的注解是 @RequsetMappering 括号中加入url地址 字符串形式 带/

  @RequestMapping("/hello")

注册类的注解是@Controller

@Controller

我们需要明白注解和实现接口这两种方法有什么相同点 和不同点

  • 相同点:都是对业务进行处理的方法 都可以进行数据的传递和视图的跳转 都需要用到add***()方法来进行参数传递

  • 不同点:注解不需要再进行Spring的注册 但是需要扫描包的注解 ,实现接口就是常规流程,写完类去注册bean即可

    ​ 使用注解 我们不需要再创建映射器和适配器 spring会自动帮我们做 ,反之则不然

    ​ 使用注解 返回一个字符串 这个字符串就是我们需要跳转的页面 ,使用接口返回一个view对象,对象中携带了数据和需要跳转的视图

  • 代码不同

public class Controller implements org.springframework.web.servlet.mvc.Controller {
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {


        ModelAndView view = new ModelAndView();
        // 编写业务
        String msg="你好,世界!";
        //视图跳转
      view.addObject("msg",msg);
      view.setViewName("/test");

        return view;
    }
}





@org.springframework.stereotype.Controller
public class Controller{
  //设置访问时的servlet路径  即/hello
    @RequestMapping("/hello")
    public String  hello(Model model){
            //封装数据
            model.addAttribute("mag","你好,世界!");
            //返回要跳转到jsp页面
            return "test";
        }
}

2、RestFul风格

2.1、什么是Restful风格?

Restfule风格是一种软件架构风格,而不是标准,只是提供了一种设计原则和约束条件。主要适用于客户端和服务器端交互的软件。是基于http协议实现。目的是为了提高系统的可伸缩性,降低应用之间的耦合度,方便框架分布式处理程序。基于这个风格的软件可更加的简单、更有层次,更易于实现缓存的机制。
在resultful风格中,用户请求的url使用同一个URL而用请求方式:get/post/delete/put等方式对请求的处理方法进行区分。这样可以在前后台分离的开发中让前端开发人员不会对请求的资源地址产生混淆,形成一个统一的接口。‘

举个例子

传统的URL地址是问号传参 即

http://localhost:8080/add?a=1,b=2

使用RestFul风格后

http://localhost:8080/add/1/2

我们可以看出 传统url参数之间用,分割且参数可见 而RestFul是使用/将文件、参数等内容进行分割的 看上去更加渐变

并且尽管是相同的URL 它的执行结果也有可能是不同的 因为RestFul定义了4中资源请求的方式 get/post/delete/put 使用不同的方式就会产生不同的结果

Controller与RestFul风格

Controller与RestFul风格

为什么相同的url地址会产生了不同的结果呢 原因就是RestFul进行了不同请求的设置 而这些不同的请求又有了不同的操作

  @GetMapping("/add/{a}/{b}")
    public String test(@PathVariable int a, @PathVariable int b, Model model){
        int c=a+b;
            model.addAttribute("mag","结果为:"+c);
            return "test";
    }
    @PostMapping("/add/{a}/{b}")
    public String test1(@PathVariable int a, @PathVariable int b, Model model){
        int c=a-b;
        model.addAttribute("mag","结果为:"+c);
        return "test";
    }

通过看原码我们知道了 GET方式走了一个加法操作 而POST方法则进行了一个减法的操作

2.2、为什么使用Restful风格?

  • 因为它简化了URL的地址 是RUL看上去更加整洁
  • 确保了数据的安全性 就像例子一样 它更像是一种接口 用户只管用 但并不需要知道它的内部是怎么实现的

2.3、RestFul风格的两种实现形式

首先 不管是哪一种实现方式 我们都需要给参数添加(@PathVariable 的注解 表明它是一个RestFul的一个参数

//方法一
 @RequestMapping(value = "/add/{a}/{b}",method = RequestMethod.GET)
//方法二
@PostMapping("/add/{a}/{b}")

两种方法都可以

上一篇:springmvc 学习(三) RestFul 风格


下一篇:Java学习记录 08SpringMVC RESTful风格