SpringMVC框架(2)

1.在Controller获得请求参数

 

 

Controller是一个接口。

//实现该接口的类获得控制器功能

public  interface  Controller{

//处理请求且但返回一个模型与视图对象

ModelAndView  handleRequet(HttpServletRequest vsr1,HttpServletResponse vsr2)   throw

}

但是实现接口Controller定义控制器是一个比较古老的办法。缺点是:一个控制器中只有一个办法,如果要用多个办法的时候就得需要定义多个Controller;定义方式比较麻烦

 

 

使用注解@Controller

 

@Controller注解类型用于Spring类的实例是一个控制器

Spring可以使用扫描机制来找到应用程序中所有基于注解的控制器类,为了保证Spring能找到你的控制器,需要在配置文件中声明组建扫描

<!--自动扫描指定的包,下面的所有的注解交给IOC容器管理-->
<context:component-scan base-package = "com.KL.controller"/>

 

 

增加一个Controller Test2,使用注解实现:

 

//@COntroller注解的类会自动添加到spring上下文中
@Controller

public class ControllerTest2{

//映射访问路径
@RequestMapping("/t2")

public String index(Model model){

//spring MVC 会自动实例化一个model对象用于向视图中传值

model.addAttrubute("msg","ControllerTest2");

//返回视图位置

return  "test";

}

}

 

 

控制器与视图之间是弱耦合,注解方式是平时我们使用最多的方式。

 

 

RequestMapping

@Requestmaping

 

 

@RequestMapping注解用于映射url到控制器或 一个特定的处理程序的方法。用于类或方法上。用于类上的话,表示类上的所有请求的方法都是以该地址作为父路径。

 

RestFul风格

 

RestFul就是一个资源定位及资源操作的风格,不是标准和协议,只是一种风格。所以我们可以基于这种风格可以设计的软件更加的简洁,更有层次,更有实现缓存等机制

 

功能:

 

可以使用POST,GET,PUT,DELETE  资源的不同操作

 

测试:

 

1.新建一个类RestFulController

@Controller

public vlass RestFulController{

}

2.我们可以在SpringMVC中使用@PathVariable注解:让方法参数的值对应绑定到一个URL模板变量上。

@Controller
public class RestFulController {
 
    //映射访问路径
    @RequestMapping("/commit/{p1}/{p2}")
    public String index(@PathVariable int p1, @PathVariable int p2, Model model){
        
        int result = p1+p2;
        //Spring MVC会自动实例化一个Model对象用于向视图中传值
        model.addAttribute("msg", "结果:"+result);
        //返回视图位置
        return "test";
        
    }
    
}

 

 

使用路径变量的好处:使路径变得更加简洁,获得参数更加方便,框架会自动类型转换,通过路径变量的类型可以拘束访问参数,如果类型不一样,访问不到对应的请求方法。

 

 

 

使用method属性指定请求类型

用于约束请求的类型,可以收窄请求范围。指定请求谓词的类型如GET,POST,HEAD,OPTIONS,PUT,PATCH,DELETE,TRACE

 

//映射访问路径,必须是POST请求
@RequestMapping(value = "/hello",method = {RequestMethod.POST})
public String index2(Model model){
    model.addAttribute("msg", "hello!");
    return "test";
}

 

所有的地址栏请求默认都会是HTTP GET类型的

方法级别的注解变体:组合注解

 

 @GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping

 

@GetMapping 是一个组合注解,平时使用的会比较多!

它所扮演的是 @RequestMapping(method =RequestMethod.GET) 的一个快捷方式。

 

posted @ 2021-07-24 14:09  LeoLxx  阅读(31)  评论(0编辑  收藏  举报