从上一节的小demo中我们搞清楚了如何跟易宝对接以及易宝的支付流程。这一节我们来做一下支付页面以及在页面中导入银行图标。

1. 存储银行图标

银行图标一般不会总是去加载,因为这些东西是死的,没必要每次进入支付页面就去加载银行图标,这样性能会受到一定的影响。这让我们联想到了之前的加载首页数据了,其实跟那个道理是一样的,我们可以在项目启动的时候就将银行图标资源加载到application中,后面用到了就直接在application域中取就行了。所以跟原来一样,我们在监听器中加载银行图标。

银行图标易宝官方会提供给我们,那么我们需要做的就是将这些图标放到工程下的某个文件夹里,我是放在了WebRoot/files/bankImages中,这些图标的名称都严格根据易宝官方要求的名字命名,就像上一节中看到的,工行就命名为ICBC-NET.gif。

加载图标的思路是如下:

1)首先从指定目录中获取所有图标的名字,并且过滤掉不需要的文件,这个过滤很重要,因为如果有一些多余的文件或者隐藏文件的话,我们都获取到了,然后前台显示的时候就会出现一些奇怪的东西,所以我们只要有用的图标。

2)其次我们拿到图标名称后将它们放到数组或者集合中,然后把数组或集合存到application域中

很明显,第二步是在监听器中实现的,第一步我们可以自己新写一个工具类,也可以在我们之前写过的fileUploadUtil类中完成。

1.1 获取图标名称

我们在fileUploadUtil中添加获取图标名称的代码:

@Component("fileUpload")

public class FileUploadUtil implements FileUpload {

//省略原来的代码……

//@Value表示去beans.xml文件中找id="prop"的bean,它是通过注解的方式读取properties配置文件的,然后去相应的配置文件中读取

@Value("#{prop.basePath+prop.bankImagePath}")

private String bankImagePath;

public String[] getBankImage() {

String[] list = new File(bankImagePath).list(new FilenameFilter() {

//测试指定文件是否应该包含在某一文件列表中

@Override

public boolean accept(File dir, String name) {

System.out.println("dir:" + dir + ",name:" + name);

//通过后缀名来实现文件的过滤效果

//返回真就放到list中,返回假就过滤掉

return name.endsWith(".gif");

}

});

return list;

}

我们加载的是public.properties配置文件,看一下配置文件中的内容:

basePath=E\:\\web\\apache-tomcat-8.0.26\\webapps\\E_shop

filePath=\\files

bankImagePath=\\files\\bankImages

之所以有个basePath是为了便于扩展,而且以后修改的话basePath不需要动。我们继续看上面那个方法,new File(path).list() 方法是获取路径中所有文件名,但是new File(path).list(FilenameFilter filter) 带有过滤功能,可以过滤掉不想要的文件,只返回想要的文件到数组中。FilenameFilter 接口中只有一个accept方法,所以我们可以用内部类来实现,在里面判断 一下是否是.gif后缀的文件即可。

1.2 将图标名称存入application域

下面我们在监听器中将刚刚保存图标名称的数组存储到application域中,这些方法之前都有介绍过,就不多做解释了,直接看代码:

//@Component //监听器是web层的组件,它是tomcat实例化的,不是Spring实例化的。不能放到Spring中

public class InitDataListener implements ServletContextListener {

//省略其他代码……

private ApplicationContext context = null;

private FileUpload fileUpload = null;

@Override

public void contextInitialized(ServletContextEvent event) {

context = WebApplicationContextUtils.getWebApplicationContext(event.getServletContext());

//将存储银行图片的数组放到application中,项目启动的时候加载

fileUpload = (FileUpload) context.getBean("fileUpload");

event.getServletContext().setAttribute("bankImageList", fileUpload.getBankImage());

}

}

2. 支付页面显示

我们来看一下bank.jsp关于银行图标这一块的代码,如下:

还有一块是显示订单的相关信息的,从下面的代码中也可以看出,是从session中拿我们之前备份的订单信息,原信息在用户确认订单跳到支付页面时已经销毁了。

3. 测试一下效果

下面我们来测试一下支付页面的显示效果,如下:

好了,支付页面显示正常,下面要完成支付功能了,即上一节用servlet写的那个demo的功能,只不过现在放到Struts中,并且可能要考虑到一些其他的问题,下一节再写吧。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

银行付款出现java,SSH框架网上商城项目第22战之银行图标以及支付页面显示相关推荐

  1. 【SSH网上商城项目实战22】获取银行图标以及支付页面的显示

    目录(?)[+] 存储银行图标 1 获取图标名称 2 将图标名称存入application域 支付页面显示 测试一下效果 从上一节的小demo中我们搞清楚了如何跟易宝对接以及易宝的支付流程.这一节我们 ...

