- 浏览: 958638 次
- 性别:
- 来自: 江西上饶
文章分类
- 全部博客 (460)
- p.spring (56)
- p.maven (20)
- p.ant (17)
- p.jee (18)
- p.jse (33)
- p.ofbiz (31)
- p.软件工程 (8)
- p.struts2 (5)
- p.hibernate (5)
- linux (25)
- 设计模式 (2)
- p.javascript (11)
- 硬件 (1)
- p.jsp (2)
- p.windows批处理 (1)
- 操作系统问题 (5)
- 算法 (1)
- p.mysql (7)
- p.sql (5)
- p.c (1)
- google产品 (0)
- 内存 (1)
- p.struts (1)
- p.freemarker (7)
- p.css (4)
- p.log4j (10)
- p.html (3)
- 淘宝产品 (0)
- 其他 (3)
- 编译器 (0)
- svn (4)
- p.spring.security (11)
- 图形 (0)
- p.xml (1)
- p.ssh (0)
- p.jquery (4)
- p.jdbc (3)
- p.flex (0)
- p.c++ (0)
- p.c#Net (0)
- p.assembly (0)
- p.sqlserver (0)
- p.其他 (3)
- p.webwork (21)
- p.wap (12)
- p.cglib (1)
- p.jee服务器 (11)
- windows (2)
- p.iphone (1)
- p.java.分布式与集群 (2)
- p.ibatis (16)
- p.eclipse (5)
- 架构 (2)
- http协议 (5)
- 我的个人标准 (2)
- 多线程 (1)
- 奇怪问题 (5)
- p.jira (13)
- p.httpclient (1)
- 服务器.apache (11)
- 安全防范 (1)
- p.PODAM (1)
- p.junit (16)
- fop (2)
- 硬盘安装 (1)
- powerdesigner (0)
- 单元测试 (1)
- apache commons (4)
- tomcat+apache集群 (10)
- 各类诡辩 (1)
- 安卓 (8)
- qvod (1)
- java编程基础知识考试考点及答案 (0)
- 工作总结 (4)
- oracle (0)
- spring的util工具 (3)
- json (2)
- maven (3)
- jms (19)
- p.bat (3)
- hadoop (2)
- git (3)
- nginx (1)
- p.移动开发 (1)
- shiro (3)
- 游戏破解 (1)
- react-native (7)
- ios开发 (1)
- webmagic (6)
- socks5 (1)
最新评论
-
weituotian:
说的不好,没人看的
公司系统中的菜单功能和权限功能 -
石不易:
非常详细的注解~
绑定端口和IP,Listen 与VirtualHost指令 -
spring_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
spring mvc -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装 -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装
在springmvc的参数解析中,发现具有@ModelAttribute 注解,那么最后会进入方法:
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveModelAttribute
该方法的代码是:
private WebDataBinder resolveModelAttribute(String attrName, MethodParameter methodParam,
ExtendedModelMap implicitModel, NativeWebRequest webRequest, Object handler) throws Exception {
// Bind request parameter onto object...
String name = attrName;
if ("".equals(name)) {
name = Conventions.getVariableNameForParameter(methodParam);
}
Class<?> paramType = methodParam.getParameterType();
Object bindObject;
if (implicitModel.containsKey(name)) {
bindObject = implicitModel.get(name);
}
else if (this.methodResolver.isSessionAttribute(name, paramType)) {
bindObject = this.sessionAttributeStore.retrieveAttribute(webRequest, name);
if (bindObject == null) {
raiseSessionRequiredException("Session attribute '" + name + "' required - not found in session");
}
}
else {
bindObject = BeanUtils.instantiateClass(paramType);
}
WebDataBinder binder = createBinder(webRequest, bindObject, name);
initBinder(handler, name, binder, webRequest);
return binder;
}
可以看到,对于这种参数,
1.如果发现modelMap中不存在这个对象,那么,会自动创建这个对象。创建完之后,进入下一步
2.如果已经存在,进入下一步。
这里的下一步处理,可以发现就算请求参数有一个名字刚好和这个参数名相同也不会处理,因为之后springmvc只会处理这个对象的子属性,而不会再次处理它自己了。
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveModelAttribute
该方法的代码是:
private WebDataBinder resolveModelAttribute(String attrName, MethodParameter methodParam,
ExtendedModelMap implicitModel, NativeWebRequest webRequest, Object handler) throws Exception {
// Bind request parameter onto object...
String name = attrName;
if ("".equals(name)) {
name = Conventions.getVariableNameForParameter(methodParam);
}
Class<?> paramType = methodParam.getParameterType();
Object bindObject;
if (implicitModel.containsKey(name)) {
bindObject = implicitModel.get(name);
}
else if (this.methodResolver.isSessionAttribute(name, paramType)) {
bindObject = this.sessionAttributeStore.retrieveAttribute(webRequest, name);
if (bindObject == null) {
raiseSessionRequiredException("Session attribute '" + name + "' required - not found in session");
}
}
else {
bindObject = BeanUtils.instantiateClass(paramType);
}
WebDataBinder binder = createBinder(webRequest, bindObject, name);
initBinder(handler, name, binder, webRequest);
return binder;
}
可以看到,对于这种参数,
1.如果发现modelMap中不存在这个对象,那么,会自动创建这个对象。创建完之后,进入下一步
2.如果已经存在,进入下一步。
这里的下一步处理,可以发现就算请求参数有一个名字刚好和这个参数名相同也不会处理,因为之后springmvc只会处理这个对象的子属性,而不会再次处理它自己了。
发表评论
-
Spring 定时任务,cron表达式,@Scheduled cron表达式
2016-04-25 15:48 5296一个cron表达式有至少6 ... -
spring mvc list
2015-12-14 10:28 1285我使用这样无法传入 @requestMapping(" ... -
Unable to locate Spring NamespaceHandler for XML schema namespace
2015-09-23 14:00 2322org.springframework.beans.facto ... -
关于使用s.url jstl的上下文
2015-08-16 13:28 918比如 [@s.url '/'/]index.html?cote ... -
Spring 属性占位符配置器 PropertyPlaceholderConfigurer
2015-08-02 12:43 2082<!-- 属性配置文件读 ... -
FactoryBean接口
2014-09-30 14:05 908实现了FactoryBean接口的bean不是简单的一个bea ... -
国际化之MessageSourceAware和MessageSourceAccessor
2014-01-06 23:13 2855先看接口MessageSourceAware 该接口的注释中 ... -
spring 惯例优先原则
2013-07-22 09:46 1212惯例优先原则(convention over configur ... -
ant path匹配
2013-07-22 09:40 2174spring和ant path实现相关的主要类有两个 org. ... -
util包
2012-12-05 13:50 1108spring的util基本上都在springframework ... -
url,请求相关帮助类UrlPathHelper
2012-11-29 11:18 2519org.springframework.web.util.Ur ... -
整站国际化方案
2012-11-28 17:46 1109当前常见的实现方式,主要由两种方案实现 1.通过locale ... -
spring的三种注入方式
2012-11-20 17:30 18671.通过bean的property子元 ... -
spring AnnotationUtils 注解工具
2011-12-08 11:27 1303spring AnnotationUtils 注解工具 -
GenericCollectionTypeResolver,用于获取list或者map等元素的类型
2011-12-07 16:17 1311GenericCollectionTypeResolver,用 ... -
属性编辑器
2011-12-05 18:19 1079我自定义了一个类型,然后设置了一个属性编辑器,注册的class ... -
iframe下面的session问题
2011-12-04 19:52 5320在写iframe完成长连接获取上传状态的时候,有两次请求,一次 ... -
mvc之类的驱动原理
2011-12-01 09:34 1097<mvc:annotation-driven /> ... -
Couldn't access current invocation
2011-10-20 20:44 1895做了一个aop的日志记录器,但是在运行的时候出现了日志信息 服 ... -
DEBUG -- CLOSE BY CLIENT STACK TRACE
2011-10-20 10:28 27637在单元测试测试环境下主要参数两个错误信息: 1.java.la ...
相关推荐
《Spring In Action: SpringMVC 提交表单详解》 在Web开发中,SpringMVC作为Spring框架的一部分,是处理HTTP请求和响应的强大工具。它为开发者提供了构建高性能、易于测试的Web应用程序的结构。本篇文章将深入探讨...
与Ajax类似,你需要一个控制器方法来接收这些参数。这次,Spring MVC会自动将它们映射到一个列表中。 ```java @PostMapping("/saveForm") public String saveForm(@ModelAttribute("items") List<Item> dataList) {...
本教程将详细解释如何通过URL地址传递对象参数给Action,即控制器方法,主要关注`@ModelAttribute`注解的使用。 1. **对象作为参数** 在传统的HTTP请求中,我们通常通过URL查询字符串或POST请求体来传递简单的键值...
@Controller 注解的主要作用是注册所写的 Controller 类,添加了@Controller 注解的类就可以担任控制器(Action)的职责,不使用注解,定义 SpringMVC 的控制类,则要继承 Spring 的 Controller 接口,如:...
在Spring框架中,MVC(Model-View-Controller)模式是构建Web应用程序的常用方法,它将业务逻辑、用户界面和应用控制分离,使得代码更易于维护和扩展。本篇文章将深入探讨Spring MVC中关于数据绑定和数据校验的知识...
SpringMVC支持自动绑定请求参数到控制器方法的参数中,例如: ```java @RequestMapping("/user") public String getUser(@RequestParam("name") String name, Model model) { model.addAttribute("name", name); ...
1. **控制器**:SpringMVC中的控制器是单例模式,而Struts2中的Action是多例模式。 2. **参数绑定**:SpringMVC支持直接的参数绑定,而Struts2需要通过ActionForm来绑定参数。 3. **异常处理**:SpringMVC通过统一的...
在Controller中,可以通过方法参数来接收这些数据。例如,可以定义一个接受`MyPojo`类型参数的方法来处理提交的数据。 ```java @RequestMapping(value = "/submit", method = RequestMethod.POST) public String ...
然后,我们需要在控制器方法中加入`@ModelAttribute`注解,明确指定参数与模型之间的映射关系: ```java @RequestMapping("/test.action") public void test(@ModelAttribute("account") Account account, @...
#### 六、SpringMVC与Struts2的区别 1. **配置方式**:SpringMVC倾向于使用声明式编程,通过注解或XML配置来管理控制器;而Struts2则更依赖于XML配置文件。 2. **请求处理机制**:SpringMVC采用单例模式管理控制器,...
在上述代码中,`@RequestParam`注解用于从请求中提取特定的参数并将其绑定到方法参数上。 #### 2. 模型属性 **1.** 除了使用`@RequestParam`,还可以使用`@ModelAttribute`来将前端提交的数据绑定到模型对象上。...
- **@ModelAttribute**:用于方法参数或返回值,表示该方法的结果应该添加到模型中。 #### 七、SpringMVC与Struts的区别 - **学习曲线**:SpringMVC相对简单,易于学习;而Struts有一定的学习门槛。 - **灵活性**...
在实际开发中,开发者会通过注解如 `@RequestMapping` 来指定 URL 映射,`@RequestParam` 获取请求参数,`@ModelAttribute` 绑定模型数据,`@PathVariable` 获取路径变量,以及使用 `@Autowired` 自动注入依赖等。...
- **请求头映射**:使用@RequestHeader注解可以从请求头中获取值并绑定到控制器方法的参数上。 #### 五、处理模型数据 - **模型数据传递**:控制器可以通过Model或ModelAttribute对象向视图传递数据,这些数据将...
2. **Spring自动注入**:Spring MVC框架支持自动将请求参数映射到控制器方法的参数上,只要参数名与表单字段的name属性相匹配。例如: ```java @RequestMapping("/login.do") public String login...
如果默认的自动绑定方式无法满足需求,例如,请求参数的格式与预期的Set元素类型不匹配,那么可以注册一个自定义的`Converter`。Spring MVC提供了`Converter`接口,允许我们自定义类型转换逻辑。通过实现该接口并...
这里,`@ModelAttribute("user")`注解将HTTP请求中的数据绑定到`User`对象,而`BindingResult`参数则用于存储验证错误信息。 然后,我们需要讨论数据验证。Spring MVC提供了一种强大的基于注解的数据验证机制,通过...
**SpringMVC_3_方法入参**(共41页):该章节详细讲解了如何在控制器的方法中接收不同的参数类型,例如原始类型、POJO对象、HTTP请求对象等,并且会介绍如何使用SpringMVC提供的各种注解来实现这些功能。 **...
标题中的“spring学习:spring mvc在redirect请求中传递数据”揭示了本次讨论的核心主题,即如何在Spring MVC框架中处理重定向(redirect)请求时传递数据。这涉及到Spring MVC的请求转发和重定向概念,以及如何在...
- @RequestParam、@PathVariable:从请求参数中获取数据。 - @ModelAttribute:用于将对象绑定到请求或模型中,支持数据验证。 5. **异常处理** - @ExceptionHandler:自定义异常处理,提供统一的错误反馈。 - ...