分享

【重点】乱码问题 java web 动态代理

 一本正经地胡闹 2020-04-28

程序设计:添加一个专门测试乱码的前端和后端。

这样可以分析测试各种乱码情况:form表单提交,ajax提交。以此来推测出哪里出问题,程序大致是如何设置的。

ajax的post提交,后台不用处理,中文也不会乱码。(因为jquery处理了)

ajax的get提交,后台需要处理,要么getBytes(),new String();要么改tomcat配置。

filter中使用动态代理对全局进行编码:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

throws IOException, ServletException {

final HttpServletRequest req = (HttpServletRequest) request;

//使用动态代理完成全局编码

HttpServletRequest enhanceRequset = (HttpServletRequest) Proxy.newProxyInstance(

req.getClass().getClassLoader(), 

req.getClass().getInterfaces(), 

new InvocationHandler() {

@Override

public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

//对getParameter方法进行增强

String name = method.getName();//获得目标对象的方法名称

if("getParameter".equals(name)){

String invoke = (String) method.invoke(req, args);//乱码

//转码

invoke = new String(invoke.getBytes("iso8859-1"),"UTF-8");

return invoke;

}

return method.invoke(req, args);

}

}

);

chain.doFilter(enhanceRequset, response);

}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多