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

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

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

public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException
{
HttpServletRequest httpreq = (HttpServletRequest) arg0;
String forwardURL = httpreq.getRequestURI().substring(httpreq.getContextPath().length()) ;

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

HttpSession session = httpreq.getSession(false);
if (IsAccess(forwardURL))
{

if (session == null || session.getAttribute("AMSSession") == null)
{
HttpServletResponse httprep = (HttpServletResponse) arg1;
System.out.println("没有登陆: "+forwardURL) ;
System.out.println("没有: "+httpreq.getContextPath()) ;

String Host = httpreq.getServerName();
int port = httpreq.getServerPort();
String App = httpreq.getContextPath();
if (App==null||App.trim().equals("")||App.trim().length()==1){
App = "/";
}else{
String strlast = new String(App.substring(App.length()-1));
if (!strlast.equals("/")) App = App + "/";
}
String loginUrl = "http://"+ Host + ":" + port + App + "login.jsp";

// String loginUrl = AmsGlobals.getAmsProperty("loginURL") ;
PrintWriter out = 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,转发请保留这个地址,谢谢
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值