SSH框架網(wǎng)上商城項(xiàng)目第22戰(zhàn)之銀行圖標(biāo)以及支付頁(yè)面顯示
從上一節(jié)的小demo中我們搞清楚了如何跟易寶對(duì)接以及易寶的支付流程。這一節(jié)我們來(lái)做一下支付頁(yè)面以及在頁(yè)面中導(dǎo)入銀行圖標(biāo)。
1. 存儲(chǔ)銀行圖標(biāo)
銀行圖標(biāo)一般不會(huì)總是去加載,因?yàn)檫@些東西是死的,沒(méi)必要每次進(jìn)入支付頁(yè)面就去加載銀行圖標(biāo),這樣性能會(huì)受到一定的影響。這讓我們聯(lián)想到了之前的加載首頁(yè)數(shù)據(jù)了,其實(shí)跟那個(gè)道理是一樣的,我們可以在項(xiàng)目啟動(dòng)的時(shí)候就將銀行圖標(biāo)資源加載到application中,后面用到了就直接在application域中取就行了。所以跟原來(lái)一樣,我們?cè)诒O(jiān)聽(tīng)器中加載銀行圖標(biāo)。
銀行圖標(biāo)易寶官方會(huì)提供給我們,那么我們需要做的就是將這些圖標(biāo)放到工程下的某個(gè)文件夾里,我是放在了WebRoot/files/bankImages中,這些圖標(biāo)的名稱(chēng)都嚴(yán)格根據(jù)易寶官方要求的名字命名,就像上一節(jié)中看到的,工行就命名為ICBC-NET.gif。
加載圖標(biāo)的思路是如下:
1)首先從指定目錄中獲取所有圖標(biāo)的名字,并且過(guò)濾掉不需要的文件,這個(gè)過(guò)濾很重要,因?yàn)槿绻幸恍┒嘤嗟奈募蛘唠[藏文件的話(huà),我們都獲取到了,然后前臺(tái)顯示的時(shí)候就會(huì)出現(xiàn)一些奇怪的東西,所以我們只要有用的圖標(biāo)。
2)其次我們拿到圖標(biāo)名稱(chēng)后將它們放到數(shù)組或者集合中,然后把數(shù)組或集合存到application域中
很明顯,第二步是在監(jiān)聽(tīng)器中實(shí)現(xiàn)的,第一步我們可以自己新寫(xiě)一個(gè)工具類(lèi),也可以在我們之前寫(xiě)過(guò)的fileUploadUtil類(lèi)中完成。
1.1 獲取圖標(biāo)名稱(chēng)
我們?cè)趂ileUploadUtil中添加獲取圖標(biāo)名稱(chēng)的代碼:
@Component("fileUpload") public class FileUploadUtil implements FileUpload { //省略原來(lái)的代碼…… //@Value表示去beans.xml文件中找id="prop"的bean,它是通過(guò)注解的方式讀取properties配置文件的,然后去相應(yīng)的配置文件中讀取 @Value("#{prop.basePath+prop.bankImagePath}") private String bankImagePath; public String[] getBankImage() { String[] list = new File(bankImagePath).list(new FilenameFilter() { //測(cè)試指定文件是否應(yīng)該包含在某一文件列表中 @Override public boolean accept(File dir, String name) { System.out.println("dir:" + dir + ",name:" + name); //通過(guò)后綴名來(lái)實(shí)現(xiàn)文件的過(guò)濾效果 //返回真就放到list中,返回假就過(guò)濾掉 return name.endsWith(".gif"); } }); return list; }
我們加載的是public.properties配置文件,看一下配置文件中的內(nèi)容:
basePath=E\:\\web\\apache-tomcat-8.0.26\\webapps\\E_shop filePath=\\files bankImagePath=\\files\\bankImages
之所以有個(gè)basePath是為了便于擴(kuò)展,而且以后修改的話(huà)basePath不需要?jiǎng)?。我們繼續(xù)看上面那個(gè)方法,new File(path).list() 方法是獲取路徑中所有文件名,但是new File(path).list(FilenameFilter filter) 帶有過(guò)濾功能,可以過(guò)濾掉不想要的文件,只返回想要的文件到數(shù)組中。FilenameFilter 接口中只有一個(gè)accept方法,所以我們可以用內(nèi)部類(lèi)來(lái)實(shí)現(xiàn),在里面判斷 一下是否是.gif后綴的文件即可。
1.2 將圖標(biāo)名稱(chēng)存入application域
下面我們?cè)诒O(jiān)聽(tīng)器中將剛剛保存圖標(biāo)名稱(chēng)的數(shù)組存儲(chǔ)到application域中,這些方法之前都有介紹過(guò),就不多做解釋了,直接看代碼:
//@Component //監(jiān)聽(tīng)器是web層的組件,它是tomcat實(shí)例化的,不是Spring實(shí)例化的。不能放到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()); //將存儲(chǔ)銀行圖片的數(shù)組放到application中,項(xiàng)目啟動(dòng)的時(shí)候加載 fileUpload = (FileUpload) context.getBean("fileUpload"); event.getServletContext().setAttribute("bankImageList", fileUpload.getBankImage()); } }
2. 支付頁(yè)面顯示
我們來(lái)看一下bank.jsp關(guān)于銀行圖標(biāo)這一塊的代碼,如下:
還有一塊是顯示訂單的相關(guān)信息的,從下面的代碼中也可以看出,是從session中拿我們之前備份的訂單信息,原信息在用戶(hù)確認(rèn)訂單跳到支付頁(yè)面時(shí)已經(jīng)銷(xiāo)毀了。
3. 測(cè)試一下效果
下面我們來(lái)測(cè)試一下支付頁(yè)面的顯示效果,如下:
好了,支付頁(yè)面顯示正常,下面要完成支付功能了,即上一節(jié)用servlet寫(xiě)的那個(gè)demo的功能,只不過(guò)現(xiàn)在放到Struts中,并且可能要考慮到一些其他的問(wèn)題,下一節(jié)再寫(xiě)吧。
原文鏈接:http://blog.csdn.net/eson_15/article/details/51452243
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 用ajax自動(dòng)加載blogjava和博客園的rss
- java AJAX實(shí)現(xiàn)級(jí)聯(lián)下拉框
- ajax java 實(shí)現(xiàn)自動(dòng)完成功能
- 深入Ajax代理的Java Servlet的實(shí)現(xiàn)詳解
- 在Java的Struts中判斷是否調(diào)用AJAX及用攔截器對(duì)其優(yōu)化
- AJAX省市區(qū)三級(jí)聯(lián)動(dòng)下拉菜單(java版)
- SSH框架網(wǎng)上商城項(xiàng)目第14戰(zhàn)之商城首頁(yè)UI的設(shè)計(jì)
- SSH框架網(wǎng)上商城項(xiàng)目第17戰(zhàn)之購(gòu)物車(chē)基本功能
- SSH框架網(wǎng)上商城項(xiàng)目第23戰(zhàn)之在線(xiàn)支付功能實(shí)現(xiàn)
- SSH框架網(wǎng)上商城項(xiàng)目第28戰(zhàn)之使用Ajax技術(shù)局部更新商品數(shù)量和總價(jià)
相關(guān)文章
一個(gè)簡(jiǎn)單的java學(xué)生寢室查詢(xún)系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了一個(gè)簡(jiǎn)單的java學(xué)生寢室查詢(xún)系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10Java獲取HttpServletRequest的三種方法詳解
這篇文章主要介紹了Java獲取HttpServletRequest的三種方法詳解,是一個(gè)接口,全限定名稱(chēng)為Jakarta.Serclet.http.HttpServletRequest2023-11-11
HttpServletRequest接口是Servlet規(guī)范的一員,需要的朋友可以參考下詳解springboot+mybatis多數(shù)據(jù)源最簡(jiǎn)解決方案
本篇文章主要介紹了詳解springboot+mybatis多數(shù)據(jù)源最簡(jiǎn)解決方案,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05maven tomcat plugin實(shí)現(xiàn)熱部署
這篇文章主要介紹了maven tomcat plugin實(shí)現(xiàn)熱部署,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07maven打包插件的使用(maven-compiler-plugin、maven-dependency-plugin、m
本文主要介紹了maven打包插件的使用(maven-compiler-plugin、maven-dependency-plugin、maven-jar-plugin、maven-resources-plugin),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06Java 普通代碼塊靜態(tài)代碼塊執(zhí)行順序(實(shí)例講解)
下面小編就為大家?guī)?lái)一篇Java 普通代碼塊靜態(tài)代碼塊執(zhí)行順序(實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08