Springmvc:(三) Controller/ RestFul风格
一、Contoller
-
controller是一个接口,
org.springframework.web.servlet.mvc
//实现该接口的类获得控制器功能 public interface Controller { //处理请求且返回一个模型与视图对象 ModelAndView handleRequest(HttpServletRequest var1, HttpServletResponse var2) throws Exception; }
-
编写一个Controller
使用注解方式
-
@Controller注解类型用于声明Spring类的实例是一个控制器
-
使用扫描机制找到应用程序中所有基于注解的控制类,需要在配置文件中声明组件扫描
<!-- 自动扫描指定的包,下面所有注解类交给IOC容器管理 --> <context:component-scan base-package="com.ry.controller"/>
@Controller public class ErrorController { @RequestMapping("/error") public String index(Model model) { Model model1 = model.addAttribute("msg", "1Controller"); // 返回视图位置 return "hello"; } }
-
-
@RequestMapper
- @RequestMapping注解用于映射url到控制器类或一个特定的处理程序方法。可用于类或方法上。
- 用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
二、RestFul风格
-
是一个资源定义和资源操作的风格,基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存机制
-
功能
- 资源:互联网所有的事物都可以被抽象为资源
- 资源操作:使用POST、DELETE、PUT、GET,使用不同方法对资源进行操作。
- 分别对应 添加、 删除、修改、查询。
-
使用RESTful操作资源 : 可以通过不同的请求方式来实现不同的效果!如下:请求地址一样,但是功能可以不同!
-
//实现 @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"; } }
@PathVariable是spring3.0的一个新功能:接收请求路径中占位符的值
-
restful风格的优点:
- 使路径变得增加简洁
- 获取参数更加方便,框架自动进行类型转换
- 通过路径变量的类型约束访问参数
-
使用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"; }
总结:
@RequestMapping注解能够处理HTTP 请求的方法
@GetMapping是一个组合注解,相当于
@RequestMapping(method =RequestMethod.GET)