@Controller 表明该类是Handler类
@RequestMapping 表明Handler作用范围 如@RequestMapping("/user") 这个注记 既可以放在类层面+接口 层面上 也可以只放在类层面 或者 接口层面上。
同时, @RequestMapping 支持占位符 例如 @RequestMapping ("/user/*/createUser") @RequestMapping ("/user/fuck??") 同时 也可以从支持引用传入参数@RequestMapping ("/user/{Uid}") 默认是get
@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)
public String findOwner(@PathVariable String ownerId, Model model) {
Owner owner = ownerService.findOwner(ownerId);
model.addAttribute("owner", owner);
return "displayOwner";
}
when a request comes in for
/owners/fred
, the value of
ownerId
is
fred
.
@ModelAttribute 模型绑定的作用 是否可以将ModelMap中的属性绑定到请求处理方法的入参中呢?答案是肯定的。Spring为此提供了一个@ModelAttribute的注解
用法 :
@ModelAttribute("user") //1
public User getUser(){
User user = new User();
user.setUserId("1001");
return user;
}
@RequestMapping(value = "/handle62") //2
public String handle62(@ModelAttribute("user") User user){
user.setUserName("tom");
return "/user/showUser";
}
1处的代码用于预定义一个user对象 将他加入modelMap(
An
@ModelAttribute
on a method indicates the purpose of that method is to add one or more model attributes.)
@RequestMapping(value="/owners/{ownerId}/pets/{petId}/edit", method = RequestMethod.POST)
public String processSubmit(@ModelAttribute("pet") Pet pet, BindingResult result) {
new PetValidator().validate(pet, result);
if (result.hasErrors()) {
return "petForm";
}
// ...
}
同时可以进行对象的校验
@SessionAttributes
@Controller
@RequestMapping("/editPet.do")
@SessionAttributes("pet")
public class EditPetForm {
// ...
}
将对象放入seesion域中
@RequestParam 用于绑定传入参数
@RequestMapping(value="/handle1")
public String handle1(@RequestParam("userName") String userName,
@RequestParam("password") String password,
@RequestParam("realName") String realName){
...
}
@CookieValue
@RequestMapping(value="/handle2")
public String handle2(@CookieValue("JSESSIONID") String sessionId,
@RequestHeader("Accept-Language") String accpetLanguage){
...
}
@Component是所有受Spring管理组件的通用形式,Spring还提供了更加细化的注解形式:@Repository、@Service、@Controller,它们分别对应存储层Bean,业务层Bean,和展示层Bean。目前版本(2.5)中,这些注解与@Component的语义是一样的,完全通用,在Spring以后的版本中可能会给它们追加更多的语义。所以,我们推荐使用@Repository、@Service、@Controller来替代@Component。
一些文章地址备份
http://blog.springsource.com/2011/01/04/green-beans-getting-started-with-spring-mvc/
http://viralpatel.net/blogs/2010/06/tutorial-spring-3-mvc-introduction-spring-mvc-framework.html
http://www.iteye.com/topic/1072244
http://www.iteye.com/topic/1120061
http://elf8848.iteye.com/blog/875830