java中rs怎么用_java-如何使用JAX-RS设置字符集?
java-如何使用JAX-RS设置字符集?
如何使用JAX-RS设置字符集? 我尝试了2719601197371098198112,但是这被忽略了,只有text/html与HTTP标头一起发送。 我想在MessageBodyWriter中设置字符集,但是不想自己通过反射来分析@Produces注释来提取媒体类型。
7个解决方案
67 votes
正如Daemon在评论中指出的那样,JAX-RS的最新版本(包括截至2012年9月的稳定版本)现在确实支持@Produces808语法。 因此,您可以使用:
@Produces("text/html; charset=UTF-8")
Adrian Petrescu answered 2020-01-26T11:36:27Z
15 votes
也可以使用ResponseBuilder.header(...)方法通过字符集设置内容类型。 参见下面的代码示例(使用JAX-RS 1.1.1,CXF 2.3.1)。
final Response myResponse = Response.status(Response.Status.BAD_REQUEST)
.entity("La requête n'est pas correcte.\n ...")
.header(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_PLAIN+"; charset=ISO-8859-15" )
.build();
SMougenot answered 2020-01-26T11:36:48Z
14 votes
只是为了使其保持最新状态。 不确定是否在较旧版本的Jersey中是否支持此功能,但是可以肯定的是,如果您决定使用ResponseBuilder.header(...)方法,则可以将MediaType方法与Charset()一起使用。 像这样:
return Response.status(Status.OK)
.entity(result)
.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_TYPE.withCharset("utf-8"))
.build());
stviper answered 2020-01-26T11:37:08Z
10 votes
如果要以不依赖JAX-RS实现的方式执行此操作,则可以在MessageBodyWriter中重置Content-Type。 就像是:
public void writeTo(Object obj,
Class> cls,
Type type,
Annotation[] annotations,
MediaType mt,
MultivaluedMap responseHttpHeaders,
OutputStream stream) throws IOException {
responseHttpHeaders.putSingle(javax.ws.rs.core.HttpHeaders.CONTENT_TYPE, mt.toString() + ";charset=UTF-8");
}
如果每个资源方法除了UTF-8之外还有其他字符集,则可能需要创建一个自定义注释并将其添加到每个资源方法中。 然后,尝试在writeTo()方法中使用批注参数。
仅供参考,Apache Wink支持在媒体类型上使用字符集和其他属性。 我希望将来的JAX-RS规范修订版可以使此操作变得容易。
Bryant Luk answered 2020-01-26T11:37:37Z
1 votes
在资源类方法上首先设置response批注。
然后在您返回的类型response中,可以在writer方法中执行以下操作:
response.setContentType(mediaType.toString);
备注:您可以通过以下方式在writer中注入response:
@Context
protected HttpServletResponse response;
To Kra answered 2020-01-26T11:38:06Z
1 votes
我要做的是获取servlet响应对象的实例:
protected @Context HttpServletResponse response;
然后将字符编码设置为utf-8:
response.setCharacterEncoding("utf-8");
这对我行得通。
Giannis answered 2020-01-26T11:38:34Z
1 votes
如果使用RESTEasy,则可以注册拦截器:
import org.jboss.resteasy.annotations.interception.ServerInterceptor;
import org.jboss.resteasy.core.ResourceMethodInvoker;
import org.jboss.resteasy.core.ServerResponse;
import org.jboss.resteasy.spi.Failure;
import org.jboss.resteasy.spi.HttpRequest;
import org.jboss.resteasy.spi.interception.PreProcessInterceptor;
import org.jboss.resteasy.plugins.providers.multipart.InputPart;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.ext.Provider;
@Provider
@ServerInterceptor
public class ContentTypeSetter implements PreProcessInterceptor {
@Override
public ServerResponse preProcess(HttpRequest request, ResourceMethodInvoker resourceMethodInvoker) throws Failure, WebApplicationException {
request.setAttribute(InputPart.DEFAULT_CONTENT_TYPE_PROPERTY, "*/*; charset=UTF-8");
return null;
}
}
注意:如果您手动设置@Produces,它将覆盖此拦截器设置的ContentType。 如果这样做,请在@Produces中设置字符集
lujop answered 2020-01-26T11:38:59Z
java中rs怎么用_java-如何使用JAX-RS设置字符集?相关推荐
- java中飞飞检查异常_Java复习6异常处理
Java复习6.异常处理 20131005 前言: Java中的异常处理机制是非常强大的,相比C++ 来说,更加系统.但是我们开发人员没有很好的使用这一点.一些小的程序是没有什么问题的,但是对于大型项 ...
- java中po代码示例_java操作oracle常用的示例代码详解
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sq ...
- java中取系统时间_JAVA中获取当前系统时间(示例代码)
一. 获取当前系统时间和日期并格式化输出: import java.util.Date;import java.text.SimpleDateFormat; public class NowStrin ...
- 在java中获取当前时间_JAVA中获取当前系统时间
一. 获取当前系统时间和日期并格式化输出: import java.util.Date; import java.text.SimpleDateFormat; public class NowStri ...
- java中result的作用_JAVA中的Resultset
JAVA中的Resultset (2012-04-21 14:53:34) 标签: it JAVA中Resultset是一个类 . 结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结 ...
- java中什么是空指针异常_java中空指针异常的问题,是怎么回事?请看代码
问题补充: 加载错误! 失败 JAVA.SQL.SQLEXCEPTION: NO SUITABLE DRIVER FOUND FOR JDBC:SQLSERVER://LOCALHOST:1433;D ...
- java中注解的使用_java中注解的使用
使用过ssh框架的人一定也使用过注解,尤其是在spring框架中,注解可谓是spring容器和AOP编程的重要环节.注解就是用于修饰类.全局变量.方法.参数或局部变量的接口,java中规定,注解的使用 ...
- java中组件与容器_java中的容器组件和非容器组件
1.java使用到的图形类主要在java.awt 与javax.swing包中. 2.java.awt 与 javax.swing包的区别: ① java.awt中使用的图形类都是依赖于系统的图形库的 ...
- java中事件监听_Java中的事件监听机制
鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动 ...
- java中是否支持多重继承_java支持多重继承吗 JAVA特性面试题:
1.简要介绍java程序的健壮性. 答:JAVA程序会在编译和运行的时候自动的检测可能出现的错误,而且它是一种强类型语言,对于类型的检查很严格,而且它的垃圾回收机制也有效的避免了内存的泄漏. 2.为什 ...
最新文章
- 翻看雷军近10年演讲、采访,我们整理出70条干货
- php模拟socket一次连接,多次发送数据的实现
- jQuery修改页面元素的属性
- Squash my last X commits together using Git | Git 如何合并历史提交记录?
- SAP Commerce Cloud Spartacus UI footer 区域的设计模型
- React开发(141):react中ref为class添加ref
- 微信java创建菜单_微信自定义菜单的创建(JAVA版)
- 利用Samba搭建Backup Server配置文件
- 关于实时协同编辑的架构思考
- 程序员如何保护自己的头发
- bootloader recovery
- BREDR之inquiry及page
- causalml安装记录
- 产品经理十七章:结构化发散思维
- mysql 执行delete引发死锁问题
- 移动端地图开发技术分享交流会PPT
- 手机设备唤醒计算机,手机遥控电脑开机神器!局域网唤醒App
- 南京金融python培训班
- 通过伴随矩阵怎么求逆矩阵
- MeeGo操作系统 华硕Eee PC X101在美上架