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控制器方法参数类型的更多相关文章

  1. spring mvc 控制器方法传递一些经验对象的数组

    由于该项目必须提交一个表单,其中多个对象,更好的方法是直接通过在控制器方法参数的数组. 因为Spring mvc框架在反射生成控制方法的參数对象的时候会调用这个类的getDeclaredConstru ...

  2. MVC控制器方法返回类型

    控制器公开控制器操作.操作是控制器上的方法,在浏览器的地址栏中输入特定 URL 时被调用.例如,假设要请求下面的 URL: http://localhost/Product/Index/3 在这种情况 ...

  3. 关于一些Spring MVC控制器的参数注解总结

    昨天同事问我控制器参数的注解的问题,我好久没那样写过,把参数和url一起设置,不过,今天我看了一些文章,查了一些资料,我尽可能的用我自己的理解方式来解释它吧! 1.@RequestParam绑定单个请 ...

  4. SpringMVC(八):使用Servlet原生API作为Spring MVC hanlder方法的参数

    在SpringMVC开发中,是有场景需要在Handler方法中直接使用ServletAPI. 在Spring MVC Handler的方法中都支持哪些Servlet API作为参数呢? --Respo ...

  5. spring mvc:练习 @RequestParam(参数绑定到控制器)和@PathVariable(参数绑定到url模板变量)

    spring mvc:练习 @RequestParam和@PathVariable @RequestParam: 注解将请求参数绑定到你的控制器方法参数 @PathVariable: 注释将一个方法参 ...

  6. spring mvc: 属性方法名称解析器(多动作控制器)MultiActionController/ControllerClassNameHandlerMapping/PropertiesMethodNameResolver

    spring mvc: 属性方法名称解析器(多动作控制器) 加入控制器是StudentContrller.java,里面有3个方法 index,add,remove 那么访问地址是: http://l ...

  7. 关于laravel5.5控制器方法参数依赖注入原理深度解析及问题修复

    在laravel5.5中,可以根据控制器方法的参数类型,自动注入一个实例化对象,极大提升了编程的效率,但是相比较与Java的SpringMVC框架,功能还是有所欠缺,使用起来还是不太方便,主要体现在方 ...

  8. SpringBoot系列: Spring MVC视图方法的补充

    SpringMVC 视图方法的参数, 已经在这个文章中写得非常清楚了, 链接为 https://www.cnblogs.com/morethink/p/8028664.html 这篇文章做一些补充. ...

  9. spring mvc获取路径参数的几种方式 - 浅夏的个人空间 - 开源中国社区

    body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...

随机推荐

  1. codeforce 599C Day at the Beach

    Bi表示第i个块,那么就是说Bi max ≤ Bi+1 min,又因为Bi min ≤ Bi max, 因此只要判断前缀的最大值是否小于等于后缀. #include<bits/stdc++.h& ...

  2. python_52_函数返回值2

    def test1(x,y): print(x,y) test1(1,2)#位置参数调用,按顺序来,与形参一一对应 test1(y=1,x=2)#输出为2 1,不是1 2.关键字参数调用按关键字,不按 ...

  3. AOSP常见漏洞类型简介

    Heap/Stack Overflow(CVE-2017-0541) 漏洞出现在PushcdlStack函数中,如下所示   # /external/sonivox/arm-wt-22k/lib_sr ...

  4. 关于后台获取不到HiddenField值的有关问题

    服务器加载aspx程序时,首先要执行后台cs文件中的page_load等方法中的代码,其它按钮事件等是不执行的,生成页面发送到客户端.客户端执行时会响应js脚本,提交到服务器后除了执行page_loa ...

  5. 国产中标麒麟Linux部署dotnet core 环境并运行项目 (二) 部署运行控制台项目

    背景 在上一篇文章安装dotnet core,已经安装好dotnet core了.之前只是安装成功了dotnet, 输入dotnet --info,可以确认安装成功了,但是在运行代码时,还是报错了,本 ...

  6. SQLyog点击“测试连接”后,报2058错误

    问题:安装MySQL和SQLyog之后,在SQLyog中点击“测试连接”时,报2058错误. 解决:这里要确定两个问题:1 MySQL是否配置了环境变量:2 如果配置了MySQL环境变量,那么需要在c ...

  7. css中如何把鼠标变成手

    css中鼠标放上去变成手型怎么设置:其实就是一个属性的问题, css的cursor属性 cursor:pointer; 其实这个属性我也记了很多,到现在都容易拼写错误,不过好在编辑器有提示. defa ...

  8. [牛客OI测试赛2]F假的数学游戏(斯特灵公式)

    题意 输入一个整数X,求一个整数N,使得N!恰好大于$X^X$. Sol 考试的时候只会$O(n)$求$N!$的前缀和啊. 不过最后的结论挺好玩的 $n! \approx \sqrt{2 \pi n} ...

  9. XPATH如何选择,t选取,包含某一属性的节点, 不包含某一个属性的节点?

    https://blog.csdn.net/manmanpa/article/details/56282741 //tbody/tr[@class] 包含 //tbody/tr[not(@class) ...

  10. PHP递归排序怎么实现的?

    递归算法对于任何一个编程人员来说,应该都不陌生.因为递归这个概念,无论是在PHP语言还是Java等其他编程语言中,都是大多数算法的灵魂.   对于PHP新手来说,递归算法的实现原理可能不容易理解.但是 ...