- 浏览: 633216 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (820)
- java开发 (110)
- 数据库 (56)
- javascript (30)
- 生活、哲理 (17)
- jquery (36)
- 杂谈 (15)
- linux (62)
- spring (52)
- kafka (11)
- http协议 (22)
- 架构 (18)
- ZooKeeper (18)
- eclipse (13)
- ngork (2)
- dubbo框架 (6)
- Mybatis (10)
- 缓存 (28)
- maven (20)
- MongoDB (3)
- 设计模式 (3)
- shiro (10)
- taokeeper (1)
- 锁和多线程 (3)
- Tomcat7集群 (12)
- Nginx (34)
- nodejs (1)
- MDC (1)
- Netty (7)
- solr (15)
- JSON (8)
- rabbitmq (32)
- disconf (7)
- PowerDesigne (0)
- Spring Boot (31)
- 日志系统 (6)
- erlang (2)
- Swagger (3)
- 测试工具 (3)
- docker (17)
- ELK (2)
- TCC分布式事务 (2)
- marathon (12)
- phpMyAdmin (12)
- git (3)
- Atomix (1)
- Calico (1)
- Lua (7)
- 泛解析 (2)
- OpenResty (2)
- spring mvc (19)
- 前端 (3)
- spring cloud (15)
- Netflix (1)
- zipkin (3)
- JVM 内存模型 (5)
- websocket (1)
- Eureka (4)
- apollo (2)
- idea (2)
- go (1)
- 业务 (0)
- idea开发工具 (1)
最新评论
-
sichunli_030:
对于频繁调用的话,建议采用连接池机制
配置TOMCAT及httpClient的keepalive以高效利用长连接 -
11想念99不见:
你好,我看不太懂。假如我的项目中会频繁调用rest接口,是要用 ...
配置TOMCAT及httpClient的keepalive以高效利用长连接
这次改造了下框架,把控制器的API全部REST化,不做不知道,SpringMVC的REST有各种坑让你去跳,顺利绕过它们花了我不少时间,这次来提下SpringMVC的PUT提交参数为null的情况。
照常先贴出我的控制器代码,没什么特别的,就是打印出接受到的前台参数值:
很常规的PUT控制器,用来修改原有的记录,原有的的web.xml中,我只添加了一个和REST涉及的过滤器
org.springframework.web.filter.HiddenHttpMethodFilter
这个因为大多数人都知道它的作用,这里再啰嗦提一下:
浏览器form表单只支持GET与POST请求,而DELETE、PUT等method并不支持,spring3.0添加了一个过滤器,可以将这些请求转 换为标准的http方法,使得支持GET、POST、PUT与DELETE请求,该过滤器为HiddenHttpMethodFilter,只需要在表单中添加一个隐藏字段"_method"
下边我们来看下,运行的结果,我会在我的前台发起一个PUT请求作为案例,
id参数顺利的获取到了,因为它其实是由@PathVariable获取的,这个没有什么问题,但是http body中提交的参数值isform却为null,查询了一番,原因是:
如果是使用的是PUT方式,SpringMVC默认将不会辨认到请求体中的参数,或者也有人说是Spirng MVC默认不支持 PUT请求带参数,
解决方案也很简单,就是在web.xml中把原来的过滤器改一下,换成org.springframework.web.filter.HttpPutFormContentFilter
在更改之后我们继续一下刚才的案例,发送一个PUT请求,参数基本都不变
ok,现在已经可以成功的获取并打印出前台的参数。
参考:http://my.oschina.net/buwei/blog/191942
照常先贴出我的控制器代码,没什么特别的,就是打印出接受到的前台参数值:
/** * 配置项的更新 * * @param configId * @param value * * @return */ @RequestMapping(value = "/item/{configId}", method = RequestMethod.PUT) @ResponseBody public JsonObjectBase updateItem(@PathVariable long configId, String value) { // 业务校验 configValidator.validateUpdateItem(configId, value); LOG.info("start to update config: " + configId); // // 更新, 并写入数据库 // String emailNotification = ""; emailNotification = configMgr.updateItemValue(configId, value); // // 通知ZK // configMgr.notifyZookeeper(configId); return buildSuccess(emailNotification); }
很常规的PUT控制器,用来修改原有的记录,原有的的web.xml中,我只添加了一个和REST涉及的过滤器
org.springframework.web.filter.HiddenHttpMethodFilter
<filter> <filter-name>HttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>HttpMethodFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
这个因为大多数人都知道它的作用,这里再啰嗦提一下:
浏览器form表单只支持GET与POST请求,而DELETE、PUT等method并不支持,spring3.0添加了一个过滤器,可以将这些请求转 换为标准的http方法,使得支持GET、POST、PUT与DELETE请求,该过滤器为HiddenHttpMethodFilter,只需要在表单中添加一个隐藏字段"_method"
<form action="..." method="post"> <input type="hidden" name="_method" value="put" /> ...... </form>
下边我们来看下,运行的结果,我会在我的前台发起一个PUT请求作为案例,
id参数顺利的获取到了,因为它其实是由@PathVariable获取的,这个没有什么问题,但是http body中提交的参数值isform却为null,查询了一番,原因是:
如果是使用的是PUT方式,SpringMVC默认将不会辨认到请求体中的参数,或者也有人说是Spirng MVC默认不支持 PUT请求带参数,
解决方案也很简单,就是在web.xml中把原来的过滤器改一下,换成org.springframework.web.filter.HttpPutFormContentFilter
<filter> <filter-name>HttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class> </filter> <filter-mapping> <filter-name>HttpMethodFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
在更改之后我们继续一下刚才的案例,发送一个PUT请求,参数基本都不变
ok,现在已经可以成功的获取并打印出前台的参数。
参考:http://my.oschina.net/buwei/blog/191942
发表评论
-
TransactionalEventListener注解
2021-07-04 12:14 1119TransactionalEventListener注解 记 ... -
Spring核心之bean
2021-06-16 13:49 216Spring Aop介绍 AOP,确实难,会让很多人懵逼 ... -
不使用@EnableTransactionManagement注解就能使用事务
2021-06-13 11:03 477https://blog.csdn.net/weixin_38 ... -
spring4.1.8扩展实战之三
2019-01-03 23:35 415spring4.1.8扩展实战之三:广播与监听 https:/ ... -
Spring装配Bean的过程
2018-03-22 20:40 351(spring-第1回【IoC基础篇】)Spring容器中Be ... -
第三章 DispatcherServlet详解 ——跟开涛学SpringMVC
2018-03-20 19:54 484http://jinnianshilongnian.iteye ... -
Spring事件机制
2017-10-26 22:56 347Spring事件机制的简单例子 http://blog.cs ... -
Spring3.1新属性管理API:PropertySource、Environment、Profile
2017-09-06 20:17 433http://jinnianshilongnian.iteye ... -
FactoryBean的实现原理与作用
2017-09-05 20:50 0FactoryBean的实现原理与作用 http://blog ... -
@Inject和@Autowired以及@Resource区别
2017-08-21 15:52 731@value 注解配置默认值 但是,如果配置文件中没有设置 n ... -
通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
2017-08-02 09:51 547关于在spring 容器初始化 bean 和销毁前所做的操作 ... -
Spring HttpInvoker远程调用的例子
2017-07-20 19:42 407http://blog.csdn.net/liuhui_306 ... -
spring 获取bean的几种方式
2017-07-20 17:36 404http://www.cnblogs.com/luoluosh ... -
一句话概括下spring框架及spring cloud框架主要组件
2017-07-19 16:56 44作为java的屌丝,基本上 ... -
AOP日志,记录调用类、方法、方法参数名称、方法参数值(包括对象和基本类型)
2017-07-15 19:15 2243http://blog.csdn.net/paincupid/ ... -
spring mvc Controller中使用@Value无法获取属性值
2017-06-28 17:14 966http://www.cnblogs.com/xianan87 ... -
4种方法让SpringMVC接收多个对象
2017-06-06 11:23 531http://blog.csdn.net/lutinghuan ... -
springmvc在普通类中获取HttpServletRequest对象
2017-05-25 17:18 730https://stackoverflow.com/quest ... -
spring的配置文件中mvc:view-controller path使用方法
2017-05-14 13:11 880[list] 1、重定向 <mvc:view-contr ... -
warning no match for this type name: com.cloud.access.web [Xlint:invalidA
2017-02-27 08:47 1533warning no match for this type ...
相关推荐
DispatcherServlet作为前端控制器接收请求并分发给相应的处理器。Controller处理业务逻辑,Model持有数据,View负责展示,而ViewResolver则负责解析视图名到具体的视图实现。 2. **配置与启动**:SpringMVC的配置...
10. **Spring集成**:SpringMVC可以无缝集成其他Spring模块,如Spring Security(安全)、Spring Data(数据访问)、Spring AOP(面向切面编程)等,实现完整的应用程序解决方案。 在学习SpringMVC时,你可能会接触...
通过以上内容,我们可以看到SpringMVC提供了一套完整的Web应用开发解决方案,使得Java开发者可以更高效地构建可维护、可扩展的Web应用。在实际项目中,我们应充分利用其注解驱动、模块化设计等特性,提高开发效率和...
总的来说,SpringMVC提供了一套完善的Web应用开发解决方案,通过其丰富的特性和组件,开发者可以高效地构建出稳定、可扩展的Web应用。在实际项目中,可以根据需求选择和配置各种组件,实现灵活的业务逻辑处理和界面...
模型负责业务逻辑和数据处理,视图负责用户界面展示,控制器接收用户请求并调用模型处理后,更新视图显示。 2. **DispatcherServlet**:在SpringMvc中,DispatcherServlet是入口点,它负责接收HTTP请求,然后根据...
10. 集成其他Spring模块:SpringMVC可以与Spring其他模块无缝集成,如Spring AOP(面向切面编程)、Spring JDBC、Spring ORM(对象关系映射)等,提供完整的解决方案。 11. 注解驱动:SpringMVC允许开发者使用注解...
SpringMVC可以轻松地与Spring的其他模块集成,如AOP(面向切面编程)、IoC(依赖注入)、事务管理等,提供了一站式的解决方案。 综上所述,SpringMVC提供了灵活、高效的Web应用开发框架,通过合理的配置和设计,...
本问题探讨的是在使用Angular进行POST请求时,SpringMVC后台无法正确接收到参数值的问题及其解决方案。 首先,让我们看看问题的核心所在。SpringMVC的控制器中定义了一个POST请求处理方法,如下: ```java @...
然后,在控制器方法中,我们可以使用 `MultipartFile` 类型的参数来接收上传的文件。 在控制器类中,我们需要定义一个处理文件上传的请求方法,通常是一个 `@PostMapping` 注解的方法。该方法的参数可以是 `...
- **Controller**:控制器接收来自客户端的请求,处理后调用模型进行业务逻辑处理,并将结果传递给视图进行显示。 4. **HandlerMapping与HandlerAdapter**:这两者是SpringMVC中处理请求的关键组件。...
总的来说,Spring MVC 提供了一套完整的解决方案,从接收用户请求到处理业务逻辑,再到生成响应,都有一套清晰的流程和强大的工具支持。在实际开发中,开发者可以根据需求配置和扩展这个框架,以实现高效、可维护的...
Spring MVC 的核心是 DispatcherServlet,它作为一个前端控制器接收 HTTP 请求,并根据请求信息(如 URL、HTTP 方法等)转发给相应的处理器(Controller)。 3. **控制器(Controller)**: 控制器是处理请求的类...
- **DispatcherServlet**: 作为SpringMVC的前端控制器,负责接收请求并分发到相应的处理器。 - **Model-View-Controller (MVC)**: 分离业务逻辑、数据模型和用户界面,提高代码的可维护性和可测试性。 - **...
模型(Model)负责业务逻辑处理,视图(View)用于展示数据,控制器(Controller)接收用户请求并处理,然后转发给相应的模型和视图。SpringMVC通过DispatcherServlet作为入口,协调这些组件的工作。 1. **...
- **DispatcherServlet**:SpringMVC的前端控制器,负责接收请求并分发到相应的处理器。 - **Model**:模型对象,通常包含了业务逻辑处理后的数据。 - **View**:视图负责展示模型数据,可以是JSP、FreeMarker、...
6. **Spring MVC与Spring的集成**:SpringMVC可以与其他Spring模块(如Spring Core、Spring AOP、Spring JDBC等)无缝集成,提供完整的解决方案。 7. **RESTful服务**:通过@RequestMapping注解,可以轻松创建...
模型处理业务逻辑和数据,视图负责展示数据,而控制器接收用户请求,处理并转发到相应的模型和视图。 2. **DispatcherServlet**: Spring MVC的入口点是DispatcherServlet,它负责拦截所有HTTP请求,并根据配置的...
【SpringMVC与MyBatis整合基础教程】 ...总结,SpringMVC与MyBatis的整合为Java Web开发提供了高效、灵活的解决方案,通过这个简单的Demo,初学者可以深入理解两者如何协同工作,为后续的复杂项目开发打下坚实的基础。
Spring MVC 是一个基于模型-视图-控制器(MVC)设计模式的Web应用程序开发框架,它是Spring框架的一个重要模块,主要负责提供Web层的解决方案。本文将深入探讨Spring MVC的基础知识和高级特性。 1. Spring MVC 基础...
在Java Web开发中,SSM(Spring、SpringMVC、MyBatis)框架的整合是常见的技术栈,尤其对于大型项目,它们的协同工作能提供高效且灵活的解决方案。本教程将重点探讨SpringMVC,它是Spring框架的一部分,专门用于处理...