zoukankan      html  css  js  c++  java
  • springmvc注解

     <!-- 配置handerAdapter  适配器 -->

    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>

    <!-- 默认的注解映射的支持 -->  

            <mvc:annotation-driven /> 

    <!-- spring容器扫描指定包下的所有类,如果类上有注解  那么根据注解产生相应bean对象已经映射信息 -->

            <context:component-scan base-package="cn.sxt.controller"/>

    1、 SessionAttributes:

        ModelMap 中的哪些属性需要转存到 session 中,以便下一个请求属对应的 ModelMap 的属性列表中还能访问到这些属性。

            这一功能是通过类定义处标注 @SessionAttributes 注解来实现的

    @SessionAttributes("user"),向session写入user
    只能放在类上,将requestcope的数据备到session

    1
    2
    3
    4
    5
    6
    7
    8
    @SessionAttributes("user")
    public class LoginController {
        @RequestMapping("/login.do")
        public String loginUser(String name,ModelMap map){
            //如果@SessionAttributes有modelmap中的key,那么会将值设置到session中
            map.addAttribute("user", name);
            return "forward:/WEB-INF/jsp/index.jsp";
        }

    2、@ModelAttribute:

            方法体上:

            先逐个调用在方法级上标注了
            @ModelAttribute 的方法,然后将该模型参数放入doHello4()函数的Map参数中

            参数上:

            SpringMVC先从模型数据中获取对象,再将请求参数绑定到对象中,再传入形参,并且数据模型中的对象会被覆盖。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    @ModelAttribute("user1")
       public User getUser() {
           User user = new User();
           user.setId(1L);
           user.setName("jjjj");
           user.setPassword("iiiii");
           return user;
     
       }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @RequestMapping(value = "hello7")
       public ModelAndView doHello6(
               @ModelAttribute("user1")
                       User user, ModelAndView modelAndView) {
     
     
           System.out.println(user + ":hello7");
           modelAndView.setViewName("redirect:/hello/hello4.do");
           return modelAndView;
       }
    1
    2
    @DateTimeFormat(pattern="yyyy-MM-dd")
    private Date birthday;

    3、Controller类:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    @Controller
    public class HellController {
     
        //通过使用@RequestMapping 注解 可以指定请求的url�?映射到该方法�?
    //  @RequestMapping(value="/hi.do")
        @RequestMapping("/helo.do")
        public ModelAndView hello(){
            System.out.println("dsf");
            ModelAndView mv = new ModelAndView();
            mv.setViewName("hell");
            mv.addObject("msg""annotation ssindddmc-");
            return mv;
        }
     
    //public class HellController {
        @RequestMapping("helo1.do")
        public ModelAndView show2(HttpServletRequest req){
            System.out.println("dddf");
            req.setAttribute("msg""req携带参数");
            return new ModelAndView("hell");
        }
    }

    4、RequestBody,实体对象的json作为参数

    @RequestBody 注解则是将 HTTP 请求正文插入方法中
    实体反序列化过程

    application/json或者是application/xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @RequestMapping(value="/body.do",method = RequestMethod.POST,consumes = "application/json")
        //将会把返回值 转换为json对象
        @ResponseBody
        public List<User> json(@RequestBody User user){//post传参:raw格式json。{"name":"f","id":23,"age":3}
            List<User> list = new ArrayList<User>();
            list.add(new User(1,"zhansan",22));
            list.add(user);
    //      return "forward:index1.jsp";
            return list;
        }

            

       ${user }<br>

        ${user.get(0).name}<br>

        ${user[0].id}

    4、ResponseBody,
    实体序列化过程
    可定以在类上,即RestController
    返回json

    @Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用

    在使用 @RequestMapping 后,返回值通常解析为跳转路径,加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @RequestMapping(value="/json.do",method = RequestMethod.GET)
    @ResponseBody
    //将会把返回值 转换为json对象
    public List<User> json(){
        List<User> list = new ArrayList<User>();
        list.add(new User(1,"zhansan",22));
        list.add(new User(2,"wangwu",21));
        list.add(new User(3,"zhaosi",33));
        return list;
    }

    5、@RequestMapping 后,返回值通常解析为跳转路径


    6 、@ControllerAdvice,处理异常

    @PathVariable绑定URI模板变量值

    1
    2
    3
    @RequestMapping("/{userId}/ac.do")
    public ModelAndView ac(@RequestParam(value="username", required=true, defaultValue="zhang") String a,
            @PathVariable(value="userId") String userId){



    @RequestParam使用示

    相当于request.getParameter(“参数名”)

    1
    2
    3
    4
    5
    6
    public ModelAndView hello(@RequestParam(value="ids", required=true, defaultValue="111") Integer id,Model map){
            System.out.println("id=="+id);
    //      return null;
            map.addAttribute("id", id);
            return new ModelAndView("hello");
        }

    @RequestHeader用于将请求的头信息区数据映射到功能处理方法的参数上

    @ModelAttribute绑定请求参数到命令对象

    @CookieValue用于将请求的Cookie数据映射到功能处理方法的参数上

    @Value用于将一个SpEL表达式结果映射到到功能处理方法的参数上

    @Valid在参数类上和@NotEmpty在实体上,控制参数不为空。

  • 相关阅读:
    【PTA】6-11 先序输出叶结点 (15分)
    【PTA】6-10 二分查找 (20分)
    【PTA】6-9 二叉树的遍历 (25分)
    【PTA】6-8 求二叉树高度 (20分)
    【PTA】6-7 在一个数组中实现两个堆栈 (20分)
    【PTA】6-6 带头结点的链式表操作集 (20分)
    【PTA】6-5 链式表操作集 (20分)
    【PTA】6-4 链式表的按序号查找 (10分)
    【PTA】6-3 求链式表的表长 (10分)
    Meteva——让预报检验不再重复造轮子
  • 原文地址:https://www.cnblogs.com/shuchen007/p/9175269.html
Copyright © 2011-2022 走看看