Spring MVC控制器方法参数类型
2016-08-20 10:44
405 查看
HttpServletRequest
Spring会自动将 Servlet API 作为参数传过来
HttpServletResponse
InputStream
相当于request.getInputStream() 获取请求区内容字节流
OutputStream
相当于request.getOutputStream() 获取响应区内容字节流
Reader
request.getReader()
Writer
request.getWriter()
注意InputStream/OutputStream不能与Reader/Writer混用
WebRequest
提供了统一的访问请求数据的接口(参数区、请求头区,但不能访问Cookie区)
NativeWebRequest
继承WebRequest,提供本地Servelt API
webRequest.getParameter(“test”)
webRequest.setAttribute(“key”,”value”,WebRequest.SCOPE_REQUEST);作用域范围
webRequest.getAttribute(“key”,WebRequest.SCOPE_REQUEST)
request = nativeWebRequest.getNativeRequest(HttpServletRequest.class)
response = nativeWebRequest.getNativeResponse(HttpServletResponse.class)
HttpSession
Spring MVC自动将Servlet API的session传递过来
命令对象
就是带有setter方法的普通类,用于接收表单参数
Map map, Model model, ModelMap modelMap
这三个参数能够暴露控制器中的模型,用于页面的数据渲染
@RequestMapping("exposeModelData.do") public String testExposeModelData(Map<String,String> map, Model model, ModelMap modelMap){ DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); Date date = new Date(); map.put("key1","value1"+dateFormat.format(date)); model.addAttribute("key2","value2"+dateFormat.format(date)); modelMap.addAttribute("key3","value3"+dateFormat.format(date)); return "exposeModelData"; }
<table> <thead><h2>显示控制器暴露的模型数据</h2></thead> <tbody> <tr> <td>Map</td> <td><c:out value="${key1}"/></td> </tr> <tr> <td>Model</td> <td><c:out value="${key2}"/></td> </tr> <tr> <td>ModelMap</td> <td><c:out value="${key3}"/></td> </tr> </tbody> </table>
页面上可以这样获取数据
其实,Map、Model、ModelMap三者是同一个对象,都是 BindingAwareModelMap 的实例
Errors
错误对象,建议错误对象紧跟在命令对象后(这点在Spring3.1之前是强制规定)
Locale
本地对象,等价于 ServletRequest.getLocale
@RequestParam注解过的对象
如 @RequestParam String username,则自动从请求中获取参数名为username的值,也可以指定参数名,@RequestParam("username"),也可以指定是否必须?默认值是多少?
@RequestParam(value = "pageName",required = true,defaultValue = "testModelValueUI")
默认值除了可以是具体的值外,也可以是SpEL表达式。如 #{systemProperties['java.vm.version']}
如果请求中包含了同名参数,则一般使用数组或列表来接收
<td><input type="checkbox" name="cbx" value="1"/></td> <td><input type="checkbox" name="cbx" value="2"/></td> <td><input type="checkbox" name="cbx" value="3"/></td> <td><input type="checkbox" name="cbx" value="4"/></td> <td><input type="checkbox" name="cbx" value="5"/></td> <td><input type="checkbox" name="cbx" value="6"/></td>
@RequestMapping("testRequestParam.do") public String testRequestParam(@RequestParam String[] cbx){ for (String cb:cbx) System.out.println(cb); return "requestParam"; }
@ModelAttribute 放在处理请求的方法参数上,绑定的命令对象
如果将 @ModelAttribute 添加到了方法上(不是参数位置),则暴露返回对象用于页面渲染(注意,这个方法不是功能方法,应该是被Controller调用的方法(我觉得这没啥用))
如果将 @ModelAttribute 放在了返回值上,则暴露返回值给页面
@SessionAttribute 绑定命令对象到session,一般用于多个页面的连续请求
@Value注解,用于将一个SpEL表达式的值绑定到处理方法参数上
@Value("#{systemProperties[java.vm.version]}")
相关文章推荐
- spring mvc 注解访问控制器以及接收form数据的方式,包括直接接收日期类型及对象的方法
- 找到多个与名为“HOME”的控制器匹配的类型。如果为此请求(“{CONTROLLER}/{ACTION}/{ID}”)提供服务的路由在搜索匹配此请求的控制器时没有指定命名空间,则会发生此情况。如果是这样,请通过调用含有“NAMESPACES”参数的“MAPROUTE”方法的重载来注册此路由。
- MVC如何避免控制器方法接收到的值不能被转换为参数类型
- Spring MVC-控制器(Controller)-参数方法名称解析器(Parameter Method Name Resolver )示例(转载实践)
- Spring Boot系列九 spring mvc的@RequestMapping支持的方法参数类型和返回类型
- C#中方法参数的四种类型_C#教程
- 反射技术动态调用方法中的引用类型参数传递 (转)
- C#中方法的参数有四种类型:
- 问题(怎样在dephi中引用.net中定义的类.方法参数,参数类型为XMLdocument?我要调用此方法并把实例花的xmldocument类型的变量作为参数给它。)
- C#方法中的params参数类型
- 二十四:声明方法的参数类型
- C#中方法参数的四种类型_C#教程
- C#中方法参数的四种类型
- C#中引用类型做方法参数时,加ref或out,与不加ref或out到底有什么区别?
- (教学思路 C#之类三)方法参数类型(ref、out、parmas)
- C#中方法参数类型
- 类型的设计--方法:构造器、操作符、转换操作符和参数
- [转]ASP.NET 2.0 AJAX中Webservice调用方法示例 (包含参数类型为DataTable的WS方法)
- C#中方法参数的四种类型
- [转]ASP.NET 2.0 AJAX中Webservice调用方法示例 (包含参数类型为DataTable的WS方法)