SpingMVC的罕用注解

1.RequestMapping注解

  • RequestMapping注解的作用是建设申请URL和解决办法之间的对应关系
  • RequestMapping注解能够作用在办法和类上

    1. 作用在类上:第一级的拜访目录
    2. 作用在办法上:第二级的拜访目录
    3. 细节:门路能够不编写 / 示意利用的根目录开始
    4. ==细节:${ pageContext.request.contextPath }也能够省略不写,然而门路上不能写/==
  • RequestMapping的属性

    1. path 指定申请门路的url
    2. value value属性和path属性是一样的
    3. mthod 指定该办法的申请形式
    4. params 指定限度申请参数的条件
    5. headers 发送的申请中必须蕴含的申请头

2.RequestParam注解

  • 把申请中的指定名称的参数传递给控制器中的形参赋值
  • 属性

    1. value:申请参数中的名称
    2. 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

  1. 申请门路一样,能够依据不同的申请形式去执行后盾的不同办法
  2. 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注解

  • 作用

    1. 呈现在办法上:示意以后办法会在控制器办法执行火线执行。
    2. 呈现在参数上:获取指定的数据给参数赋值。
  • 利用场景:当提交表单数据不是残缺的实体数据时,保障没有提交的字段应用数据库原来的数据。

润饰的办法有返回值

/*** 作用在办法,先执行* @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注解

  • 用于屡次执行控制器办法间的参数共享。
  • 属性:

    1. value:用于指定存入的属性名称
    2. 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";    }}