ModelAndView,Model和httpServletRequest

一、参数绑定

1.默认支持类型

springmvc中,有支持默认类型的绑定,也就是说,直接在controller方法形参上定义默认类型的对象,就可以使用这些对象。

  1. HttpServletRequest对象
  2. HttpServletResponse对象
  3. HttpSession对象
  4. Model/ModelMap对象

    在参数绑定过程中,如果遇到上面类型就直接进行绑定。也就是说,我们可以在controller的方法的形参中直接定义上面这些类型的参数,springmvc会自动绑定。这里要说明一下的就是Model/ModelMap对象,Model是一个接口,ModelMap是一个接口实现 ,作用是将Model数据填充到request域,跟ModelAndView类似。

2.简单类型的绑定

    方法形参上使用具体参数类型时,需传入参数类型完全一致才能完成参数绑定,使用@RequestParam注解,可完成不确定长参数数量的绑定

 二、传值和寻址

    Model 或者 ModelMap 只是传值,springmvc自动创建,同request,response,session,它没有寻址的功能,若要寻址,需在controller中return "静态页地址";Model传值的方法是setAttribute(key,value)

    ModelAndView与Model最大的区别是它可以寻址,也可以带值,但是springMvC不会自动帮我们创建,需要我们去new ModelAndView(); 传值方法为addObject(key,value), 寻址方法为setViewnName("静态页路径")

三、httpServletRequest

    Web服务器收到一个http请求,会针对每个请求创建一个HttpServletRequest和HttpServletResponse对象,向客户端发送数据找HttpServletResponse,从客户端取数据找HttpServletRequest.

为什么大多程序在controller中给jsp传值时使用model.addAttribute()而不使用httpServeletRequest.setAttribute()?

    事实上model数据,最终spring也是写到HttpServletRequest属性中,只是用model更符合mvc设计,减少各层间耦合。

 

参考https://blog.csdn.net/weixin_41573005/article/details/86667904

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来解释一下这段代码: ``` public ModelAndView studentLogin(StudentInfo student, HttpServletRequest request) { ModelAndView model = new ModelAndView(); // 创建一个 ModelAndView 对象 StudentInfo loginStudent = studentInfoService.getStudentByAccountAndPwd(student.getStudentAccount()); // 根据传入的学生账号和密码在数据库中查询学生信息 logger.info("学生 "+loginStudent+" 有效登录"); // 在日志中输出“学生 XX 有效登录”的信息 if(loginStudent == null || !student.getStudentPwd().equals(loginStudent.getStudentPwd())){ // 如果查询结果为空或者密码不匹配 model.setViewName("reception/suc"); // 设置返回的页面名称为 reception/suc model.addObject("success", "密码错误"); // 设置返回页面的 success 属性为 "密码错误" return model; // 返回 ModelAndView 对象 } request.getSession().setAttribute("loginStudent", loginStudent); // 在 session 中设置属性 loginStudent,并将其值设置为查询结果 model.setViewName("reception/suc"); // 设置返回的页面名称为 reception/suc model.addObject("success", "登录成功"); // 设置返回页面的 success 属性为 "登录成功" return model; // 返回 ModelAndView 对象 } ``` 整段代码的功能是一个学生登录系统,接收两个参数:`StudentInfo` 对象和 `HttpServletRequest` 对象。该方法首先通过调用 `studentInfoService.getStudentByAccountAndPwd()` 方法在数据库中查询学生信息,如果查询结果为空或者密码不匹配,则返回一个包含错误信息的 `ModelAndView` 对象;否则,在 session 中设置一个名为 `loginStudent` 的属性,并返回一个包含成功信息的 `ModelAndView` 对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值