2016-11-28 18:33265人阅读评论(0)收藏举报
分类:
项目中遇到的问题记录(6)
版权声明:本文为博主原创文章,未经博主允许不得转载。
参考引用方法
在新项目写了一个filter,能拦截jsp,.action的请求,但是ajax的请求可以拦截不能实现重写向登录页面。这是一个bug呀!
参考以上引用的方法,解决了。
ajax重定向的问题。
默认ajax是不支持重定向的,因为ajax本身就是局部刷新,不重新加载页面的。如果需要用到重定向可以通过以下方法:
第一步:filter
[java]view plaincopy
- publicclassAgentLoginFilterextendsHttpServletimplementsFilter{
- privatestaticfinalLoglog=LogFactory.getLog(AgentLoginFilter.class);
- @Override
- publicvoidinit(FilterConfigfilterConfig)throwsServletException{
- }
- @Override
- publicvoiddoFilter(ServletRequestsRequest,ServletResponsesResponse,FilterChainfilterChain)
- throwsIOException,ServletException{
- HttpServletRequestrequest=(HttpServletRequest)sRequest;
- HttpServletResponseresponse=(HttpServletResponse)sResponse;
- HttpSessionsession=request.getSession();
- Stringurl=request.getServletPath();
- StringcontextPath=request.getContextPath();
- Stringtype=request.getHeader("X-Requested-With")==null?"":request.getHeader("X-Requested-With");//XMLHttpRequest
- StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+contextPath+"/";
- if(url.equals("")){
- url+="/agent";
- }
- booleanisHasLogin=AgentSessionHelper.getHasLogined(request.getSession());
- if(!isHasLogin){
- if((url.startsWith("/agent")&&!url.startsWith("/agent/login/YSAgentLoginAction/login.action"))
- &&!url.startsWith("/agent/agentLogin.jsp")){
- if(StringUtils.equals("XMLHttpRequest",type)){
- //处理ajax请求
- response.setHeader("SESSIONSTATUS","TIMEOUT");
- response.setHeader("CONTEXTPATH",basePath+"agent/agentLogin.jsp");
- response.setStatus(HttpServletResponse.SC_FORBIDDEN);
- return;
- }else{
- response.sendRedirect(contextPath+"/agent/agentLogin.jsp");
- return;
- }
- }
- }else{
- if(url.startsWith("/agent/agentLogin.jsp")){
- response.sendRedirect(contextPath+"/agent/agentIndex.jsp");
- return;
- }
- }
- filterChain.doFilter(sRequest,sResponse);
- }
- }
第二步:在公共js 中写入
通过$.ajaxSetup()方法给ajax方法统一添加请求执行结束后,执行的操作。
[javascript]view plaincopy
- $.ajaxSetup({
- //设置ajax请求结束后的执行动作
- complete:
- function(XMLHttpRequest,textStatus){
- //通过XMLHttpRequest取得响应头,sessionstatus
- varsessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus");
- if(sessionstatus=="TIMEOUT"){
- varwin=window;
- while(win!=win.top){
- win=win.top;
- }
- win.location.href=XMLHttpRequest.getResponseHeader("CONTEXTPATH");
- }
- }
- });
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|