SpringMVC--注解驱动的控制器
来源:互联网 发布:上海炫踪网络 怎么样 编辑:程序博客网 时间:2024/05/21 19:45
使用基于注解的控制器类,在POJO类定义处标注@Controller,再通过<\context:component-scan/>扫描相应的类包,即可使POJO成为一个能处理HTTP请求的控制器。
DispatcherServlet所提供的默认DefaultAnnotationHandlerMapping就可以满足需求。它将请求映射到使用@RequestMapping注解的方法。
1、@RequestMapping
在控制器的类定义和方法定义处都可以标注@RequestMapping,类定义处的@RequestMapping提供初步的请求映射信息,方法定义处的@RequestMapping提供进一步的细分映射信息。
DispatcherServlet截获请求后,就通过控制器上@RequestMapping提供的映射信息确定请求所对应的处理方法。
1.1、通过请求URL进行映射
@RequestMapping在类定义处指定的URL相对于Web应用的部署路径,而在方法定义处指定的URL则相对于在类定义处指定的URL。
如果在类处未标注@RequestMapping,那么方法处标注的@RequestMapping的URL是相对于Web**应用的部署路径**。
@Controller@RequestMapping("/user")public class UserController { @RequestMapping("/register") public String register(){ return "user/login"; } }
@RequestMapping不但支持标准的URL,还支持Ant风格(?:匹配文件名中的一个字符、*:匹配文件名中的任意字符、**:匹配多层路径),也支持带{xxx}占位符的URL:
//访问路径:http://localhost:8080/spitter/user/aaa/login@RequestMapping("/*/login") public String login(){ return "user/login"; }//访问路径:http://localhost:8080/spitter/user/aaa/bbb/login@RequestMapping("/**/login") public String login(){ return "user/login"; }//访问路径:http://localhost:8080/spitter/user/12343/test/login@RequestMapping("/{pass}/{userName}/login") public ModelAndView login(@PathVariable("pass") String password,@PathVariable String userName){ User user=new User(); user.setPassword(password); user.setUserName(userName); ModelAndView mv=new ModelAndView(); mv.addObject("user",user); mv.setViewName("user/createSuccess"); return mv; }
2、通过请求参数、请求方法类型、请求头进行映射
@RequestMapping的value、method、params、headers,它们可以组合使用,它们之间是 与 的关系,联合使用可以让请求更加精确。
//1、请求方法类型进行映射@RequestMapping(method = RequestMethod.POST) public ModelAndView createUser(User user){ ModelAndView mv=new ModelAndView(); mv.addObject("user",user); mv.setViewName("user/createSuccess"); return mv; }//2、请求参数进行映射//请求参数可以是报文体和URL包含的请求参数//请求路径:http://localhost:8080/spitter/user?username=zhangsan@RequestMapping(params = "username") public ModelAndView login(@RequestParam("username") String userName){ User user=new User(); user.setUserName(userName); ModelAndView mv=new ModelAndView(); mv.addObject("user",user); mv.setViewName("user/createSuccess"); return mv; }//请求头进行映射 @RequestMapping(headers = "content-type=text/*") public String register(){ return "user/login"; }//组合使用,同时满足@RequestMapping(value = "/register",method = RequestMethod.POST,params = {"param1=value1","param2=value2"},headers = "content-type=text/*") public String register(){ return "user/login"; }
二、请求处理方法签名
1、使用@RequestParam绑定请求参数值
//它有三个参数:value:参数名; //required:是否必须,默认是true; //defaultValue:默认参数名,在设置该参数时,required设置为false;@RequestMapping(value="index",params = "username") public ModelAndView login(@RequestParam(value = "username",required = false,defaultValue = "user") String userName){ User user=new User(); user.setUserName(userName); ModelAndView mv=new ModelAndView(); mv.addObject("user",user); mv.setViewName("user/createSuccess"); return mv; }
2、使用@CookieValue绑定请求中的Cookie值
//它也有相同的三个参数:value、required、defaultValue@RequestMapping("/index") public String getSession(@CookieValue(value = "sessionId",required = false) String sessionId){ return "user/success"; }
3、使用@RequestHeader绑定请求报文头的属性值
@RequestMapping(value = "/index",method = RequestMethod.POST) public String handle02(@RequestHeader("Accept-Encoding")String encoding){ return "user/success"; }
利用PostMan工具测试:
4、使用命令/表单对象绑定请求参数值
Spring MVC会按照请求参数名和对象属性名匹配的方式,自动为该对象填充属性值,支持级联的属性名
@RequestMapping(method = RequestMethod.POST) public ModelAndView createUser(User user){ ModelAndView mv=new ModelAndView(); mv.addObject("user",user); mv.setViewName("user/createSuccess"); return mv; }
5、使用Servlet API对象作为入参
public void handle03(HttpServletRequest request, HttpServletResponse response){ String username= WebUtils.findParameterValue(request,"username"); response.addCookie(new Cookie("username",username)); }
- SpringMVC--注解驱动的控制器
- SpringMVC注解驱动的控制器详解
- SpringMVC注解驱动的控制器详解
- SpringMVC Ⅱ 基于注解的控制器
- SpringMVC学习之基于注解的控制器
- SpringMvc 控制器注解简介
- SpringMVC注解控制器详解
- SpringMVC注解控制器详解
- 注解式控制器 springMVC
- SpringMVC-注解式控制器详解-SpringMVC强大的数据绑定
- SpringMVC之用注解控制器
- springmvc梳理7---注解控制器
- SpringMVC之用注解控制器
- 注解驱动的springMVC与参数绑定
- 注解式控制器详解(SpringMVC强大的数据绑定)
- Spring学习笔记-springMVC基于注解的控制器(基本概念)
- Spring学习笔记-springMVC基于注解的控制器(Demo)
- SpringMVC强大的数据绑定—注解式控制器详解
- 浮动窗口与多媒体效果
- 内部排序分类及稳定性
- 有关计数问题的dp
- Kafka学习笔记:设置多broker集群
- 初级排序算法
- SpringMVC--注解驱动的控制器
- Android SVG矢量资源的使用方法
- ThinkPHP读取本地文件信息(包括中文路径)
- 热烈庆祝中国梦•我和我的祖国线上美术作品评选大赛隆重举行
- python 正则表达式
- MongoDB在Ubuntu上离线安装及可视化工具robomongo安装
- hdoj 2120 Ice_cream's world I 【并查集判断成环数】
- java练习题004
- GreenPlum学习(二)