• Spring MVC常用注解


    • @RequestMapper

      • 作用:建立请求URL和处理方法之间的对应关系

      • 注解方式

        • 作用在类上:第一级的访问目录

        • 作用在方法上:第二级访问目录

        • 细节:路径可以不使用/

      • 属性

        • value/path:指定请求的url。value="user"

        • method:指定请求的方法,如POST、GET,PUT等 。method={RequestMethod.GET}

        • params:指定请求的参数名称或者值。params={"username"}或者是params={"username=hu"},请求的地址就必须是在最后面添加?username或者是?username=hu

        • headers:指定请求的头部信息。headers={"Accept"}

    • @RequestParam

      • 作用:解决方法参数名称和前端传来的名称不一样

      • 注解方式:作用在方法参数之前

      • 属性

        • name:指定前端传来的参数名称。@RequestParam(name="name") String username

    <a href="/user?name=胡先森">胡先森</a>
    @RequestMapping(name="user")
    public String myMethod(@RequestParam(name="name") String username){
        System.out.println(username);    //huxiansen
        return "user";
    }
    • @RequestBody

      • 作用:解决post请求封装的请求体,适用于post请求

      • 注解方式:作用在方法参数之前

    <form action="/user" method="post">
        <input type="text" name="username" />
        <input type="password" name="password" />
        <input type="submit" value="提交" />
    </form>
    @RequestMapping(name="user")
    public String myMethod(@RequestBody String body){
        System.out.println(body);    //username=aaa&password=111
        return "user";
    }
    • @PathVariable

      • 作用:解决有占位符的地址

      • 注解方式:作用在方法参数之前

    <a href="/user/10">胡先森</a>
    @RequestMapping("user/{user_id}")
    public String myMethod(@PathVariable(name="user_id") String uid){
        System.out.println(uid);   //10
        return "user";
    }
    • @RequestHeader

      • 作用:获取请求的消息头中某个值

      • 注解方式:作用在方法参数之前

    @RequestMapping("user/{user_id}")
    public String myMethod(@PathVariable(name="user_id") String uid, @RequestHeader(name="Accept") String accept){
        System.out.println(uid);   //10
        System.out.println(accept);   //。。。
        return "user";
    }
    • @CookieValue

      • 作用:获取Cookie的里面相关信息值

      • 注解方式:作用在方法参数之前

    @RequestMapping("user/{user_id}")
    public String myMethod(@PathVariable(name="user_id") String uid, @RequestHeader(name="Accept") String accept, @CookieValue(name="JSESSIONID") String sessionID){
        System.out.println(uid);   //10
        System.out.println(accept);  //。。。
        System.out.println(sessionID);   //。。。
        return "user";
    }
    • @ModelAttribute

      • 作用:用于修饰方法和参数

      • 注解方式

        • 作用在方法上:表示当前方法会在控制器的方法执行之前先执行,它可以修饰没有返回值的方法,也可以修饰有返回值的方法

        • 作用在参数之前:获取指定的数据给参数赋值

      • 应用场景:当表达提交的数据不完全是实体类类型的数据时,保证没有提交数据的字段使用数据库原来的对象(后一句可以是业务需求);实体类型的数据都会全部封装,无论之前的方法怎么修改,都是表单封装的数据。

        • 作用在有返回值的方法

          <form action="/user" method="post">
              <input type="text" name="username" />
              <input type="password" name="password" />
              <input type="submit" value="提交" />
          </form>
          @RequestMapping("user")
          public String testModelAttribute(User user){
              System.out.println(user);   // user={username=huxiansen,password=111,age=1}
              return "user";
          }
          ​
          @ModelAttribute
          public User findByUsername(String username, String password){
              // username需要对应前端的传来的名称
              User user = new User();
              user.setUsername(username);
              user.setPassword(password);
              user.setAge(1);
              return user;
          }
        • 作用在没有返回值的方法,借助map集合

          @RequestMapping("user")
          public String testModelAttribute(@ModelAttribute("user") User user){
              System.out.println(user);   //user={username=huxiansen,password=111,age=1}
              return "user";
          }
          ​
          @ModelAttribute
          public void findByUsername(String username, String password, HashMap<String, User> map){
              // username需要对应前端的传来的名称
              User user = new User();
              user.setUsername(username);
              user.setPassword(password);
              user.setAge(1);
              map.put("user", user);
          }
    • @SessionAttributes

      • 作用:用于多次执行控制器方法间的参数共享

      • 属性

        • value:用于指定存入的参数名称

        • type:用于指定存入的数据类型

      <a href="/user/setSessionAttributes">设置SessionAttributes</a>
      <a href="/user/getSessionAttributes">获取SessionAttributes</a>
      <a href="/user/delSessionAttributes">删除SessionAttributes</a>
      • 点击第一个链接,会将设置的值添加到request域中,后在jsp页面使用EL表达式输出即可显现

      import org.springframework.ui.Model;
      ​
      @RequestMapping(value="user/setSessionAttributes")
      public String setSessionAttributes(Model model){
          model.addAttribute("message", "添加信息到requestScope中");
          return "success";
      }
      <h5>
          ${requestScope}   <!-- 打印request域中所有的信息 -->
      </h5>
      • 由于SessionAttributes的作用是参数共享,需要在类上添加此注解,并指定参数名称;控制台打印message值,也可以在jsp页面展现

      @Controller
      @RequestMapping(value="user")
      @SessionAttributes("message")   //将指定的值存放到session域中
      public class UserController{
          @RequestMapping(value="setSessionAttributes")
          public String setSessionAttributes(Model model){
              model.addAttribute("message", "添加信息到requestScope中");
              return "success";
          }
          
          @RequestMapping(value="getSessionAttributes")
          public String setSessionAttributes(ModelMap modelMap){
              String message = (String) modelMap.get("message");
              System.out.println(message);     // 添加信息到requestScope中
              return "success";
          }
      }
      <h5>
          ${requestScope}   <!-- 打印request域中所有的信息 -->
      </h5>
      <h5>
          ${sessionScope}   <!-- 打印session域中的信息 -->
      </h5>
      • 删除session域的值使用SessionStatus类中的setComplete方法

      import org.springframework.web.bind.support.SessionStatus;
      ​
      @Controller
      @RequestMapping(value="user")
      @SessionAttributes("message")   //将指定的值存放到session域中
      public class UserController{
          @RequestMapping(value="setSessionAttributes")
          public String setSessionAttributes(Model model){
              model.addAttribute("message", "添加信息到requestScope中");
              return "success";
          }
          
          @RequestMapping(value="getSessionAttributes")
          public String setSessionAttributes(ModelMap modelMap){
              String message = (String) modelMap.get("message");
              System.out.println(message);     // 添加信息到requestScope中
              return "success";
          }
          
          @RequestMapping(value="delSessionAttributes")
          public String delSessionAttributes(SessionStatus sessionStatus){
              //将session域中的信息删除
              sessionStatus.setComplete();
              return "success";
          }
      }
  • 相关阅读:
    《SQL Server 2000设计与T-SQL编程》
    sql语句优化 (转)
    SQL Server优化50法(转)
    (转)SQL 优化原则
    sql 锁
    后台服务标准化运营
    ReactNative For Android 框架启动核心路径剖析
    手机QQ会员H5加速方案——sonic技术内幕
    微信支付商户系统架构背后的故事
    [干货] 有了微信小程序,谁还学ReactNative?
  • 原文地址:https://www.cnblogs.com/aitiknowledge/p/12796477.html
Copyright © 2020-2023  润新知