本文共 4073 字,大约阅读时间需要 13 分钟。
Controller是一个接口,在org.springframework.web.servlet.mvc包下,接口中只有一个方法;
//实现该接口的类获得控制器功能public interface Controller { //处理请求且返回一个模型与视图对象 ModelAndView handleRequest(HttpServletRequest var1, HttpServletResponse var2) throws Exception;}
//定义控制器//注意点:不要导错包,实现Controller接口,重写方法;public class ControllerTest1 implements Controller { public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { //返回一个模型视图对象 ModelAndView mv = new ModelAndView(); mv.addObject("msg","Test1Controller"); mv.setViewName("test"); return mv; }}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>Kuangshen ${ msg}
//@Controller注解的类会自动添加到Spring上下文中,该类中的所有方法,//如果返回值是Spring,并且有具体的页面可以跳转,就会被视图解析器解析@Controllerpublic class ControllerTest2{ //映射访问路径 @RequestMapping("/t2") public String index(Model model){ //Spring MVC会自动实例化一个Model对象用于向视图中传值 model.addAttribute("msg", "ControllerTest2"); //返回视图位置 return "test"; }}
//访问路径:http://localhost:8080/h1@Controllerpublic class TestController { @RequestMapping("/h1") public String test(){ return "test"; }}
//访问路径:http://localhost:8080/admin/h1,需要先指定类的路径再指定方法的路径;@Controller@RequestMapping("/admin")public class TestController { @RequestMapping("/h1") public String test(){ return "test"; }}
Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
@Controllerpublic class RestFulController { }
@Controllerpublic 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"; } }
我们来测试请求查看下
思考:使用路径变量的好处?//映射访问路径@RequestMapping("/commit/{p1}/{p2}")public String index(@PathVariable int p1, @PathVariable String p2, Model model){ String result = p1+p2; //Spring MVC会自动实例化一个Model对象用于向视图中传值 model.addAttribute("msg", "结果:"+result); //返回视图位置 return "test";}
用于约束请求的类型,可以收窄请求范围。指定请求谓词的类型如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";}
//映射访问路径,必须是Get请求@RequestMapping(value = "/hello",method = { RequestMethod.GET})public String index2(Model model){ model.addAttribute("msg", "hello!"); return "test";}
Spring MVC 的 @RequestMapping 注解能够处理 HTTP 请求的方法, 比如 GET, PUT, POST, DELETE 以及 PATCH。所有的地址栏请求默认都会是 HTTP GET 类型的。
@GetMapping@PostMapping@PutMapping@DeleteMapping@PatchMapping
@GetMapping 是一个组合注解它所扮演的是 @RequestMapping(method =RequestMethod.GET) 的一个快捷方式。 平时使用的会比较多!
转载地址:http://mlrwi.baihongyu.com/