`

银行对接SESSION丢失怎么办

    博客分类:
  • J2EE
阅读更多
注意:该操作是在servlet2.2以后得版本不支持原有的getSessionid

step1:添加session 监听器配置web.xml

<listener>
   <listener-class>
                com.keweisoft.ecmp.httpsessionlistener.ScsSeesionListener
    </listener-class>
</listener>


step2:编写监听器

package com.keweisoft.ecmp.httpsessionlistener;

import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;


public class ScsSeesionListener implements 
HttpSessionListener{
    private PayNotifySessionContext sessionContext=
            PayNotifySessionContext.getInstance();
    public void sessionCreated(HttpSessionEvent event) {
            HttpSession session=event.getSession();
            sessionContext.addSession(session);
    }

    public void sessionDestroyed(HttpSessionEvent envent) {
            HttpSession session=envent.getSession();
            sessionContext.removeSession(session);
            
    }

}

step3编写监听器对应操作

package com.keweisoft.ecmp.httpsessionlistener;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpSession;

public class PayNotifySessionContext {
     
     private static PayNotifySessionContext sessionContext=new PayNotifySessionContext();
     private Map<String,HttpSession> sessionMap=new HashMap<String, HttpSession>();
     private PayNotifySessionContext()
     {
         
     }
     
     public static PayNotifySessionContext getInstance()
     {
         return sessionContext;
     }
     
     
     public synchronized void addSession(HttpSession session)
     {
         if(null!=session)
         {
             sessionMap.put(session.getId(), session);
         }
     }
     
     public synchronized void removeSession(HttpSession session)
     {
         if(null!=session)
         {
             sessionMap.remove(session.getId());
         }
     }
     
     public synchronized HttpSession getSession(String JSESSIONID)
     {
         
         HttpSession session =JSESSIONID==null?null:sessionMap.get(JSESSIONID);
         return session;
     }
}  


step4通过支付通知路径保存当前的JSESSIONID

//本例为支付宝 支付通知URL携带以下可能因支付而丢失的保存在SESSION中的值
    alipay.setReturn_url(SysConfigLoader.getSystemConfig().getProperty(
                        "returnUrl")
                        + "?JSESSIONID="
                        + JSESSIONID
                        + "&areaId="
                        + areaId
                        + "&payAreaId=" + payAreaId);
//支付成功之后那么该URL就会跨域请求你的服务器并携带了这些值你索要做的就是找到你的
session后替换到生成的新的session
this.getRequest().getSession().setAttribute(
                ".freemarker.Session",
                null == session.getAttribute(".freemarker.Session") ? session
                        .getAttribute(".freemarker.Session") : null);
        this.getRequest().getSession().setAttribute("user", session.getAttribute("user"));
        this.getRequest().getSession().setAttribute("randomKey",
                session.getAttribute("randomKey"));
        this.getRequest().getSession().setAttribute(
                "javax.servlet.jsp.jstl.fmt.request.charset",
                session.getAttribute("javax.servlet.jsp.jstl.fmt.request.charset"));
分享到:
评论

相关推荐

    支付宝对接 网上银行对接

    在IT行业中,支付宝对接与网上银行对接是电子商务和在线支付系统不可或缺的部分,它们为商家提供了安全、便捷的交易方式。本案例将详细讲解如何在jsp环境下实现支付宝与网上银行的对接,同时考虑到不同编码格式(GBK...

    民生银行接口对接201809011

    "民生银行接口对接201809011" 本资源摘要信息涉及到民生银行接口对接的相关知识点,以下是对标题、描述、标签和部分内容的详细解释: 民生银行接口对接 民生银行接口对接是指商户与民生银行之间的接口对接,用于...

    JAVA web框架开发通过第三方支付公司与银行对接

    通过第三方支付公司与银行对接: 这种方式接方式的优缺点: 优点:系统只需要与第三方支付公司打交道,第三方支付公司根据用户选择的支付银行,并根据支付银行的接入规范,引导用户与银行对接,从而实现支付。此种...

    临商银行接口对接,加密解密加签验签整合,方便调用

    临商银行接口对接,加密解密加签验签整合,方便调用 临商银行接口对接,加密解密加签验签整合,方便调用 临商银行接口对接,加密解密加签验签整合,方便调用 临商银行接口对接,加密解密加签验签整合,方便调用 临商...

    大额支付系统直连商业银行对接测试流程.doc

    大额支付系统直连商业银行对接测试流程 大额支付系统直连商业银行对接测试流程是指大额支付系统与商业银行之间的对接测试流程,该流程旨在确保大额支付系统与商业银行之间的数据交换正确、安全和高效。 一、环境...

    银行支付 API 、银行支付对接流程 、银行支付对接资源

    银行支付 API 、银行支付对接流程 、银行支付对接资源

    java招商银行接口文档,源码

    在IT行业中,与“java招商银行接口文档,源码”相关的知识主要集中在以下几个方面: ...通过深入研究这个主题,开发者不仅可以掌握与招商银行接口的对接技术,还能提升在金融领域开发和服务整合的能力。

    招行银企直连对接java示例

    招行银企直连对接Java示例是一种在企业与银行之间建立直接电子连接的技术,用于自动化处理财务交易,如支付、转账、查询余额等。这个Java demo是招商银行提供的一个开发模板,帮助开发者理解并实现银企直连的流程。 ...

    银企对接企业前置机bocnet22安装手册.doc

     本手册是根据中国银行网上银行银企对接前置机系统1.1编写的应用系统安装手册 。  由于编者水平有限,错误和疏漏在所难免,敬请读者谅解。随着银企对接系统的更新和发展,本手册的内容将不断修改和完善。 一、...

    Radware中国银行银企对接及B2B对接解决方案

    Radware是中国银行银企对接及B2B对接解决方案的关键提供商,其主要产品是WSD(Wide Service Director),用于实现服务器负载均衡和确保系统的高可用性。WSD是一款硬件设备,具备专用的网络操作系统,旨在提升系统的...

    工商银行e生活对接文档

    《工商银行e生活对接详解》 工商银行的“e生活”是一款集成了金融服务与生活服务的综合性移动应用,旨在为用户提供便捷的线上金融服务体验。本篇文章将深入解析“e生活”的对接文档,涵盖产品设计规范、支付功能、...

    java,C#,php调用交通银行接口demo

    在IT行业中,与银行接口的交互是金融技术领域的一个重要环节,特别是在电子商务和在线支付系统中。本示例聚焦于如何使用三种常见的编程语言——Java、C#和PHP,调用交通银行的接口进行B2C(Business to Consumer)...

    C# SM2 解密 对接兴业银行业务

    在实际开发中,可能还需要处理各种异常情况,比如密钥丢失、签名验证失败等,并确保所有操作符合银行的安全策略。 在项目中,你可能还需要编写测试用例,模拟完整的业务流程,包括加密、解密、签名和验证等环节,以...

    sm-util-2.0.3.jar下载,用于邮储银行对接之类

    sm-util-2.0.3.jar下载,用于邮储银行对接之类

    tp6对接招商银行聚合 sm2国密 api

    php版本7.2 打开gmb扩展 使用composer require lpilp/guomi 安装拓展(没有开启gmb扩展会安装失败) 我用的框架是tp6 方式都是通用的

    民生银行接口对接201810181

    ### 民生银行接口对接201810181 #### 一、概述 本文档旨在详细解析民生银行接口对接方案201810181中的关键知识点,包括联合登录机制、参数加密及解密方法、订单支付接口等内容。对接过程中涉及到的技术栈包括但不...

    文档对接的插件检测工具包

    文档对接的插件检测工具包是一款专为银行接口对接设计的实用工具集合,它简化了与多家银行系统交互的复杂性。此工具包的核心特点在于其面向多银行的基类设计,通过统一的配置管理(config)实现不同银行接口的无缝...

Global site tag (gtag.js) - Google Analytics