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. NOIP2018提高组Day2 解题报告

    前言 关于\(NOIP2018\),详见此博客:NOIP2018学军中学游记(11.09~11.11). \(Day2\)的题目和\(Day1\)比起来,真的是难了很多啊. \(T1\):旅行(点此看 ...

  2. 【BZOJ1833】[ZJOI2010] count 数字计数(数位DP)

    点此看题面 大致题意: 求在给定的两个正整数\(a\)和\(b\)中的所有整数中,\(0\sim9\)各出现了多少次. 数位\(DP\) 很显然,这是一道数位\(DP\)题. 我们可以用前缀和的思想, ...

  3. 在主机端和设备端进行”incrementArray“并对结果进行比较

    实验思想: 在主机端将数据初始化后传输到设备端,设备端和主机端进行同样的操作对数据加1,然后将设备端的结果传输到主机,最后核对主机端的计算结果和设备端的计算结果是否一直. // incrementAr ...

  4. oc字典放入到数组里,根据字典里的属性排序(重点)

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...

  5. Node第二天

    一.http模块: 步骤一:创建http服务器 const https = require('https'); 步骤二:const fs = require('fs'); 步骤三:创建请求=> ...

  6. mysql -u root -p 解释

    使用此命令首先确保你的mysql运行环境已经搭建好 这是客户端连接mysql服务器的指令,比较全的写法是下面两种 第一个是全拼,第二个是第一个的缩写 mysql --host=localhost -- ...

  7. vue系列之vue cli 3引入ts

    插件 Vue2.5+ Typescript 引入全面指南 vue-class-component强化 Vue 组件,使用 TypeScript/装饰器 增强 Vue 组件 vue-property-d ...

  8. 【Ecshop】将内置的 FCkeditor 更换为 UEditor

    1.下载UE,解压到includes/,更名目录名为ueditor 注意更改配置后端文件上传路径,参考文档 2.修改admin/includes/lib_main.php,添加 /** * 生成编辑器 ...

  9. 力扣题目汇总(丑数,重复N的元素,求众数)

    丑数 1.题目描述 编写一个程序判断给定的数是否为丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例 1: 输入: 6 输出: true 解释: 6 = 2 × 3 示例 2: 输入: 8 ...

  10. 学习python第二天 流程判断

    while循环age_of_Jim = 56 count = 0 #开始计数while True: #循环代码 if count ==3:#如果次数=3 break#退出 guess_age = in ...