您的位置:首页 > 编程语言 > Java开发

Spring 3 + dwz session过期跳转解决方法

2013-11-20 10:23 459 查看
package cn.fenghuait.sale.controller;

import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.codehaus.jackson.JsonNode;

import org.codehaus.jackson.JsonParser;

import org.codehaus.jackson.map.ObjectMapper;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import cn.fenghuait.system.model.AppUser;

import cn.fenghuait.system.service.AppUserService;

public class SessionInterceptor extends HandlerInterceptorAdapter {

    @Autowired

    private AppUserService userService;

    

    public boolean preHandle(HttpServletRequest request,

            HttpServletResponse response, Object handler) throws Exception {

        if ("XMLHttpRequest".equalsIgnoreCase(request

                .getHeader("X-Requested-With"))

                || request.getParameter("ajax") != null) {

            AppUser user = userService.getCurrent();

            String jsonStr = "{\"statusCode\":301,\"message\":\"登录已超时,请重新登录!\"}";

            if (null == user) {

                // 未登录                

                ObjectMapper mapper = new ObjectMapper();

                mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);

                JsonNode df = mapper.readValue(jsonStr, JsonNode.class);                

                PrintWriter out = response.getWriter();

                response.setContentType("text/plain");

                System.out.println(jsonStr);                    

                out.println(df);

                out.close();

                return false;

            }

        }

        return true;  

    }

}

xml配置:

  <bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">        

        <property name="supportedMediaTypes">

            <list>

                <value>text/html;charset=UTF-8</value>

            </list>

        </property>

    </bean>

    

  <mvc:interceptors>

        <bean class="cn.fenghuait.sale.controller.SessionInterceptor"/>

  </mvc:interceptors>

需要jar包(下载地址:http://wiki.fasterxml.com/JacksonDownload):

  $(function(){

                    DWZ.init("${resourceRoot }/dwz1.2/dwz.frag.xml", {

                         loginUrl:"login.jsp", loginTitle:"用户登录",    // 弹出登录对话框

                        loginUrl:"loginDialog.jsp",    // 跳到登录页面

                        statusCode:{ok:200, error:300, timeout:301}, //【可选】

                        pageInfo:{pageNum:"pageNum", numPerPage:"numPerPage", orderField:"orderField", orderDirection:"orderDirection"}, //【可选】

                        debug:false,    // 调试模式 【true|false】

                        callback:function(){

                            initEnv();

                            $("#themeList").theme({themeBase:"${resourceRoot}/dwz1.2/themes"}); // themeBase 相对于index页面的主题base路径

                        }

                    });

                });
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Spring MVC dwz