利用httpclient访问跨服务器数据的特性,实现单点登录(SSO)。 以下为一个实现的例子: HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse res = (HttpServletResponse) response; if (req.getSession().getAttribute("loginname") == null || "null".equals(req.getSession().getAttribute("loginname")) || "".equals(req.getSession().getAttribute("loginname"))) { //classCount++; try { Cookie[] cookies = req.getCookies(); String value = null; HttpClient client = new HttpClient(); int intPort; String strhost,strhttp,strpage,strport; strhost = (String) getFilterConfig().getInitParameter("host"); strhttp = (String) getFilterConfig().getInitParameter("potal"); strpage = (String) getFilterConfig().getInitParameter("page"); strport = (String) getFilterConfig().getInitParameter("port"); try { intPort = Integer.parseInt(strport); } catch (Exception e) { intPort = 8084; } client.getHostConfiguration().setHost(strhost, intPort, strhttp); GetMethod get = new GetMethod(strpage); if (cookies != null) { for (int i = 0; i < cookies.length; i++) { String name = cookies[i].getName();//domino:if(name.equals("LtpaToken")) if (name.equals("JSESSIONID")) { value = cookies[i].getValue(); client.getState().addCookie(new org.apache.commons.httpclient.Cookie(strhost, "JSESSIONID", value, "/", -1, false)); //System.out.println(name + ": " + value); } } } client.executeMethod(get); InputStream buffer = get.getResponseBodyAsStream();//getResponseBodyAsString(); StringBuffer bodyStr= new StringBuffer(); BufferedReader in = new BufferedReader(new InputStreamReader(buffer,"UTF-8")); String line = ""; while ((line = in.readLine()) != null){ bodyStr.append(line); }in.close(); //String bodyStr=new String(new String(bodyStr1).getBytes("iso-8859-1"),"UTF-8"); //System.out.println("bodystr:"+bodyStr); if(bodyStr==null || bodyStr.length()<=21||bodyStr.indexOf("<loginname>")==-1||bodyStr.indexOf("</loginname>")==-1){ res.sendError(“无访问权限”); return; } String username = null; username = bodyStr.substring(bodyStr.indexOf("<loginname>") + 10, bodyStr.indexOf("</loginname>")); if (username != null) { req.getSession().setAttribute("username", username); } } catch (Exception ex) { Logger.getLogger(AuthenFilter.class.getName()).log(Level.SEVERE, null, ex); res.sendError(“执行异常”); return; } } else { }