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
*/
@ModelAttribute
public 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
*/
@ModelAttribute
public 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";
}
}