Spring MVC控制器方法参数类型
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控制器方法参数类型的更多相关文章
- spring mvc 控制器方法传递一些经验对象的数组
由于该项目必须提交一个表单,其中多个对象,更好的方法是直接通过在控制器方法参数的数组. 因为Spring mvc框架在反射生成控制方法的參数对象的时候会调用这个类的getDeclaredConstru ...
- MVC控制器方法返回类型
控制器公开控制器操作.操作是控制器上的方法,在浏览器的地址栏中输入特定 URL 时被调用.例如,假设要请求下面的 URL: http://localhost/Product/Index/3 在这种情况 ...
- 关于一些Spring MVC控制器的参数注解总结
昨天同事问我控制器参数的注解的问题,我好久没那样写过,把参数和url一起设置,不过,今天我看了一些文章,查了一些资料,我尽可能的用我自己的理解方式来解释它吧! 1.@RequestParam绑定单个请 ...
- SpringMVC(八):使用Servlet原生API作为Spring MVC hanlder方法的参数
在SpringMVC开发中,是有场景需要在Handler方法中直接使用ServletAPI. 在Spring MVC Handler的方法中都支持哪些Servlet API作为参数呢? --Respo ...
- spring mvc:练习 @RequestParam(参数绑定到控制器)和@PathVariable(参数绑定到url模板变量)
spring mvc:练习 @RequestParam和@PathVariable @RequestParam: 注解将请求参数绑定到你的控制器方法参数 @PathVariable: 注释将一个方法参 ...
- spring mvc: 属性方法名称解析器(多动作控制器)MultiActionController/ControllerClassNameHandlerMapping/PropertiesMethodNameResolver
spring mvc: 属性方法名称解析器(多动作控制器) 加入控制器是StudentContrller.java,里面有3个方法 index,add,remove 那么访问地址是: http://l ...
- 关于laravel5.5控制器方法参数依赖注入原理深度解析及问题修复
在laravel5.5中,可以根据控制器方法的参数类型,自动注入一个实例化对象,极大提升了编程的效率,但是相比较与Java的SpringMVC框架,功能还是有所欠缺,使用起来还是不太方便,主要体现在方 ...
- SpringBoot系列: Spring MVC视图方法的补充
SpringMVC 视图方法的参数, 已经在这个文章中写得非常清楚了, 链接为 https://www.cnblogs.com/morethink/p/8028664.html 这篇文章做一些补充. ...
- spring mvc获取路径参数的几种方式 - 浅夏的个人空间 - 开源中国社区
body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...
随机推荐
- Java 使用正则表达式取出图片地址以及跳转的链接地址,来判断死链(一)
任务:通过driver的getPageSource()获取网页的源码内容,在把网页中图片链接地址和跳转的url地址进行过滤,在get每个请求,来判断是否是死链 如图: 获取网页源码中所有的href,以 ...
- python_43_移动文件指针补充
#移动文件指针补充 ''' 文件对象.seek((offset,where)) offset:移动的偏移量,单位为字节.等于正数时向文件尾方向移动,等于负数时向文件头方向移动文件指针 where:指针 ...
- 1061: [Noi2008]志愿者招募
Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 5742 Solved: 3449[Submit][Status][Discuss] Descript ...
- 洛谷 P1346 电车
这道题的关键在建图 把每一个车站看成一个点,将这个车站相连的第一个车站建立一条边权为0的边,对于它所相连的其他车站,建立边权为1的边: 这样我们可以得到一张图: 起点,终点都知道了,跑一边最短路即可 ...
- JS - Object.create(prototype)方法
用Object.create(prototype)方法创建一个对象,这个对象的原型将指向这个传入的prototype参数
- MySQL - CASE WHEN ... THEN ... ELSE ... END语句
范例: CASE WHEN p.allow_over = 1 THEN p.allow_over_capital ELSE 0 END
- Linux入门-第八周
1.用shell脚本实现自动登录机器 #!/usr/bin/expectset ip 192.168.2.192set user rootset password rootspawn ssh $use ...
- forEach 以及 IE兼容
语法 array.forEach(function(currentValue, index, arr), thisValue) 参数 参数 描述 function(currentValue, in ...
- DevOps - 配置管理 - Puppet
uppet总结 一.基础知识 1. Puppet是开源的基于Ruby的系统配置管理工具,依赖于C/S的部署架构.Puppet这样的自动化配置管理工具可以帮助系统管理员更加方便的完成多台服务器的升级软件 ...
- 搭建Nginx反向代理做内网域名转发
由于公司内网有多台服务器的 http 服务要映射到公司外网静态 IP,如果用路由的端口映射来做,就只能一台内网服务器的 80 端口映射到外网 80 端口,其他服务器的 80 端口只能映射到外网的非 8 ...