SpringMVC -3- 数据的传入与传出

请求数据传入

  1. 默认获取参数的规则:
    直接给方法参数上写一个与请求参数名相同的变量, 这个变量就能获取到请求的参数
    在这里插入图片描述
  2. @RequestParam:
    获取请求参数: 默认该注解标注的参数,必须存在
    @RequestParam(“ha”)String param ===> param = request.getParameter(“ha”);
    三个属性:
    value = name : 请求参数名
    required default true: 指定该参数是否必须存在
    defaultValue : 设置默认值
  3. @RequestHeader:
    获取请求头中某个key的值:默认该注解标注的参数,必须存在
    @RequestHeader(“User-Agent”)String ss ===> String ss = request.getHeader(“User-Agent”);
    三个属性:
    value = name : 请求参数名
    required default true: 指定该参数是否必须存在
    defaultValue : 设置默认值
  4. @CookieValue:
    获取某个cookie的值
    public String test (@CookieValue(“sessionId”)String sessionId) { …
  5. POJO自动装配:
    使用 POJO 对象绑定请求参数值
    Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性值。支持级联属性
  6. 使用Servlet原生API作为参数:
    支持的参数类型:
    HttpServletRequest
    HttpServletResponse
    HttpSession
    java.security.Principal
    Locale 国际化相关的区域信息对象
    字节流:
    InputStream
    OutputStream
    字符流:
    Reader
    Writer
    直接在目标方法参数中声明, SpringMVC会自动赋值:
    @RequestMapping("/testServletAPI")
    public void testServletAPI(HttpServletRequest request,HttpServletResponse response, Writer out) throws IOException {…

响应数据传出

  1. 可以在方法处传入Map, 或者Model或者ModelMap对象,(具体实现都是 BindingAwareModelMap)
    Spring MVC 在内部使用了一个 org.springframework.ui.Model 接口存储模型数据
    Spring MVC 在调用方法前会创建一个隐含的模型对象作为模型数据的存储容器。
    如果方法的入参为 Map 或 Model 类型,Spring MVC 会将隐含模型的引用传递给这些入参。
    给这些参数里面保存的数据都会放在域中,可以在页面获取
    数据都会放在请求域中
  2. ModelAndView
    ① 控制器处理方法的返回值如果为 ModelAndView, 则其既包含视图信息,也包含模型数据信息。数据放在请求域中
    ② 添加模型数据:
    MoelAndView addObject(String attributeName, Object attributeValue)
    ModelAndView addAllObject(Map<String, ?> modelMap)
    ③ 设置视图, 即要显示的模型显示视图:
    void setView(View view)
    void setViewName(String viewName)
    new ModelAndView(viewName );
  3. @SessionAttributes:
    SpringMVC提供的一种可以临时给Session域中保存数据的方法
    @SessionAttributes(value = “msg”), 在代码中给BindingAwareModelMap, ModelAndView中保存的数据(名为"msg"), 同时给session放一份.
    ① @SessionAttributes(types=User.class) 根据类型, 将隐含模型中所有类型为 User.class 的属性添加到session中.

@ModelAttribute

  1. @ModelAttribute: 作用于方法入参
    使用@ModelAttribute指定pojo回显到页面在request中的key, 即保存在modelAndView中的key, value为标注的对象. 若model中已经存在了一个同key的值, 会先将这个值赋值给参数对象.

  2. 在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了 @ModelAttribute 的方法, 并将方法作为Mode的属性,然后再调用对应的Controller处理方法。
    标注了value值: 参数名为value, 值为方法的返回值
    未标注value值, 方法有返回值类型: 参数名为返回值类的首字母小写, 值为返回值
    未标注value值的void的方法: 参数名为void, 值为: null

字符编码处理

web.xml中配置CharacterEncodingFilter过滤器:

	<!-- 字符编码 -->
	<filter>
		<filter-name>CharacterEncodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>utf-8</param-value>
		</init-param>
		<init-param>
			<!-- forceEncoding: 包括request与response对象 -->
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值