SpingMVC的罕用注解
1.RequestMapping注解
- RequestMapping注解的作用是建设申请URL和解决办法之间的对应关系
RequestMapping注解能够作用在办法和类上
- 作用在类上:第一级的拜访目录
- 作用在办法上:第二级的拜访目录
- 细节:门路能够不编写 / 示意利用的根目录开始
- ==细节:${ pageContext.request.contextPath }也能够省略不写,然而门路上不能写/==
RequestMapping的属性
- path 指定申请门路的url
- value value属性和path属性是一样的
- mthod 指定该办法的申请形式
- params 指定限度申请参数的条件
- headers 发送的申请中必须蕴含的申请头
2.RequestParam注解
- 把申请中的指定名称的参数传递给控制器中的形参赋值
属性
- value:申请参数中的名称
- required:示意申请参数中是否必须提供此参数,默认值是true,必须提供
public String sayHello(@RequestParam(value="username",required=false)String name)
3.RequestBody注解
- 用于获取申请体的内容(留神:get办法不能够)
- 属性:required:是否必须有申请体,默认值是true
public String sayHello(@RequestBody(required=false) String body)
4.PathVariable注解
- 领有绑定url中的占位符的。例如:url中有/delete/{id},{id}就是占位符
- 属性:value:指定url中的占位符名称
public String sayHello(@PathVariable(value="id") String id)
Restful格调的URL
- 申请门路一样,能够依据不同的申请形式去执行后盾的不同办法
restful格调的URL长处
- 构造清晰
- 符合标准
- 易于了解
- 扩大不便
5.RequestHeader注解
- 获取指定申请头的值
- 属性:value:申请头的名称
public String sayHello(@RequestHeader(value="Accept") String header)
6.CookieValue注解
- 用于获取指定cookie的名称的值
- 属性:value:cookie的名称
public String sayHello(@CookieValue(value="JSESSIONID") String cookieValue)
7.ModelAttribute注解
作用
- 呈现在办法上:示意以后办法会在控制器办法执行火线执行。
- 呈现在参数上:获取指定的数据给参数赋值。
- 利用场景:当提交表单数据不是残缺的实体数据时,保障没有提交的字段应用数据库原来的数据。
润饰的办法有返回值
/*** 作用在办法,先执行* @param name* @return*/@ModelAttributepublic User showUser(String name) { System.out.println("showUser执行了..."); // 模仿从数据库中查问对象 User user = new User(); user.setName("哈哈"); user.setPassword("123"); user.setMoney(100d); return user;}/*** 批改用户的办法* @param cookieValue* @return*/@RequestMapping(path="/updateUser")public String updateUser(User user) { System.out.println(user); return "success";}
润饰的办法没有返回值
/*** 作用在办法,先执行* @param name* @return*/@ModelAttributepublic void showUser(String name,Map<String, User> map) { System.out.println("showUser执行了..."); // 模仿从数据库中查问对象 User user = new User(); user.setName("哈哈"); user.setPassword("123"); user.setMoney(100d); map.put("abc", user);}/*** 批改用户的办法* @param cookieValue* @return*/@RequestMapping(path="/updateUser")public String updateUser(@ModelAttribute(value="abc") User user) { System.out.println(user); return "success";}
ModelAttribute正文一个办法的参数
@ModelAttribute("user")public User addAccount() { return new User("jz","123");}@RequestMapping(value = "/helloWorld")public String helloWorld(@ModelAttribute("user") User user) { user.setUserName("jizhou"); return "helloWorld";}
==在这个例子里,@ModelAttribute("user") User user正文办法参数,参数user的值来源于addAccount()办法中的model属性。==
8.SessionAttribute注解
- 用于屡次执行控制器办法间的参数共享。
属性:
- value:用于指定存入的属性名称
- type:用于指定存入的数据类型。
@Controller@RequestMapping(path="/user")@SessionAttributes(value ={"username","password"},types={Integer.class})public class SessionAttributeController { /** * 把数据存入 SessionAttribute * @param model * @return * Model 是 spring 提供的一个接口,该接口有一个实现类 ExtendedModelMap * 该类继承了 ModelMap,而 ModelMap 就是 LinkedHashMap 子类 */ @RequestMapping("/testPut") public String testPut(Model model){ model.addAttribute("username", "泰斯特"); model.addAttribute("password","123456"); model.addAttribute("age", 31); //跳转之前将数据保留到 username、password 和 age 中,因为注解@SessionAttribute 中有这几个参数 return "success"; } /** *从session中获取值 *@return */ @RequestMapping("/testGet") public String testGet(ModelMap model){ System.out.println(model.get("username")+";" +model.get("password")+";"+model.get("age")); return "success"; } /** * 从session中革除值 * @return */ @RequestMapping("/testClean") public String complete(SessionStatus sessionStatus){ sessionStatus.setComplete(); return "success"; }}