九里微网站开发,网络营销软文案例,泉州专业制作网站开发,WordPress生成海报插件文章目录 Controller 的编写和配置1. Controller 注解类型2. RequestMapping 注解类型3. 编写请求方法4. 请求参数和路径变量 Controller 的编写和配置
Controller 注解和 RequestMapping 注解是 Spring MVC 最重要的两个注解。
使用基于注解的控制器的优点如下#xff1a; … 文章目录 Controller 的编写和配置1. Controller 注解类型2. RequestMapping 注解类型3. 编写请求方法4. 请求参数和路径变量 Controller 的编写和配置
Controller 注解和 RequestMapping 注解是 Spring MVC 最重要的两个注解。
使用基于注解的控制器的优点如下 一个 Controller 类可以处理多个动作而实现了一个 Controller 接口的控制器只能处理一个动作。 基于 Controller 注解的控制器的请求映射不需要写在配置文件中。使用 RequestMapping 注解类型可以对一个方法进行请求处理。
1. Controller 注解类型
Spring 使用扫描机制来找到应用程序中所有基于注解的控制器类。为了保证 Spring 能找到你的控制器必须完成两件事
// ...
ComponentScan(...)
public class SpringWebConfig implements WebMvcConfigurer {...
}自定义一个配置类实现 WebMvcConfigurer 接口 在配置类上标注ComponentScan 扫描你的 Controller 所在的包。
注意不要让 Spring 扫描一个太广泛的包这会包含无意义的行为。
2. RequestMapping 注解类型
RequestMapping 注解类型的作用如同起名字所暗示映射一个请求和一个方法。可以使用它注解一个方法或类。
被 RequestMapping 注解的方法将成为一个 请求处理方法 在接收到URL请求时被调用。
RequestMapping(value/hello, method {RequestMethod.GET, RequestMethod.POST})
public ModelAndView printHello() {System.out.println(Hello World);ModelAndView mav new ModelAndView();mav.addObject(message, Hello Spring MVC Framework!);mav.setViewName(hello);return mav;
}value 属性是 RequestMapping 的默认属性唯一时可省略属性名。
method 属性用来指示该方法仅处理哪些 HTTP 方法。若 method 属性只有一个值时则无须花括号。若没有指定 method 属性值则请求方法可处理任意 HTTP 方法。
此外如果用 RequestMapping 注解一个控制器类那么所有的方法都将映射为『相对于』类级别的请求。
3. 编写请求方法
每个请求处理方法的参数和返回值『既灵活又严格』。
最为常见的参数类型有 HttpServletRequest、HttpServletResponse、HttpSession Map、Model、ModelMap 表单对象次常用 带指定注解的参数最常用
最为常见的返回值类型有 ModelAndView最常用 Model、View String次常用 被当作 View 的模型对象的任意类型 对于初学者而言如果你觉得『参数类型和返回值类型过于灵活多样以至于你无法确定你使用哪个种更合适』那么你就使用 HttpServletRequest、HttpServletResponse 和 ModelAndView 这是 100% 不会有问题的百搭组合。当然使用过程中代码会略显罗嗦。
RequestMapping(...)
public ModelAndView demo(HttpServletRequest request, HttpServletResponse response) {...
}4. 请求参数和路径变量
Spring MVC 提供了一个更简单的方法来获取 Get 请求参数通过使用 RequestParam 注解。
RequestMapping(/hehe/{id})
public ModelAndView printGoodbye(PathVariable int id) {System.out.println(id);ModelAndView mav new ModelAndView();mav.setViewName(hello);return mav;
}此处需要注意的是拦截规则是拦截所有请求还是拦截特定后缀无法拦截并触发该方法的执行