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. POJ-2135 Farm Tour---最小费用最大流模板题(构图)

    题目链接: https://vjudge.net/problem/POJ-2135 题目大意: 主人公要从1号走到第N号点,再重N号点走回1号点,同时每条路只能走一次. 这是一个无向图.输入数据第一行 ...

  2. Android(java)学习笔记82:利用SpannableString设置复合文本

    1. SpannableString设置复合文本: TextView通常用来显示普通文本,但是有时候需要对其中某些文本进行样式.事件方面的设置.Android系统通过SpannableString类来 ...

  3. softmax 函数

    总结为:   将一组数变换为  总和为1,各个数为0~1之间的软性归一化结果. ========================================================= 关于 ...

  4. Optional int parameter 'fundID' is present but cannot be translated into a null value due to being declared as a primitive type

    错误的意思是: "可选的int参数'fundID'存在但由于被声明为基本类型而无法转换为空值" 意思是fundID被申明为int的基本数据类型, 不能转换为字符串的null值. 难 ...

  5. MRCA|Wright–Fisher population genetic model|SNP rate

    (Panda has a high heterozygosity rate) 通过对mtDNA(为了预测SNP的密度)的分析,可知panda的多样性,当前全基因组数据才能完全建立模型. mitocho ...

  6. 操作DOM -------JavaScrip

    本文摘要:http://www.liaoxuefeng.com/ 经常用到. 由于HTML文档被浏览器解析后就是一棵DOM树,要改变HTML的结构,就需要通过JavaScript来操作DOM. 始终记 ...

  7. 关于微信小程序 textarea组件在fixed定位的模块中随页面移动问题

    具体的情况: 在模拟器中没问题,可是在真机下就出现以下问题,  <textarea  />在一个view盒子中,view盒子是固定定位,页面滑动时候,固定定位的盒子会定在屏幕的相对位置,但 ...

  8. Android驱动开发读书笔记六

    第六章 Linux 驱动的工作和访问方式是 Linux 的亮点之一,Linux 系统将每一个驱动都映射成一个文件.这些文件称为设备文件或驱动文件,都保存在/dev目录中,由于大多数Linux驱动都有与 ...

  9. gitlab文件夹的权限不要随便给777

    gitlab  权限给到777   不一定有用

  10. centos7上基于kubernetes的docker集群管理

    kubernetes和docker的作用这里就不作介绍了,直接进入主题. 本文的目的是搭建docker集群,并使用kubernetes管理它们. 文中的软件环境除了kubernetes和docker, ...