zoukankan      html  css  js  c++  java
  • 两个系统进行集成

    1.工作中遇到项目集成,但这种集成又不同于单点登录的集成:用户从A项目的登陆界面登陆,点击登录按钮后,先登录B系统,B系统登录成功再登录A系统,否则不登陆A系统,提示用户登陆失败;登陆成功后,展示的页面以A系统为主,部分功能点需要从B系统获取,保存数据时数据需同时保存到A系统和B系统对应的数据库中。这是项目集成的基本需求。

    2.登陆的集成:

      用户登陆A系统容易解决,只需按原来的登陆处理即可。B系统的登陆不太好处理,涉及到登陆用户信息存储在session的问题,用户登录B系统并不会返回页面,所以session信息很容易丢失,导致的结果就是用户登陆完成后,B系统并没有用户登录的session信息(或者说找不到用户的session信息)。

      最终采用了心跳机制,即用户完成登录后,进入A系统的主页面,在A系统主页面获取B系统的心跳页面,并嵌套进A系统的主页面中,心跳页面如下:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>heartbeat</title>
     <dt:comppath></dt:comppath>
    <script type="text/javascript" src="../js/core/dt.util.js"></script>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="Cache-Control" CONTENT="no-store" />
    <meta http-equiv="Pragram" CONTENT="no-cache" />
    <meta http-equiv="Expires" CONTENT="no-store" />
    <meta http-equiv="refresh" content="1200" />
    </head>
    <body>
    </body>
    </html>

    该页面每隔20分钟刷新一次,通过不停的刷新保证用户登录B系统的session信息有效。

      登录的处理:用户点击登录按钮,通过jquery的ajax函数将用户名和密码传递到B系统,进行登录处理,之后将登录结果返回,由于是两个不同的项目,相当于跨域,所以返回值时需要加上

    HttpServletResponse response = ServletActionContext.getResponse();
    response.setHeader("Access-Control-Allow-Origin", "*");

    否则数据返回不过去。

    3.功能集成的处理

      由于两个系统部署在同一台服务器上,ip地址和端口号都一致,所以在A系统访问B系统的页面时,只需在url前边添加B系统部署项目名即可,如访问A系统的url为:Home!getPara.action,访问B系统的url即为:/B/Home!getPara.action,如此在A系统页面即可随意访问B系统的相关action方法

  • 相关阅读:
    Linux 共享库
    使用Visual Studio(VS)开发Qt程序代码提示功能的实现(转)
    ZOJ 3469 Food Delivery(区间DP)
    POJ 2955 Brackets (区间DP)
    HDU 3555 Bomb(数位DP)
    HDU 2089 不要62(数位DP)
    UESTC 1307 windy数(数位DP)
    HDU 4352 XHXJ's LIS(数位DP)
    POJ 3252 Round Numbers(数位DP)
    HDU 2476 String painter (区间DP)
  • 原文地址:https://www.cnblogs.com/zijinyouyou/p/6483809.html
Copyright © 2011-2022 走看看