• springMVC 开涛 数据绑定


    纸上得来终觉浅,绝知此事要躬行。

    一、@requestParam

    //使用方法
    URL:?username="sfp" test(@RequestParam(value="username",required="true",defaultValue="sun") String username){}

    required:

    默认为true,url中一定要有这个参数,可以改为false

    说明:url有三种形式;有defaultValue的话,required取任何值都不会报错。除此之外这两者没有任何关系

    多个值的情况

    //使用方法
    URL:?username="sfp"&username="wj"
    test(@RequestParam(value="username",required="true",defaultValue="sun") String[] username){}
    

    二、@PathVariable

    //使用方法
    url:/users/123/topics/456
    @RequestMapping(value="users/{userId}/topics/{topicId}")
    test(@PathVariable(value="userId") int userId, @PathVariable(value="topicId") int topicId){}
    

    只有value这一个参数

    三、@CookieValue

    //使用方法
    test(@CookieValue("JSESSIONID") String sessionId){}
    或者
    test(@CookieValue("JSESSIONID") Cookie sessionId){
      sessionId.getValue();  
    }
    

    三个参数同上

    四、@RequestHeader

    //使用方法
    test(@RequestHeader("User-Agent") String userAgent){}
    

    三个参数同上

    五、@ModelAttribute

    如果把@ModelAttribute放在方法的注解上时,代表的是:该Controller的所有方法在调用前,先执行此@ModelAttribute方法。

    1、

    //添加用户时
    public String add(@ModelAttribute("user") User user){}
    

    URI模板变量如何 通过@ModelAttribute 绑定到请求对象?3.1.1可以,3.0.5不可以。

    2、

    @ModelAttribute("cityList")
    public List<String> cityList() {
        return Arrays.asList("北京", "山东");
    } 
    

    以上代码 在 执行 功能方法 之前执行,给模型对象加一个cityList的属性,并赋初值。

    3、暴露@RequestMapping方法返回值为模式数据,没看懂

    4、

    模型对象匿名的话,采用如下方式

    public String test4(@ModelAttribute UserModel user, Model model)   //userModel
    public @ModelAttribute List<String> test6() //stringList
    

    5、@SessionAttributes

    //1、在控制器类头上添加@SessionAttributes注解
    @SessionAttributes(value = {"user"})    //①
    public class SessionAttributeController 
    
    //2、@ModelAttribute注解的方法进行表单引用对象的创建
    @ModelAttribute("user")    //②
    public UserModel initUser() 
    
    //3、@RequestMapping注解方法的@ModelAttribute注解的参数进行命令对象的绑定
    @RequestMapping("/session1")   //③
    public String session1(@ModelAttribute("user") UserModel user)
    
    //4、通过SessionStatus的setComplete()方法清除@SessionAttributes指定的会话数据
    @RequestMapping("/session2")   //③
    public String session(@ModelAttribute("user") UserModel user, SessionStatus status) {
        if(true) { //④
            status.setComplete();
        }
        return "success";
    } 
    

    还挺麻烦的,孔浩讲得是session.setAttribute("loginUser", u);开涛讲的是这种?该怎么选?

    数据绑定(1):不知道这些对象有什么用,先记录一下

    1、 

    ServletRequest/HttpServletRequest
    ServletResponse/HttpServletResponse
      
    

    2、

    InputStream/OutputStream
    Reader/Writer
    

    3、

    WebRequest/NativeWebRequest
    

    4、HttpSession

    5、Model,Map,ModelMap

    6、Errors/BindingResult

     

      

  • 相关阅读:
    将博客搬至CSDN
    ActiveMQ 的可持久化(六)
    ActiveMQ之协议(五)
    ActiveMQ与Spring / SpringBoot 整合(四)
    ActiveMQ之JMS及保证消息的可靠性<持久化、事务、签收>(三)
    ActiveMQ部署和代码尝试(二)
    ActiveMQ初步安装使用(一)
    Redis之哨兵机制(五)
    Redis主从复制(读写分离)(四)
    Redis持久化(三)
  • 原文地址:https://www.cnblogs.com/wang-jing/p/4565134.html
Copyright © 2020-2023  润新知