  2. java 前台商品展示模块_SSH框架网上商城项目第10战之搭建商品类基本模块

    前面我们完成了与商品类别相关的业务逻辑,接下来我们开始做具体商品部分. 1. 数据库建表并映射Model首先我们在数据库中新建一张表,然后使用逆向工程将表映射成Model类,表如下: /*====== ...

  3. 创建商品类java_SSH框架网上商城项目第9战之添加和更新商品类别功能实现

    上一节我们做完了查询和删除商品的功能,这一节我们做一下添加和更新商品的功能. 1. 添加商品类别1.1 添加类别的UI设计        我们先说一下思路:首先当用户点击"添加商品" ...

  4. 11(maven+SSH)网上商城项目实战之Freemarker 页面静态化

    FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 l         FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序 ...

  5. 09(maven+SSH)网上商城项目实战之使用jersey实现应用服务器和图片服务器分离...

    1.模拟应用服务器(客户端): 所需jar: 1 2 3 commons-io-1.3.2.jar, jersey-client-1.8.jar, jersey-core-1.8.jar 编辑客户端代 ...

  6. SSH框架电子商城-系统技术分析

    ------·今天距2020年62天·------ 这是ITester软件测试小栈第71次推文 大家好 我是coco小锦鲤 双十一还有半把个月才到 淘宝京东唯品会 天猫苏宁当当网 都在放大招让我们买买 ...

  7. java计算机毕业设计网上商城系统演示录像源码+系统+数据库+lw文档+mybatis+运行部署

    java计算机毕业设计网上商城系统演示录像源码+系统+数据库+lw文档+mybatis+运行部署 java计算机毕业设计网上商城系统演示录像源码+系统+数据库+lw文档+mybatis+运行部署 本源 ...

  8. 【SSH网上商城项目实战21】从Demo中看易宝支付的流程

    这一节我们先写一个简单点的Demo来测试易宝支付的流程,熟悉这个流程后,再做实际的开发,因为是一个Demo,所以我没有考虑一些设计模式的东西,就是直接实现支付功能.实现支付功能需要易宝给我们提供的AP ...

  9. 【SSH网上商城项目实战】之环境搭建填坑

    此篇主要是记录我在从零开始走一遍倪升武大神的[SSH网上商城项目实战]过程中遇到的一些坑并记录解决方法.关于这个项目,大家可以去倪升武的博客学习了解,SSH网上商城项目实战请戳倪升武的项目实战专题. ...

最新文章

  1. 哈佛医学院解析:触发医学深度学习系统受到「对抗攻击」的诱因有哪些?
  2. 用CSS实现梯形图标
  3. 零基础学python爬虫-我是如何零基础开始能写Python爬虫的
  4. swiper 上滑触发_四种方式快速实现上滑触底加载效果
  5. Github 个人首页档案资料卡 README 自述文件
  6. 学习笔记-----关于C++中类的成员函数可以访问私有成员的问题
  7. 为革命,保护视力——为Eclipse更换暗黑皮肤及编辑页面的字体颜色主题
  8. MTK调试入门之一-TRACE使用的技巧
  9. c语言第1次作业答案,C语言第五次上机作业参考答案
  10. 全面解析腾讯最新开源 loT 操作系统 TencentOS tiny!
  11. 简析面向对象中的继承,原型链,闭包之继承
  12. markdown的学习
  13. java+selenum实现网页自动化总结
  14. Rust 编译模型之殇
  15. 企业进行固定资产盘点的作用
  16. mysql允许null_Mysql:允许Null意思
  17. TMC5160和TMC2160的使用
  18. 【选型】常用的自动化测试工具
  19. GM7123视频编码电路:TTL转VGA,替换SDA7123转换芯片
  20. 【wxPython 安装指南:error: legacy-install-failure】

热门文章

  1. 数据结构 c语言 严蔚敏 第十章 答案 10.1,严蔚敏版数据结构(C语言版)参考答案第十章..doc...
  2. 电信网管中的Java客户端(二)
  3. 不是计算机专业可以报名系统集成项目管理工程师吗
  4. 分享搭建脚手架的一些经验
  5. OpenGL笔记:观察坐标系(模型视图矩阵)、投影变换
  6. office2010的word没有工具栏
  7. python随机生成IP地址
  8. 域控管理员账号登录Windows Server 2016服务器,鼠标点击声音、图标等设置报错 rundll32.exe Windows无法访问指定设备、路径或文件。
  9. 马华兴、王鹏《做出好选择》读书笔记
  10. qiime1安装教程 for mac