spring 3.2 @Autowired 和@RequestMapping的理解和用法

来源:互联网 发布:淘宝内衣名模雪碧 编辑:程序博客网 时间:2024/06/05 15:03

一、@Resource与@Autowired的区别?

1.@AutowiredbyType自动注入。

2.@Resource默认按byName自动注入。

但是@Resource有两个属性是比较重要的,分是nametype

如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略;

3.@Autowiredspring自己定义的注解,@ResourceJ2EE的,由JSR-250规范定义。

二、@RequestMapping

Spring mvc通过@RequestMapping映射到具体的controller或特定的处理方法上,并且可以在方法里注入各种你需要的参数类型,可以是任意顺序,用起来十分方便。但是springcontrol中的每个方法前必须配置@RequestMapping,不然springannotationMapping不会帮你做映射的,无法做到真正的零配置。

1.@RequestMapping用法

Spring MVC@RequestMapping用来处理请求,比如×××.do.

2.接收带参数的请求,接收用户请求参数值

例如 @RequestMapping(“/start/{name}”)这个那么随便啥都可以。

Spring MVC控制器@Request Mapping方法返回值

spring mvc 处理方法支持如下的返回方法:ModelAndView,Model,ModelMap,Map,View,String,void.下面将对具体的一一进行说明:

ModelAndView

Java代码:

@RequestMapping("/addManager")

public ModelAndView addManager()

{

  ModelAndView mav=new ModelAndView("/_operate/addManager");

  mav.addObject("manager",new Manager());

  mav.addObject("users",shareService.getUsersMap());

  mav.addObject("currentYear",shareService.getCurrentYear());

  mav.addObject("cmanagers",shareService.getCmangersMap());

  mav.addObject("newFlag",true);

   /*mav.setViewName("_operate/addManager.jsp");*/

   return mav;

}

通过ModelAndView 构造方法可以指定返回的页面名称,也可以通过setViewName()方法跳转到指定的页面,使用addObject()设置需要返回的值,addObject()有几个不同参数的方法,可以默认和指定返回对象的方法。调用addObject()方法将值设置成一个名为ModelMap的类属性,ModelMapLinkedHashMap的子类。

Model是一个接口,其实现类为ExtendedModelMap,继承了ModelMap类。

Map

Java代码

@RequestMapping(“/demo2/show”)

public Map<String, String> getMap() {

Map<String, String> map = new HashMap<String,String>();

map.put("key1", "value-1");

map.put("key2", "value-2");

return map;

}

jsp页面中可直通过${Key1}获得到值,map.put()想相当于request.setAttribute方法。

String指定返回的视图页面名称,结合设置的返回地址路径加上页面名称后缀即可访问到。

注意:如果方法声明了注解@ResponseBody,则会直接将返回值输出到页面,不会再去请求value.jsp页面

例如:

1.Java代码:@RequestMapping(value = "/something",method = RequestMethod.GET)

@ResponseBody

public String helloWorld() {

return "Hello World";

}

上面的结果会将文本“Hello World”直接写到http响应流。

@RequestMapping("/welcome")

public String welcomeHandler() {

return "center";

}

对应的逻辑视图名为“center”,URL=prefix前缀+视图名称+suffix后缀组成。

void如果返回值为空,则响应的视图页面对应为访问地址

@RequestMapping("/welcome")

public void welcomeHandler() {}
此例对应的逻辑视图名为"welcome"

小结:

1.使用 String作为请求处理方法的返回值类型是比较通用的方法,这样返回的逻辑视图名不会和请求 URL绑定,具有很大的灵活性,而模型数据又可以通过 ModelMap控制。
2.
使用void,map,Model时,返回对应的逻辑视图名称真实url为:prefix前缀+视图名称 +suffix后缀组成。

3.使用String,ModelAndView返回视图名称可以不受请求的url绑定,ModelAndView可以设置返回的视图名称。