SpringMVC原理分析 | Controller配置、RestFul风格-LMLPHP


Controller配置

控制器Controller

实现Controller接口

//实现Controller接口的类可以获得控制器的功能
public interface Controller {
    //处理请求且返回一个模型与视图对象
    @Nullable
    ModelAndView handleRequest(HttpServletRequest var1, HttpServletResponse var2) throws Exception;
}

接口方法实现Controller

注解方法实现Controller

RequestMapping配置

RestFul

概念

传统方式

package com.wei.controller;

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

//@Controller注解的类会自动添加到Spring上下文中,被这个注解的类,返回String,并且有具体页面跳转,就会被视图解析器解析
@Controller
public class RestFulController {

    @RequestMapping("/add")
    public String test1(int a, int b, Model model) {
        int result = a + b;
        model.addAttribute("msg", "结果为:" + result);
        return "test";
    }
}

SpringMVC原理分析 | Controller配置、RestFul风格-LMLPHP

RestFul方式

package com.wei.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注解的类会自动添加到Spring上下文中,被这个注解的类,返回String,并且有具体页面跳转,就会被视图解析器解析
@Controller
public class RestFulController {

    @RequestMapping("/add/{a}/{b}")
    public String test1(@PathVariable int a,@PathVariable int b, Model model) {
        int result = a + b;
        model.addAttribute("msg", "结果为:" + result);
        return "test";
    }
}

SpringMVC原理分析 | Controller配置、RestFul风格-LMLPHP

方式一:

package com.wei.controller;

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

//@Controller注解的类会自动添加到Spring上下文中,被这个注解的类,返回String,并且有具体页面跳转,就会被视图解析器解析
@Controller
public class RestFulController {


//    @GetMapping("/add/{a}/{b}")
//    @PostMapping("/add/{a}/{b}")
//    @PutMapping("/add/{a}/{b}")
//    @DeleteMapping("/add/{a}/{b}")
//    @PatchMapping("/add/{a}/{b}")

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

    @PostMapping("/add/{a}/{b}")
    public String test2(@PathVariable int a,@PathVariable int b, Model model) {
        int result = a + b;
        model.addAttribute("msg", "test2结果为:" + result);
        return "test";
    }
}

方式二:

package com.wei.controller;

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

//@Controller注解的类会自动添加到Spring上下文中,被这个注解的类,返回String,并且有具体页面跳转,就会被视图解析器解析
@Controller
public class RestFulController {

    @RequestMapping(value = "/add/{a}/{b}",method = RequestMethod.GET)
    public String test1(@PathVariable int a,@PathVariable int b, Model model) {
        int result = a + b;
        model.addAttribute("msg", "test1结果为:" + result);
        return "test";
    }

    @RequestMapping(value = "/add/{a}/{b}",method = RequestMethod.POST)
    public String test2(@PathVariable int a,@PathVariable int b, Model model) {
        int result = a + b;
        model.addAttribute("msg", "test2结果为:" + result);
        return "test";
    }
}


SpringMVC原理分析 | Controller配置、RestFul风格-LMLPHP

06-26 12:53