关于与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,转发请保留这个地址,谢谢