SpringMVC框架的细节

81 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第22天,点击查看活动详情

SpringMVC框架的细节 - 处理器中的方法可以定义的参数

处理器中的方法可以定义的参数

(1)和web开发相关的对象

可以在控制器方法中直接接受web开发相关的对象,来完成web开发相关的功能

  • HttpServletRequest
  • HttpServletResponse
  • HttpSession
  • WebRequest

WebRequest对象相当于是HttpServletRequest和HttpSession对象的合体,同时提供了HttpServletRequest和HttpSession对象中所具有的方法。

(2)和模型对象相关的

  • ModelAndView对象
  • Model对象
  • Map对象
  • ModelMap对象

(3)请求参数相关的

  • A 处理器方法可以通过定义HttpServletRequest对象来获取请求参数
  • B 处理器方法可以定义方法的参数名和请求参数名一致的方式,用来获取请求参数。
  • C 处理器方法定义的参数名和请求参数名不一致的情况,可以使用 @RequestParam注解来获取请求参数传递过来的值。
  • D 请求参数中有多个同名的参数的情况,既可以使用字符串数组的方式接收,也可以使用字符串的方式接收。
  • E 处理器的方法可以接收参数,并自动封装到javabean中。
  • F 处理器的方法接收参数,javabean包含其它javabean的情况

(4)请求参数中中文乱码问题

  • 方法1:request.setCharacterEncoding(“utf-8”) 此方法必须用在获取任何请求参数之前 此方法只针对Post提交有效
  • 方法2:修改tomcat服务器的server.xml中的配置
<Connection port=”8080”...  URIEncoding=”UTF-8”/>

此方法只针对于Get提交有效

  • 方法3:手动编码解决乱码问题
byte[] data=str.getByte(“iso8859-1”);
str=new String(data,”utf-8”)

此方法对Get和Post都有效,每个参数都需要手动编码处理太麻烦

  • 方法4;Spring框架提供了过滤器处理乱码,只针对Post提交有效

SpringMVC框架的细节 – 作用域属性

@RequestAttribute

用在处理器方法参数中 用来从request域中获取指定名称属性的属性值

@SessionAttribute

用在处理器方法参数中 用来从session域中获取指定名称属性的属性值

SpringMVC框架的细节 – Cookie技术

@CookieValue

用在处理器方法参数中 用来从Cookie中获取指定名称的Cookie值

SpringMVC框架的细节 - 处理器方法的返回值类型

(1)ModelAndView返回值类型

返回一个ModelAndView对象,在其中封装Model和View信息

(2)字符串返回值类型

A 普通字符串类型:返回的字符串将作为视图名来使用 B forward组成的字符串类型:通过返回forward:/xxx格式的字符串表明要转发的指 定地址 C redirect组成的字符串类型:通过返回redirect:/xxx格式的字符串表示要重定向 的地址

(3)void返回值类型

如果返回值类型是void,则SpringMVC框架会采用默认视图名来作为当前请求视图名称来使用。 默认路径:/WEB-INF/jsp/处理器上的@RequestMapping映射地址/处理器方法上的@RequestMapping的映射地址.jsp的页面地址

(4)其它返回值类型

除以上之外返回的任何内容都会被存入模型对象中供后续使用; 值为返回的数据,键为返回类型首字母转小写; 而返回的视图名是默认视图名,即等同于返回值为void时的视图名