单点登录(SingleSignOn),简称为SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
因为开发需要,自己看了一些与单点登录相关的资料,想要实现这个功能,不过鼓捣了几天也没有弄成功,后来自己另辟蹊径利用过滤器实现了相应的功能。话不多说,代码如下(过滤器):

 public void doFilter(ServletRequest request, ServletResponse response,
    			FilterChain chain) throws IOException, ServletException {
    		// TODO Auto-generated method stub
    		HttpServletRequest servletRequest = (HttpServletRequest) request;
    		HttpServletResponse servletResponse = (HttpServletResponse) response;
    		HttpSession session = servletRequest.getSession();
    		if (session.getAttribute("adminName") != null //登录链拦截,判断用户是否登录
    				&& session.getAttribute("adminName") != "") {
    			chain.doFilter(request, response); //如果用户已经登录,就继续用户当前的请求
    			return;
    		} else {
    			String getQer = servletRequest.getQueryString();//获取用户请求链接里面的参数,比如http://xxx.com?id=xxx这个链接的“id=xxx”这个参数
    			String requestUrl; //定义一个变量用户保存用户请求的URL
    			if (getQer == null || getQer == "") {// 如果请求参数为空的话
    				requestUrl = servletRequest.getServletPath(); //获取用户请求的Url
    			} else {
    				requestUrl = servletRequest.getServletPath() + "?"
    				+ servletRequest.getQueryString();  //请求的相对url;// 请求参数
    			}
    			session.setAttribute("setRequestUrl", requestUrl);// 保存请求路径到setRequestUrl
    			//System.out.println("我是getQer:" + getQer);
    			servletResponse.sendRedirect(servletRequest.getContextPath()
    					+ "/Admin/Login.jsp"); //跳转到登录页面,让用户登录
    		}
    	}

以上的代码在获取用户请求路径的同时也实现了用户登录过滤,防止未登录的用户进行一些非法操作
以下是用户登录页面代码(部分):

				session.setAttribute("adminName", adminName);//将用户名保存在session中
				String path = request.getContextPath();
				String basePath = request.getScheme() + "://"
						+ request.getServerName() + ":"
						+ request.getServerPort() + path;//获得当前项目的路径
				String getUrl = basePath
						+ session.getAttribute("setRequestUrl");//获取刚刚保存的请求地址

				if (getUrl != null || getUrl != "") {  //判断用户的请求路径是否为空,如果不为空就跳转到该页面
					response.sendRedirect(getUrl);
				} else {
					response.sendRedirect("Management\\index.jsp");
				}

通过以上逻辑代码,就可以实现单点登录的功能了,希望给有需要的同道之人一些思路。
ps:新人小白,若有不当之处,欢迎指教。

10-07 19:19