【SpringMVC】@Controller和@RequestMapping注解说明
来源:互联网 发布:淘宝钻石等级可以买吗 编辑:程序博客网 时间:2024/05/22 05:08
一、@Controller注解
1、说明:
用于指示Spring类的实例是一个控制器,控制器可以支持同时处理多个请求动作。
2、保证Spring能找到控制器:
(1)在SpringMVC的配置文件的头文件中引入spring-context
(2)使用<context:component-scan/>元素,启动包扫描功能。
注:<context:component-scan base-package="com.lwt.controller"/>可指定扫描包。
二、@RequestMapping注解
1、说明:
该注解用来映射一个请求。指示Spring用哪一个类或非法来处理请求动作。不属于参数绑定注解。
例如:@RequestMapping(value="/hello")
2、支持的属性:
3、常用属性示例:
(1)value属性:将URL映射到方法上。
@RequestMapping(value="/hello")
public ModelAndView hello(){
return ..;
}
地址:http://localhost:8080/context/hello
注:value属性是@RequestMapping注释的默认属性,如果只有唯一的属性,则可以省略该属性名。
value属性的值也可以是一个空字符串。
(2)method属性:该属性用来指示该方法仅仅处理哪些HTTP请求方式。
@RequestMapping(value="/hello",method=RequestMethod.POST)
表示该方法只支持POST请求。
也可以同时支持多个HTTP请求方式:
@RequestMapping(value="/hello",method={RequestMethod.POST,RequestMethod.GET})
注:如果没有指定method属性值,则请求处理方法可以处理任意的HTTP请求方式。
(3)consumes属性:指定处理请求的提交内容类型(Content-Type)
@RequestMapping(value="/hello",method=RequestMethod.POST,consumes="application/json")
表示该方法仅处理request Content-Type为"application/json"类型的请求。
(4)produces属性:指定返回的内容类型,返回的内容类型必须是request请求头(Accept)中所包含的类型。
@RequestMapping(value="/hello" , method=RequestMethod.POST,produces="application/json")
表示该方法仅处理Request请求中请求头中包含了"application/json"的请求,同时指明了返回的内容类型为application/json
(5)params属性:指定request中必须包含某些参数值时,才让该方法处理。
@RequestMapping(value="/hello",method=RequestMethod.POST,params="myParam = myValue")
表示该方法仅处理其中名为"myParam",值为myValue的请求。
(6)hearders属性:该属性指定request中必须包含某些指定的header值,才能让该方法处理请求。
@RequestMapping(value="/hello" , method=RequestMethod.POST,headers="Referer=http://www.lwt.org/")
表示该方法仅处理request的header中包含了指定"Referer"请求头和对应值为"http://www.lwt.org/"的请求。
4、Model和ModelAndView
说明:控制器(Controller)执行业务逻辑,用于产生模型数据(Model),而视图(View),则用于渲染模型数据。
Spring提供了多种途径输出模型数据:
· Model和ModelMap
· ModelAndView
· @ModelAttribute
· @SessionAttributes
(1)Model和 ModelMap
SpringMVC使用了Model接口存储模型数据,ModelMap接口实现了Map接口。
说明:SpringMVC调用处理方法之前会创建一个隐含的模型对象,作为模型数据的存储容器。
如果处理方法为Model或ModelMap类型,则SpringMVC会将数据引用传递给这些参数。
添加模型数据方法:
addObject(String attributeName , Object attributeValue);
实例一:Model和ModelMap的使用
// Controller注解用于指示该类是一个控制器,可以同时处理多个请求动作@Controllerpublic class User1Controller {private static final Log logger = LogFactory.getLog(User1Controller.class);// @ModelAttribute修饰的方法会先于login调用,该方法用于接收前台jsp页面传入的参数@ModelAttributepublic void userModel(String loginname, String password, Model model) {logger.info("userModel");// 创建User对象存储jsp页面传入的参数User user = new User();user.setLoginname(loginname);user.setPassword(password);// 将User对象添加到Model当中model.addAttribute("user", user);}@RequestMapping(value = "/login1")public String login(Model model) {logger.info("login");// 从Model当中取出之前存入的名为user的对象User user = (User) model.asMap().get("user");System.out.println(user);// 设置user对象的username属性user.setUsername("测试");return "result1";}}
注意:@ModelAttribute修饰的方法会先于login调用
@ModelAttributepublic void userMode2(String loginname,String password, ModelMap modelMap){logger.info("userMode2");// 创建User对象存储jsp页面传入的参数User user = new User();user.setLoginname(loginname);user.setPassword(password);// 将User对象添加到ModelMap当中modelMap.addAttribute("user", user);}@RequestMapping(value="/login2") public String login2(ModelMap modelMap){logger.info("login2");// 从ModelMap当中取出之前存入的名为user的对象User user = (User) modelMap.get("user");System.out.println(user);// 设置user对象的username属性user.setUsername("测试");return "result2";}
注:将存储对象改为ModelMap
(2)ModelAndView:既包含模型数据信息,也包含视图信息。
添加模型数据:
addObject(String attributeName , Object attributeValue);
设置视图:
setViewName(String viewName);
实例二:ModelAndView的使用
private static final Log logger = LogFactory.getLog(User3Controller.class);@ModelAttributepublic void userMode3(String loginname,String password, ModelAndView mv){logger.info("userMode3");User user = new User();user.setLoginname(loginname);user.setPassword(password);// 将User对象添加到ModelAndView的Model当中mv.addObject("user", user);}@RequestMapping(value="/login3") public ModelAndView login3(ModelAndView mv){logger.info("login3");// 从ModelAndView的Model当中取出之前存入的名为user的对象User user = (User) mv.getModel().get("user");System.out.println(user);// 设置user对象的username属性user.setUsername("测试");// 设置返回的视图名称mv.setViewName("result3");return mv;}
- 【SpringMVC】@Controller和@RequestMapping注解说明
- SpringMVC注解...@controller和@RequestMapping
- springmvc常用注解之@Controller和@RequestMapping概要说明
- springmvc笔记之 -- @Controller和@RequestMapping注解
- springmvc常用注解之@Controller和@RequestMapping
- springmvc常用注解之@Controller和@RequestMapping
- springmvc常用注解之@Controller和@RequestMapping
- springmvc常用注解之@Controller和@RequestMapping
- springmvc常用注解之@Controller和@RequestMapping
- springmvc常用注解之@Controller和@RequestMapping
- 【springMVC 学习三】springmvc常用注解之@Controller和@RequestMapping
- SpringMVC中@Controller和@RequestMapping用法和其他常用注解
- SpringMVC中@Controller和@RequestMapping用法和其他常用注解
- SpringMVC中@Controller和@RequestMapping用法和其他常用注解
- 【3】springmvc常用注解之@Controller和@RequestMapping
- SpringMVC注解大全@Controller、@RequestMapping、@Resource和@Autowired等等
- SpringMVC 基于注解的Controller @RequestMapping @RequestParam..
- SpringMVC 基于注解的Controller @RequestMapping @RequestParam
- Spring Data MongoDB :基本文档查询
- 高性能可扩展mysql(用户模块设计,分区表使用)
- hibernate session操作
- eCos打印UTC时间
- JAVA调试技巧
- 【SpringMVC】@Controller和@RequestMapping注解说明
- 如何导出微信语音为mp3
- ubuntu中apt-get的默认安装路径。安装、卸载以及查看的方法总结
- React-Native之手势基础篇
- H5 img标签图片无法显示 -- 解决方案
- bootstrap3中container与container_fluid容器的区别
- Http协议(一)
- 将本地项目存储到github的步骤
- java的IO之输入和输出概述