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
  •  

posted @ 2021-07-12 22:16  mamoritsuzuki  阅读(100)  评论(0)    收藏  举报