`

银行对接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编写的应用系统安装手册 。  由于编者水平有限,错误和疏漏在所难免,敬请读者谅解。随着银企对接系统的更新和发展,本手册的内容将不断修改和完善。 一、...

    公司实际使用有效 有问题可留言 国密SM2 SM3 SM4 加解密 招商银行开放平台 php对接sdk

    考虑到安全性和开放平台对接是当今金融、特别是银行业务中的热点话题,这份SDK的发布和使用,无疑对于提升金融服务效率、保障交易安全具有积极的意义。开发者的积极反馈和问题留言,能够帮助SDK持续优化,从而在金融...

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

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

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

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

    工商银行e生活对接文档

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

    第三方系统对接CBS APP流程

    “第三方系统对接CBS”是指第三方应用与招商银行的“跨银行现金管理平台”(Cross-Banking Solution, CBS)之间的交互过程,这是一项旨在为跨国公司、集团企业、财政事业单位等客户提供综合化资金管理解决方案的服务...

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

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

    关于民生银行联合登录和支付接口调试反馈1

    【民生银行联合登录和支付接口调试】涉及到的是银行与第三方平台之间进行的支付与身份验证交互过程,主要针对的是民生银行的"民生付"网关支付服务。此接口主要用于电商平台或者在线服务提供商集成民生银行的支付功能...

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

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

    基于Java语言的招商银行一卡通支付对接设计源码

    在当今数字化时代,互联网金融交易的便捷性和安全性受到广泛关注,其中银行支付接口对接是实现这一目标的关键技术之一。招商银行作为中国银行业的重要成员,其一卡通支付系统因其广泛的应用和良好的用户体验而备受...

Global site tag (gtag.js) - Google Analytics