zoukankan      html  css  js  c++  java
  • springmvc框架(四)——常用注解

    1. RequestParam注解

      1. 作用:把请求中的指定名称的参数传递给控制器中的形参赋值

      2. 属性

        1. value:请求参数中的名称

        2. required:请求参数中是否必须提供此参数,默认值是true,必须提供 (即 请求中没有该参数,则控制器不予执行对应方法)

      3. 代码如下:

    <a href="param/testRequestParam&lt;%&ndash;?username=haha&ndash;%&gt;">测试RequestParam</a>
        @RequestMapping("/testRequestParam")
        public String testRequestParam(@RequestParam(value="username",required = false)String name){
            System.out.println("执行了。。。");
            System.out.println(name);
            return "success";
        }

    2. RequestBody注解

      1. 作用:用于获取请求体的内容(注意:get方法不可以)

      2. 属性

        1. required:是否必须有请求体,默认值是true

      3. 代码如下:

        <form action="param/testRequestBody" method="port">
            姓名:<input type="text" name="username"/><br/>//输入中文后台会乱码,即使设置了utf-8编码
            年龄:<input type="text" name="age"/><br/>
            <input type="submit" value="提交"/>
        </form>
        @RequestMapping(value="/testRequestBody")
        public String testRequestBody(@RequestBody String body){
            System.out.println("执行了。。。");
            System.out.println(body);
            return "success";
        }

    3. PathVariable注解

      1. 作用:拥有绑定url中的占位符的。例如:url中有/delete/{id},{id}就是占位符

      2. 属性

        1. value:指定url中的占位符名称

      3. Restful风格的URL

        1. 请求路径一样,可以根据不同的请求方式去执行后台的不同方法

        2. restful风格的URL优点

          1. 结构清晰

          2. 符合标准

          3. 易于理解

           4. 扩展方便

      4.代码如下:

    <a href="param/testPathVariable/22">测试PathVariable</a>
        @RequestMapping(value="/testPathVariable/{id}")
        public String testPathVariable(@PathVariable(value="id") String id){
            System.out.println("执行了。。。");
            System.out.println(id);
            return "success";
        }

    4. RequestHeader注解

      1. 作用:获取指定请求头的值

      2. 属性

        1. value:请求头的名称

      3. 代码如下

    <a href="param/testRequestHeader">测试RequestHeader</a>
        @RequestMapping(value="/testRequestHeader")
        public String testRequestHeader(@RequestHeader(value="Accept") String header){
            System.out.println("执行了。。。");
            System.out.println(header);
            return "success";
        }

    5. CookieValue注解

      1. 作用:用于获取指定cookie的名称的值

      2. 属性

        1. value:cookie的名称

      3. 代码如下:

    <a href="param/useCookieValue">查询指定cookie的名称的值</a>
        @RequestMapping(value="/useCookieValue")
        public String useCookieValue(@CookieValue(value="JSESSIONID") String cookieValue) {
            System.out.println(cookieValue);
            return "success";
        }

    6. ModelAttribute注解

      1. 作用

        1. 出现在方法上:表示当前方法会在控制器方法执行前线执行。

        2. 出现在参数上:获取指定的数据给参数赋值。

      2. 应用场景

        1. 当提交表单数据不是完整的实体数据时,保证没有提交的字段使用数据库原来的数据。

      3. 具体的代码

        <form action="param/updateUser" method="post">
            姓名:<input type="text" name="name"/><br/>
            年龄:<input type="text" name="age"/><br/>
            <input type="submit" value="提交"/>
        </form>
    方式一:    
        //修饰的方法有返回值
        @ModelAttribute
        public User showUser(String name) {//参数name一定要和表单里的name一致,才能获取,
      //若表单改成username,则这里也要改成username,同时表单的username此时就不能直接封装到user里,
      //因为username和User类中的name属性不一致,只有经过showUser方法里的user.setName()才能封装进去,age同理
    System.out.println(
    "showUser执行了..."); // 模拟从数据库中查询对象 User user = new User(); user.setName(name); user.setAge(20);//这里的年龄设置是无效的,因为表单提交时已经设置了年龄 user.setDate(new Date());//这里的日期设置就是对实体数据不完整时的补充,有效 return user; } @RequestMapping("/updateUser") public String updateUser(User user){//该user对象的数据,一部分来自表单的提交数据,如name和age,一部分来自showUser方法的补充,如date System.out.println("执行了。。。"); System.out.println(user); return "success"; } 方式二: //修饰的方法没有返回值 @ModelAttribute public void showUser(String name, Map<String, User> map) { System.out.println("showUser执行了..."); // 模拟从数据库中查询对象 User user = new User(); user.setName(name); user.setAge(20); user.setDate(new Date()); map.put("one",user); } @RequestMapping("/updateUser") public String updateUser(@ModelAttribute(value="one") User user) { System.out.println("执行了。。。"); System.out.println(user); return "success"; }

     

    7.SessionAttributes注解

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

      2. 属性

        1. value:指定存入属性的名称

      3. 代码如下:

        <a href="param/testSessionAttributes">测试SessionAttribute</a>
        <a href="param/getSessionAttributes">获得SessionAttribute</a>
        <a href="param/delSessionAttributes">清空SessionAttribute</a>

    跳转后的success.jsp页面:

    <body>
        入门成功!!!<br/>
        request域中:${requestScope.username} <br/>${requestScope.age}<br/>
        session域中:${sessionScope}
    </body>

    控制器方法:

     
    @Controller
    @RequestMapping("/param")
    @SessionAttributes(value = {"username"})
    public class ParamController {
    
        @RequestMapping("/testSessionAttributes")
        public String testSessionAttribute(Model model){
            System.out.println("testSessionAttributes...");
            //底层会存储到requst域对象中
            model.addAttribute("username","小强");
            return "success";
        }
    
        @RequestMapping("/getSessionAttributes")
        public String getSessionAttribute(ModelMap modelMap){
            System.out.println("getSessionAttributes...");
            String username = (String)modelMap.get("username");
            System.out.println("姓名:"+username);
            return "success";
        }
    
        @RequestMapping("/delSessionAttributes")
        public String delSessionAttribute(SessionStatus status){
            System.out.println("delSessionAttributes...");
            //清空session
            status.setComplete();
            return "success";
        }
    
    }

    依次点击三个链接:

    后台输出:

     


     

  • 相关阅读:
    Python基础学习参考(四):条件与循环
    Python基础学习参考(三):内置函数
    Python基础学习参考(二):基本语法
    2011的最后一篇博文 写给我自己也写给你们
    前端开发面试题
    常用js操作:
    两个嵌套for循环执行顺序
    在寻找学习js的途中,又发现了好的东西!
    arcgis api for js初学
    解决为什么arcgis api for js的first map里不显示arcgis地图
  • 原文地址:https://www.cnblogs.com/churujianghudezai/p/12361186.html
Copyright © 2011-2022 走看看