SpringMVC五种数据提交的方式(下)

526 阅读2分钟

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

(4)请求参数名称与形参名称不一致

请求与形参中的名字不对应,可以使用

@RequestParam(value="name1",required=true)String namea来进行参数名称绑定。

image.png

(2)使用HttpServletRequest对象提取

在方法参数中声明一个request对象,使用request的getParameter()获取表单提交的数据,这样得到的数据还要手工进行数据类型的转换。

public String five(HttpServletRequest request){\
int age=new Integer(request.getParameter("stuage"));\
String name=request.getParameter("stuname");\
System.*out*.println(age+"*********"+name);\
    return "main";\
}

3. 请求参数中文乱码解决

对于前面所接收的请求参数,若含有中文,则会出现中文乱码问题。Spring 对于请求参数中的中文乱码问题,给出了专门的字符集过滤器: spring-web-5.2.5.RELEASE.jar 的org.springframework.web.filter 包下的 CharacterEncodingFilter 类。

image.png

(1)解决方案

在 web.xml 中注册字符集过滤器,即可解决 Spring 的请求参数的中文乱码问题。不过,最好将该过滤器注册在其它过滤器之前。因为过滤器的执行是按照其注册顺序进行的。

image.png

(2)源码分析

image.png

4. 处理器方法的返回值

使用@Controller 注解的处理器的方法,其返回值常用的有四种类型:

Ø 第一种:ModelAndView

Ø 第二种:String

Ø 第三种:无返回值void

Ø 第四种:返回对象类型

1.返回 ModelAndView

若处理器方法处理完后,需要跳转到其它资源,且又要在跳转的资源间传递数据,此时处理器方法返回 ModelAndView 比较好。当然,若要返回 ModelAndView,则处理器方法中需要定义 ModelAndView 对象。在使用时,若该处理器方法只是进行跳转而不传递数据,或只是传递数据而并不向任何资源跳转(如对页面的 Ajax  异步响应),此时若返回 ModelAndView,则将总是有一部分多余:要么 Model 多余,要么 View 多余。即此时返回 ModelAndView 将不合适。较少使用。