1、springmvc注解
@RequestMapping @RequestParam @ModelAttribute @SessionAttributes @Responsebody @RequestBody
@Controller @RequestMapping("/owners/{ownerId}") public class RelativePathUriTemplateController {
/** * 1.@ModelAttribute注释void返回值的方法 * @param abc * @param model */ @ModelAttribute public void populateModel(@RequestParam String abc, Model model) { model.addAttribute("attributeName", abc); }@RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, params="myParam=myValue" ) public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) { // implementation omitted }}
public String requestparam1(@RequestParam String username)
@ModelAttribute注释一个方法
被@ModelAttribute注释的方法表示这个方法的目的是增加一个或多个模型(model)属性。这个方法和被@RequestMapping注释的方法一样也支持@RequestParam参数,但是它不能直接被请求映射。实际上,控制器中的@ModelAttribute方法是在同一控制器中的@RequestMapping方法被调用之前调用的。
被@ModelAttribute注释的方法用于填充model属性,例如,为下拉菜单填充内容,或检索一个command对象(如,Account),用它来表示一个HTML表单中的数据。
一个控制器可以有任意数量的@ModelAttribute方法。所有这些方法都在@RequestMapping方法被调用之前调用。
有两种类型的@ModelAttribute方法。一种是:只加入一个属性,用方法的返回类型隐含表示。另一种是:方法接受一个Model类型的参数,这个model可以加入任意多个model属性。
package demo.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.SessionAttributes; import demo.model.User; @Controller @RequestMapping(value="/demo1") //(1)将ModelMap中属性名为currUser的属性放到Session属性列表中,以便这个属性可以跨请求访问 @SessionAttributes("currUser") public class Demo1Controller { @RequestMapping(value="/getUser") public String getUser(ModelMap model){ User user=new User(); user.setUser_name("zhangsan"); user.setUser_age(25); user.setUser_email("zhangsan@sina.com"); //(2)向ModelMap中添加一个属性 model.addAttribute("currUser",user); return "/demo/user"; } @RequestMapping(value="/getUser1") public String getUser1(ModelMap model){ User user=(User)model.get("currUser"); System.out.println(user.getUser_name()); System.out.println(user.getUser_age()); System.out.println(user.getUser_email()); return "demo/user1"; }
@RequestMapping(value="/addUserInfo",method=RequestMethod.POST) @ResponseBody //将请求中的data写入UserModel对象中 public String addUserInfo(@RequestBody UserModel user){ System.out.println("user_name--------"+user.getUser_name()); System.out.println("user_sex--------"+user.getUser_sex()); System.out.println("user_age--------"+user.getUser_age()); System.out.println("user_email--------"+user.getUser_email()); System.out.println("user_title--------"+user.getUser_title()); System.out.println("user_education--------"+user.getUser_education()); System.out.println("user_telephone--------"+user.getUser_telephone()); //不会被解析为跳转路径,而是直接写入HTTP response body中 return "{}"; }}
2、spring常用注解
@Component:标准一个普通的spring Bean类。 (通用的)
@Controller:标注一个控制器组件类。
@Service:标注一个业务逻辑组件类。
@Repository:标注一个DAO组件类。
在spring未来的版本中,@Controller,@Service,@Repository会携带更多语义。尽量考虑使用@Controller,@Service,@Repository代替通用的@Component。