今天研究了一下jersey+rest,从服务器返回字符串总是乱码,用了各种办法均不奏效。
方法1 web.xml配置:
<init-param>
<param-name>encoding</param-name>
<param-value>gbk</param-value>
</init-param>
方法2 修改tomcat内置编码
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" uRIEncoding="gbk" useBodyEncodingForURI="true" />
方法3 添加过滤器,手工编码
package sample.hello.fiter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class EncodingFilter implements Filter {
@Override
public void destroy() {
System.out.println("destroy");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");
System.out.println("EncodingFilter----------excute!!!");
chain.doFilter(request,response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("init");
}
}
均不奏效
最后使用jersey注解 终于解决了。
@Path("{name}/{age}/{address}")
@GET
@Produces("text/plain;charset=gbk")
public String sayHello1(@PathParam("name") String name,
@PathParam("age") String age, @PathParam("address") String address) {
return "Hello Jersey1 你好 :" + "name:"+name+"age:"+age+"address"+address;
}
在此记录一下。