- 浏览: 564992 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (350)
- Sybase (30)
- SQL SERVER2005 (14)
- 数据库 (27)
- SSH框架 (27)
- WebService (21)
- 下载-软件收藏 (15)
- 随笔-日常使用 (9)
- Flex 相关 (13)
- Linux (11)
- Web (64)
- XML相关 (9)
- Socket相关 (1)
- Elipse (3)
- 统计报表 (11)
- 线程相关 (3)
- Java相关 (37)
- JAVASCRIPT (19)
- JAVA反射 (3)
- JSP标签 (3)
- 随笔-其他 (2)
- 随笔-设计模式 (3)
- 随笔-架构师相关 (1)
- 下载-源码 (7)
- 下载-帮助文档 (1)
- 下载-插件 (6)
- 技术-.NET (2)
- 技术-Excel VBA (8)
- 应用-地图相关 (2)
- 应用-GSM短信猫 (5)
- 应用-单点登录 (3)
- Android相关 (3)
最新评论
-
sucheng2016:
发现jconn4.jar 里面有getBlob(String) ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver -
sucheng2016:
java.lang.UnsupportedOperationE ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver -
ok123zxx:
没下文了吗
通过 Tomcat Advanced I/O 获得高性能的 Ajax tocmat6+CometProcessor -
q1345111:
大家这个问题 尚未完成方法 com.sybase.jdbc3. ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver -
bdk82924:
heshujing217187 写道问题同1楼一样,求解!换j ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver
Spring搭建的Rest服务端
在使用客户端调用Rest服务时,出现了中文乱码问题
这个要从两个方面解决
1、客户端
客户端是调用RestTemplate 发送请求的,默认使用了 StringHttpMessageConverter 这个转换类 ,查看spring源码,发现默认是ISO-8859的编码
修改方法1:把StringHttpMessageConverter类重新修改下 ,打包到Springjar包里面
修改方法2:重新写一个 Converter ,然后RestTemplate 配置这个转换类
在开发过程中,有后台服务访问远程rest接口的需求,采用spring 框架中的RestTemplate类实现。
RestTemplate类位于org.springframework.web.client包中,提供Http的各类方法:如Get,Head,Post,Put,Delete等,用于访问rest接口,本文以get方法举个简单的例子,介绍RestTemplate类的使用。
RestTemplate有两个构造方法,分别是:
public RestTemplate() {
/**
...初始化过程
*/
}
public RestTemplate(ClientHttpRequestFactory requestFactory) {
this();
setRequestFactory(requestFactory);
}
其中,第二个构造方法中可以传入ClientHttpRequestFactory参数,第一个进行默认初始化,需求中我们需要对请求超时进行设置并能够对超时进行后续处理,第一个构造方法,我们无法控制超时时间,第二个构造中的ClientHttpRequestFactory接口的实现类中存在timeout属性,因此选用第二个构造方法。
在spring配置文件中进行如下配置:
<!-- 配置RestTemplate -->
<!--Http client Factory-->
<bean id="httpClientFactory" class="org.springframework.http.client.SimpleClientHttpRequestFactory">
<property name="connectTimeout" value="${connectTimeout}"/>
<property name="readTimeout" value="${readTimeout}"/>
</bean>
<!--RestTemplate-->
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<constructor-arg ref="httpClientFactory"/>
</bean>
注意:ClientHttpRequestFactory 接口有4个实现类,分别是:
1.AbstractClientHttpRequestFactoryWrapper 用来装配其他request factory的抽象类。
2.CommonsClientHttpRequestFactory 允许用户配置带有认证和http连接池的httpclient,已废弃,推荐用HttpComponentsClientHttpRequestFactory。
3.HttpComponentsClientHttpRequestFactory 同2.
4.SimpleClientHttpRequestFactory 接口的一个简单实现,可配置proxy,connectTimeout,readTimeout等参数。
本文中使用的是第4个实现,具体的根据个人需求再选在使用哪个。
程序中如何使用:
1.在服务类中自动注入:
@Qualifier("restTemplate")
@Autowired
private RestTemplate restTemplate;
2. Map<String, Object> urlVariables = new HashMap<String, Object>();
urlVariables.put("param1",param1);
urlVariables.put("param2",param2);
JSONObject result = restTemplate.getForObject(restURI,
JSONObject.class, urlVariables);
方法的使用详细大家再查api。
2、服务端
有些情况服务端也需要做处理
检查tomcat的配置,server.xml
web.xml 中增加utf-8过滤器
在使用客户端调用Rest服务时,出现了中文乱码问题
这个要从两个方面解决
1、客户端
客户端是调用RestTemplate 发送请求的,默认使用了 StringHttpMessageConverter 这个转换类 ,查看spring源码,发现默认是ISO-8859的编码
修改方法1:把StringHttpMessageConverter类重新修改下 ,打包到Springjar包里面
修改方法2:重新写一个 Converter ,然后RestTemplate 配置这个转换类
<bean id="httpClientFactory" class="org.springframework.http.client.SimpleClientHttpRequestFactory"> <property name="connectTimeout" value="10000"/> <property name="readTimeout" value="10000"/> </bean> <bean id="restTemplate" class="org.springframework.web.client.RestTemplate"> <constructor-arg ref="httpClientFactory"/> <property name="messageConverters"> <list> <bean id="byteArrayHttpMessageConverter" class="org.springframework.http.converter.ByteArrayHttpMessageConverter"></bean> <bean id="resourceHttpMessageConverter" class="org.springframework.http.converter.ResourceHttpMessageConverter"></bean> <bean id="stringHttpMessageConverter" class="OtherMessageConverter"></bean> </list> </property> </bean>
在开发过程中,有后台服务访问远程rest接口的需求,采用spring 框架中的RestTemplate类实现。
RestTemplate类位于org.springframework.web.client包中,提供Http的各类方法:如Get,Head,Post,Put,Delete等,用于访问rest接口,本文以get方法举个简单的例子,介绍RestTemplate类的使用。
RestTemplate有两个构造方法,分别是:
public RestTemplate() {
/**
...初始化过程
*/
}
public RestTemplate(ClientHttpRequestFactory requestFactory) {
this();
setRequestFactory(requestFactory);
}
其中,第二个构造方法中可以传入ClientHttpRequestFactory参数,第一个进行默认初始化,需求中我们需要对请求超时进行设置并能够对超时进行后续处理,第一个构造方法,我们无法控制超时时间,第二个构造中的ClientHttpRequestFactory接口的实现类中存在timeout属性,因此选用第二个构造方法。
在spring配置文件中进行如下配置:
<!-- 配置RestTemplate -->
<!--Http client Factory-->
<bean id="httpClientFactory" class="org.springframework.http.client.SimpleClientHttpRequestFactory">
<property name="connectTimeout" value="${connectTimeout}"/>
<property name="readTimeout" value="${readTimeout}"/>
</bean>
<!--RestTemplate-->
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<constructor-arg ref="httpClientFactory"/>
</bean>
注意:ClientHttpRequestFactory 接口有4个实现类,分别是:
1.AbstractClientHttpRequestFactoryWrapper 用来装配其他request factory的抽象类。
2.CommonsClientHttpRequestFactory 允许用户配置带有认证和http连接池的httpclient,已废弃,推荐用HttpComponentsClientHttpRequestFactory。
3.HttpComponentsClientHttpRequestFactory 同2.
4.SimpleClientHttpRequestFactory 接口的一个简单实现,可配置proxy,connectTimeout,readTimeout等参数。
本文中使用的是第4个实现,具体的根据个人需求再选在使用哪个。
程序中如何使用:
1.在服务类中自动注入:
@Qualifier("restTemplate")
@Autowired
private RestTemplate restTemplate;
2. Map<String, Object> urlVariables = new HashMap<String, Object>();
urlVariables.put("param1",param1);
urlVariables.put("param2",param2);
JSONObject result = restTemplate.getForObject(restURI,
JSONObject.class, urlVariables);
方法的使用详细大家再查api。
2、服务端
有些情况服务端也需要做处理
检查tomcat的配置,server.xml
web.xml 中增加utf-8过滤器
<filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
发表评论
-
Docker 开源的应用容器引擎
2015-05-17 21:15 810Docker 是一个开源的应用容器引擎,让开发者可以打包他们 ... -
Ext Textfield框必填项 *号
2014-03-10 16:59 2670方法1:在items中加*号 var shortNam ... -
Struts2中查看Action配置的插件 -- Config Browser Plugin
2014-03-06 09:38 968(摘自官方介绍: http://struts.apache.o ... -
Spring的Rest服务
2013-12-10 18:51 8131、web.xml 增加配置 <servle ... -
tomcat 报 “too many open files Too many open files" 问题的解决思路
2013-11-03 01:43 1622转:http://blog.csdn.net/big1980/ ... -
基于SringMVC的Rest服务端配置和代码 (待完善)
2013-11-03 01:35 624基于SringMVC的Rest服务端配置和代码 1、引 ... -
jsp的合并单元格
2013-05-27 08:59 1569合并单元格 <!DOCTYPE HTML PUBL ... -
Spring的国际化
2013-04-28 16:02 8611、页面的国际化 和Struct国际化的区别 ,直接在js ... -
spring编码过滤器配置
2013-04-26 15:50 757web.xml <filter> &l ... -
tomcat 启动报错,日志不全如何检查
2013-04-10 15:30 1962有的时候由于某个配置错误,导致tomcat启动失败,但是呢日志 ... -
Struct2注解配置后发现的后台报错信息
2013-04-09 10:14 3314在使用Struct2注解的时候,Struct 配置文件中有如下 ... -
通过 Tomcat Advanced I/O 获得高性能的 Ajax tocmat6+CometProcessor
2013-03-20 16:02 2969最近项目上有个需求用到了Tomcat的后台推送技术,采用了非阻 ... -
表头固定表格jquery.chromatable
2013-03-09 14:08 1383直接上图吧 -
Spring 3.x jar 包详解 与 依赖关系
2013-03-08 09:37 1092转 http://www.cnblogs.com/iceJav ... -
Spring中[@Controller] 基于@注释
2013-03-05 15:54 975[@Controller]1 基于@注释的控制器配置 htt ... -
Spring MVC的使用
2013-02-07 15:42 839以前一直使用Struct2的MVC框架,感觉挺好用的,也 ... -
转 TortoiseSVN中分支和合并实践
2013-01-31 11:13 868转 TortoiseSVN中分支和合并实践 http://p ... -
Git的使用
2013-01-31 09:24 1763版本控制 从最早使用vs ... -
管理JDBC连接池jar包c3p0
2013-01-29 11:45 1558com.mchange.v2.c3p0.ComboPooled ... -
DbUtils的使用
2013-01-28 19:56 1254DbUtils的使用 今天在看一段源码的时候,看到了可以使用 ...
相关推荐
【基于AJAX结合SpringMVC的信息...通过解决中文乱码问题,可以确保信息在整个传输过程中的正确性,提升了服务质量和用户体验。在实际开发中,开发者应当重视编码的统一和数据格式的规范,以确保服务的稳定性和可靠性。
在IT行业中,Spring MVC是一个广泛使用的Java Web框架,它提供了构建...而文件"SpringMVC_05_restful"可能包含了实现上述功能的代码示例,你可以通过查阅这些文件,加深对Spring MVC处理RESTful API及乱码问题的理解。
在Java中,我们通常使用Spring Boot框架来开发RESTful API,因为它提供了便捷的注解和模型来创建REST服务。例如,`@RestController`注解标识一个类为处理HTTP请求的控制器,`@GetMapping`、`@PostMapping`等注解用于...
因此,在实际应用中,应结合具体需求谨慎使用,并考虑使用更现代的解决方案,如Spring Data JPA的Repository Rest Repositories,它们提供了更高效的透明数据访问。 总结一下,CharacterEncodingFilter和...
**问题五:请介绍一下Spring框架中Bean的生命周期和作用域** - **Bean的生命周期**:主要包括创建、依赖注入、初始化、运行和销毁五个阶段。 - **Bean的作用域**:指定了bean实例的有效范围,主要有以下几种: - *...
在服务间的通信中,可能会遇到编码问题,比如GET参数乱码。这通常需要在发送请求时指定正确的字符编码。对于图片显示问题,可能是因为Pojo对象的getter方法不正确导致数据传输过程中出现问题,需要调整getter方法以...
综合上述知识点,使用RESTEasy框架构建WebService的整个过程,从项目初始化、资源类的编写、服务类的实现、拦截器的使用、文件上传的处理、与Spring框架的集成,以及前端请求的编码问题解决等方面都提供了一个清晰的...
总结来说,Spring MVC中处理Controller的字符编码问题主要是通过设置响应的`Content-Type`,使用`@RequestMapping`的`produces`属性,或者直接操作`HttpServletResponse`来指定字符集。同时,了解如何使用不同的参数...
总结:通过以上步骤,我们可以实现一个基于jQuery的下拉框自动提示功能,同时解决了前后台中文乱码问题。对于不同的后端框架,如Spring MVC或Struts2,只需要将Servlet替换为相应的Controller或Action,保持相同的...
确保SpringBoot配置支持中文,如设置字符编码为UTF-8,以避免中文乱码问题。 2. **安装Flask**:在Python环境中安装Flask,使用pip命令`pip install flask`。同时,为了实现前后端通信,我们还需要安装requests库,...
SpringMVC是一种基于Java的Web应用程序框架,它提供了一种简洁、灵活的方式来开发Web应用程序。在SpringMVC中,获取参数是非常重要的一步骤,因为它影响着整个应用程序的运行。下面,我们将详细介绍SpringMVC之获取...