SSM结合shiro在过滤器输出json中文乱码??

发布于 2022-09-11 20:37:35 字数 2046 浏览 28 评论 0

spring-MVC.XML配置

<mvc:annotation-driven>
    <mvc:message-converters register-defaults="true">
        <bean class="org.springframework.http.converter.StringHttpMessageConverter">
            <property name="supportedMediaTypes">
                <list>
                    <value>text/html;charset=UTF-8</value>
                    <value>application/json;charset=UTF-8</value>
                    <value>text/plain;charset=UTF-8</value>
                    <value>application/xml;charset=UTF-8</value>
                </list>
            </property>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>

shiro登入过滤器
@Override
protected boolean isAccessAllowed(ServletRequest request,
                                  ServletResponse response, Object mappedValue) throws Exception {
    
    User token = (User) SecurityUtils.getSubject().getPrincipal();
    
    if(null != token || isLoginRequest(request, response)){// && isEnabled()
        return Boolean.TRUE;
    } 
    if (isAjax(request)) {// ajax请求
        Map<String,String> resultMap = new HashMap<String, String>();
        resultMap.put("status", "300");
        resultMap.put("message", "会话超时,请重新登入");//当前用户没有登录!
        System.out.println("ajax请求");
        out(response, resultMap);
    }
    return Boolean.FALSE ;
        
}

public static void out(ServletResponse response, Map<String, String> resultMap){

    PrintWriter out = null;
    try {
        response.setCharacterEncoding("UTF-8");
        out = response.getWriter();
        out.println(JSONObject.fromObject(resultMap).toString());
    } catch (Exception e) {
        System.out.println("json输出错误 ");
    }finally{
        if(null != out){
            out.flush();
            out.close();
        }
    }


clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清晨说晚安 2022-09-18 20:37:35


response.setCharacterEncoding("UTF-8");
换成
response.setContentType(MediaType.APPLICATION_JSON_UTF8_VALUE);
就可以了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文