关于与OA做单点CAS认证的时候乱码问题

解决与OA做单点CAS认证的时候乱码问题的心得

一般情况下,我们在做BS系统的时候,都有自己的一套过滤器,来处理所有访问的连接,例如

publicvoiddoFilter(ServletRequestarg0,ServletResponsearg1,FilterChainarg2)

throwsIOException,ServletException

{

HttpServletRequesthttpreq=(HttpServletRequest)arg0;

StringforwardURL=httpreq.getRequestURI().substring(httpreq.getContextPath().length());

//System.out.println("url:"+forwardURL);

HttpSessionsession=httpreq.getSession(false);

if(IsAccess(forwardURL))

{

if(session==null||session.getAttribute("AMSSession")==null)

{

HttpServletResponsehttprep=(HttpServletResponse)arg1;

System.out.println("没有登陆:"+forwardURL);

System.out.println("没有:"+httpreq.getContextPath());

StringHost=httpreq.getServerName();

intport=httpreq.getServerPort();

StringApp=httpreq.getContextPath();

if(App==null||App.trim().equals("")||App.trim().length()==1){

App="/";

}else{

Stringstrlast=newString(App.substring(App.length()-1));

if(!strlast.equals("/"))App=App+"/";

}

StringloginUrl="http://"+Host+":"+port+App+"login.jsp";

//StringloginUrl=AmsGlobals.getAmsProperty("loginURL");

PrintWriterout=httprep.getWriter();

out.println("<html>");

out.println("<script>");

out.println("window.top.location='"+loginUrl+"';");

out.println("</script>");

out.println("</html>");

return;

}

else

{

arg0.setCharacterEncoding("GBK");

arg2.doFilter(arg0,arg1);

}

}

else

{

arg0.setCharacterEncoding("GBK");

arg2.doFilter(arg0,arg1);

}

}

在这里会将所有连接通过setCharacterEncoding处理成GBK,不过当我们做单点的时候,可能会用到OA的一套标准,会将

OA的过滤信息添加到我们系统的WEB.XML里,如果这样,处理不好可能会导致乱码,需要在添加的时候,将不需要的过滤条件删除掉。

本文地址:http://www.xszlo.com/article/2012-11-06/7494.html,转发请保留这个地址,谢谢

app

相关推荐