10. MVC 的 Handler 方法可以接受哪些 ServletAPI 类型的参数
原生的jsp中的变量参数,它们可以在函数中使用,就像在servlet中一样,可以传递参数和其他的操作
HttpServletRequest
HttpServletResponse
HttpSession
11.使用 POJO 对象绑定请求参数值
Spring MVC 会按请求参数名和 POJO 属性名进行自动匹 配,自动为该对象填充属性值。支持级联属性。 如:dept.deptId、dept.address.tel 等
即表单项中的name名字与你servlet中的类对象的参数名字相同时,它会自动匹配,完成赋值的操作,同时你没有写到的项,它会赋值为null。
12.处理模型数据
Spring MVC 提供了以下几种途径输出模型数据:
–ModelAndView: 处理方法返回值类型为 ModelAndView时, 方法体即可通过该对象添加模型数据
–Map 及 Model、ModelMap: 入参为 org.springframework.ui.Model、org.springframework.ui. ModelMap 或 java.uti.Map 时,处理
方法返回时,Map 中的数据会自动添加到模型中。
无论我们的返回值是String类型还是ModelAndView类型,SpringMVC框架执行目标Handler方法之后都会将返回值解析为ModelAndView;
我们放入到Map或者Model、ModelMap中的数据都会放入ModelAndView对象中,作为MOdel使用!
13.关于重定向
一般情况下,控制器方法返回字符串类型的值会被当成逻辑视图名处理
如果返回的字符串中带 forward: 或 redirect: 前缀 时,SpringMVC 会对他们进行特殊处理:将 forward: 和 redirect: 当成指示符,其后的字符串作为 URL 来处理
–redirect:/success.jsp:会完成一个到 success.jsp 的重定向的操作
–forward:/success.jsp:会完成一个到 success.jsp 的转发操作
可以在spingmvc配置文件中配置 <mvc:view-controller path="/j1sp" view-name="success"/>标签,就可以让我们的请求不经过Controller,直接进入另一个目标页面!
<!-- 但是此时原来访问正常的@RequestMapping URL现在却不能正常访问了,如果想正常访问,需要加入<mvc:annotation-driven>该标签-->
<mvc:annotation-driven></mvc:annotation-driven>
–@SessionAttributes:
注解,标记在类上的,将模型中的某个属性暂存到HttpSession 中,以便多个请求之间可以共享这个属性
– @ModelAttribute:
注解,用于修饰方法时,在这个类中的每个请求都会访问,方法入参标注该注解后, 入参的对象 就会放到数据模型中
用于修饰参数时,它就会将默认的对象值复制给修饰的对象,达到更新数据时不更改的数据不是空,而是原来的内容