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路径
}
});
});
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路径
}
});
});
相关文章推荐
- Jsp中解决session过期跳转到登陆页面并跳出iframe框架的方法
- Jsp中解决session过期跳转到登陆页面并跳出iframe框架的方法
- session过期跳转到登陆页面并跳出iframe框架的最简单方法
- easyui+rest服务,ajax请求session过期不跳转问题解决
- spring注解空指针异常 'sessionFactory' or 'hibernateTemplate' is required的解决方法
- 重写ajax方法实现异步请求session过期时跳转登录页面
- 重写ajax方法实现请求session过期时跳转登录页面
- 解决session过期跳转到登陆页面并跳出iframe框架
- 解决session过期跳转到登陆页面并跳出iframe框架
- spring.net 集成nhibernate配置文件(这里暴露了GetCurrentSession 对于 CurrentSession unbond thread这里给出了解决方法)
- PHP中的session永不过期的解决思路及实现方法分享
- Response.Redirect("x.aspx);跳转后session为null的解决方法
- 关于session过期跳转的处理方法
- springMVC session过期跳转到登录界面
- 当 jquery 发送 ajax 请求的时候遇到服务端session过期超时返回 302 跳转登陆页面的时候怎么办的处理方法
- EasyUI+SpringMVC配置session过期跳转页面
- 解决session过期跳转到登陆页面并跳出iframe框架
- 解决session过期跳转到登陆页面并跳出iframe框架
- PHP中的session永不过期的解决思路及实现方法分享