1. 程式人生 > 其它 >springmvc之controller以及RestFul的學習筆記

springmvc之controller以及RestFul的學習筆記

RestFul和控制器

控制器(Controller)

  • 控制器提供訪問應用程式的行為。

  • 控制器解析使用者的請求並轉換成為一個模型。

  • spring-mvc中控制器類可以包含多種方法。

  • spring-mvc中控制器有著多種的配置方式。

控制器Controller

實現介面的controller

  • controller介面

    @FunctionalInterface
    public interface Controller {
    @Nullable
    ModelAndView handleRequest(HttpServletRequest var1, HttpServletResponse var2) throws Exception;
    }
  • 實現controller介面

    public class Controllers implements Controller {

    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.addObject("msg","你好,我繼承了controller");
    modelAndView.setViewName("controller");
    return modelAndView;
    }
    }
  • 編寫spring-mvc

  • 這裡controller是實現了controller的介面,所以需要在spring-mvc配置檔案中手動的註冊Bean。


    <!--檢視解析器-->
    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
    </bean>
    <bean name="/t1" class="cn.com.scitc.controller.Controllers"/>

    使用註解的Controller

  • //將這個類交給spring管理
    @Controller
    public class Controller2 {
    @RequestMapping("/t2")
    public String controller2(Model model){
    model.addAttribute("msg", "我是使用註解的controller");
    return "controller";
    }
    }

    使用註解@Controller將這個類交給spring管理。

    說起來之前學過spring,那麼spring裡面有哪些註解可以實現將類交給spring管理呢?

    @Component:是@Controller、@Repository @Service的元註解,它以及子註解的作用都是將類交給spring管理,但各又有不同之處。
    @Controller 作用和Servlet一樣,用於接受前端資料、這個註解可以找到@RequetMapping的路徑。
    @Repository 持久層也就是Dao,和資料庫打交道。
    @Service 業務層,作用將類交給spring管理。
  • spring-mvc配置檔案

        <!--掃描-->
    <context:component-scan base-package="cn.com.scitc.controller"/>
    <!--檢視解析器-->
    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
    </bean>

    風格RestFul

    概念:

    RestFul就是資源定位以及資源操作的一種風格,不是協議也不是語言,它只是一種操作資源的風格。

    作用:

    更容易實現快取等機制(狂神說的)

    使用不同的資源操作方法實現不同的功能:post、get、put、delete。

    增刪查改:post、delete、get、put。

    @Controller
    public class RestFul {
    //使用{}引用註解@PathVariable的變數。
    @RequestMapping("/req/{a}/{b}")
    public void Rest(@PathVariable int a,@PathVariable int b){
    System.out.println(a+b);
    }
    }

    使用Method屬性指定請求的型別:

    Post、Get、Put、Delete、Head、Patch等


    @Controller
    public class RestFul {
    @RequestMapping(value = "/req/{a}/{b}",method = RequestMethod.POST)
    public void Rest(@PathVariable int a,@PathVariable int b){
    System.out.println(a+b);
    }
    }

    RequstMapping的請求變體如下

    @GetMapping
    @PostMapping
    @PutMapping
    @DeleteMapping
    @PatchMapping