最近工作上遇到个问题,新的项目要和老系统单点登录。

有点蒙,从来没做过,网上一搜都是SSO,还需要验证服务器。

仔细揣摩,其实需求很简单,没必要那么复杂,以下是我的需求和解决方案:

原系统AP1

新开发的系统AP2

两个应用的登录用户相同,需要用户首先在AP1实现登录,然后点击按钮跳转至AP2,保留用户的信息。

那么问题来清晰了,主要方面需要好好考虑

  1. 怎样实现两个应用共享相同的数据?
  2. 怎样实现从AP1到AP2的跳转?

对于第一个问题其实要看服务器是那种的。

如果是Tomcat,我们只需要配置Server.xml使两个应用的ServletContext对象可以互相访问,具体配置如下:

<Context docBase="AP1" path="/AP1" reloadable="true" CrossContext="true" source="org.eclipse.jst.jee.server:AP1"/>
<Context docBase="AP2" path="/AP2" reloadable="true" CrossContext="true" source="org.eclipse.jst.jee.server:AP2"/>

其中的CrossContext="true"就是告诉服务器其他应用可以访问我的ServletContext

如果是WebLogic服务器,那么我们就不需要做任何事了,需要别人的Context时直接取就可以了,获取Context代码如下:

ServletContext ctx = application.getContext("/AP2");

。。。。。。

然后第二个问题,页面跳转无非就是转发和重定向,可是App之间怎么搞。。

我发现在AP1下获得的AP2的ServletContext有妙用,上文中获得的对象ctx操作空间很大,以下为转发的方式跳转到AP2:

ctx.getRequestDispatcher("/index.jsp").forward(request,response);

这个时候我们成功跳转到idnex.jsp,,而这个jsp就是我在AP2中的页面了。而且保留了AP1的request,当然其中的session一样是没有变的。

到这里基本上没有什么问题了,这里有个问题,就是序列化,远程访问一个对象需要序列化,而这个session是否也需要序列化呢?记不太清楚当时怎么处理了,只记得本地使用Tomcat测试需要序列化,而Weblogic中有自动序列化的选项,不需要太费事转换对象。具体下次再专门查查对象序列化场景和应用吧。

新人发帖,如有纰漏欢迎大家斧正。

两个APP跳转传值问题的更多相关文章

  1. 两个App之间的跳转 并传值

    两个App之间的传值最主要的是方法是 Intent intent = getPackageManager().getLaunchIntentForPackage("com.example.a ...

  2. ios两个app之间跳转,传值的实现

    两个APP之间的跳转是通过[[UIApplication sharedApplication] openURL:url]这种方式来实现的. 1.首先设置第一个APP的url地址 2.接着设置第二个AP ...

  3. MUI框架开发HTML5手机APP(二)--页面跳转传值&底部选项卡切换

      概 述 JRedu 在上一篇博客中,我们学习了如何使用Hbuilder创建一个APP,同时如何使用MUI搭建属于自己的第一款APP,没有学习的同学可以戳链接学习: http://www.cnblo ...

  4. iOS中两个APP之间的跳转和通信

    app间的跳转 一:在第一个app首先要做下面这些操作: 1.在info.plist文件中的Information Property List下添加一项:URL types. 2.点开URL type ...

  5. 移动端app跳转百度地图

    http://lbsyun.baidu.com/index.php?title=uri/guide/helloworld(百度地图调起URI API)开发者只需按照接口规范构造一条标准的URI,便可在 ...

  6. UWP 页面跳转传值

    如果涉及到页面跳转,一般用Frame这个控件来管理不同的页面. <Grid Name="RootGrid"> <Frame Name="RootFram ...

  7. 16Flutter中的路由 基本路由 基本路由跳转传值(上)

    /* Flutter中的普通路由.普通路由传值.命名路由.命名路由传值 Flutter中的路由通俗的讲就是页面跳转.在Flutter中通过Navigator组件管理路由导航. 并提供了管理堆栈的方法. ...

  8. android:两个应用之间怎样传值之activity

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/zjh171/article/details/37738579 两个应用之间怎样传值.事实上这个标题太 ...

  9. 打电话,发短信,发邮件,app跳转

    1.打电话 - (IBAction)callPhone1:(id)sender { NSURL *url = [NSURL URLWithString:@"tel://18500441739 ...

随机推荐

  1. 漂亮的Linux命令提示符

    漂亮的Linux命令提示符 每天面对着白底黑字(黑底白字)的命令行是否枯燥泛味呢?生活应给是五彩缤纷的,何不为单调无味的生活增添一抹色彩? 下面一起体验一下Linux命令行提示符惊险的整容之旅 惊鸿一 ...

  2. 解决IIS上无法添加.NET用户的问题

    最近开发了一个简单的管理后台,后台用户管理都用的是AspNetSqlMembershipProvider这一套框架,添加和删除用户的功能在开发阶段通过ASP.NET网站管理工具完成. 部署到服务器上时 ...

  3. javascript中的窗口和框架

    框架: 在网络上我们可以看到很多WEB应用程序都是使用框架(frame)来分隔浏览器窗口的,就想一块块玻璃隔板把窗口分隔成好几个小窗口,并且可以在不同的小窗口中加载显示不同的页面,这样在我们看来好像是 ...

  4. oracle中trim,ltrim,rtrim函数用法

    该函数共有两种作用:第一种,即大家都比较熟悉的去除空格.例子:--TRIM去除指定字符的前后空格SQL> SELECT TRIM(' dd df ') FROM dual;TRIM('DDDF' ...

  5. PHP获取当前时间戳,当前时间、及解决时区问题

    一.获取当前时间戳 方法1:通过time函数 time(); 方法2:通过$_SERVER中的REQUEST_TIME元素 $_SERVER['REQUEST_TIME']; 方法3:通过strtot ...

  6. Selenium IDE 基础教程

    Selenium IDE 基础教程 1.下载安装     a 在火狐浏览其中搜索附件组件,查找 Selenium IDE     b 下载安装,然后重启firefox 2.界面讲解      在菜单- ...

  7. 关于HTML5你必须知道的28个新特性,新技巧以及新技术

    1. 新的Doctype 尽管使用<!DOCTYPE html>,即使浏览器不懂这句话也会按照标准模式去渲染 2. Figure元素 用<figure>和<figcapt ...

  8. 从github获取代码

    以duilib为例: 1 建立一个文件夹,右键 git bash here. 2 git init 3 git clone https://github.com/duilib/duilib.git

  9. http响应需要记住的状态码

    200:请求成功. 301:被请求的资源已永久移动到新位置.302:请求的资源现在临时从不同的 URI 响应请求.401:当前请求需要用户验证.403:服务器已经理解请求,但是拒绝执行它. 404:请 ...

  10. python编程(一)汉诺塔

    题目描述 编写move(n, a, b, c)函数,它接收参数n,表示3个柱子A.B.C中第1个柱子A的盘子数量,然后打印出把所有盘子从A借助B移动到C的方法. 例: move(3, 'A', 'B' ...