【SSH網上商城項目實戰22】獲取銀行圖標以及支付頁面的顯示

轉自:https://blog.csdn.net/eson_15/article/details/51452243web

好了,支付頁面顯示正常,下面要完成支付功能了,即上一節用servlet寫的那個demo的功能,只不過如今放到Struts中,而且可能要考慮到一些其餘的問題,下一節再寫吧~從上一節的小demo中咱們搞清楚瞭如何跟易寶對接以及易寶的支付流程。這一節咱們來作一下支付頁面以及在頁面中導入銀行圖標。apache

1. 存儲銀行圖標
  銀行圖標通常不會老是去加載,由於這些東西是死的,不必每次進入支付頁面就去加載銀行圖標,這樣性能會受到必定的影響。這讓咱們聯想到了以前的加載首頁數據了,其實跟那個道理是同樣的,咱們能夠在項目啓動的時候就將銀行圖標資源加載到application中,後面用到了就直接在application域中取就好了。因此跟原來同樣,咱們在監聽器中加載銀行圖標。
  銀行圖標易寶官方會提供給咱們,那麼咱們須要作的就是將這些圖標放到工程下的某個文件夾裏,我是放在了WebRoot/files/bankImages中,這些圖標的名稱都嚴格根據易寶官方要求的名字命名,就像上一節中看到的,工行就命名爲ICBC-NET.gif。
  加載圖標的思路是以下:
  1)首先從指定目錄中獲取全部圖標的名字,而且過濾掉不須要的文件,這個過濾很重要,由於若是有一些多餘的文件或者隱藏文件的話,咱們都獲取到了,而後前臺顯示的時候就會出現一些奇怪的東西,因此咱們只要有用的圖標。
  2)其次咱們拿到圖標名稱後將它們放到數組或者集合中,而後把數組或集合存到application域中
  很明顯,第二步是在監聽器中實現的,第一步咱們能夠本身新寫一個工具類,也能夠在咱們以前寫過的fileUploadUtil類中完成。數組

1.1 獲取圖標名稱

  咱們在fileUploadUtil中添加獲取圖標名稱的代碼:tomcat

 

 1 @Component("fileUpload")
 2 public class FileUploadUtil implements FileUpload {
 3     //省略原來的代碼……
 4 
 5     //@Value表示去beans.xml文件中找id="prop"的bean,它是經過註解的方式讀取properties配置文件的,而後去相應的配置文件中讀取
 6     @Value("#{prop.basePath+prop.bankImagePath}")
 7     private String bankImagePath;
 8 
 9     public String[] getBankImage() {
10         String[] list  = new File(bankImagePath).list(new FilenameFilter() {
11 
12             //測試指定文件是否應該包含在某一文件列表中
13             @Override
14             public boolean accept(File dir, String name) {
15                 System.out.println("dir:" + dir + ",name:" + name);             
16                 //經過後綴名來實現文件的過濾效果
17                 //返回真就放到list中,返回假就過濾掉
18                 return name.endsWith(".gif");
19             }
20         });
21         return list;

 

  咱們加載的是public.properties配置文件,看一下配置文件中的內容:session

basePath=E\:\\web\\apache-tomcat-8.0.26\\webapps\\E_shop filePath=\\files bankImagePath=\\files\\bankImagesapp

 之因此有個basePath是爲了便於擴展,並且之後修改的話basePath不須要動。咱們繼續看上面那個方法,new File(path).list() 方法是獲取路徑中全部文件名,可是new File(path).list(FilenameFilter filter) 帶有過濾功能,能夠過濾掉不想要的文件,只返回想要的文件到數組中。FilenameFilter 接口中只有一個accept方法,因此咱們能夠用內部類來實現,在裏面判斷 一下是不是.gif後綴的文件便可。webapp

1.2 將圖標名稱存入application域

  下面咱們在監聽器中將剛剛保存圖標名稱的數組存儲到application域中,這些方法以前都有介紹過,就很少作解釋了,直接看代碼:jsp

 1 //@Component //監聽器是web層的組件,它是tomcat實例化的,不是Spring實例化的。不能放到Spring中
 2 public class InitDataListener implements ServletContextListener {
 3     //省略其餘代碼……
 4 
 5     private ApplicationContext context = null;
 6     private FileUpload fileUpload = null;
 7 
 8     @Override
 9     public void contextInitialized(ServletContextEvent event) {
10         context = WebApplicationContextUtils.getWebApplicationContext(event.getServletContext());               
11         //將存儲銀行圖片的數組放到application中,項目啓動的時候加載
12         fileUpload = (FileUpload) context.getBean("fileUpload");
13         event.getServletContext().setAttribute("bankImageList", fileUpload.getBankImage());
14     }
15 }

2. 支付頁面顯示

  咱們來看一下bank.jsp關於銀行圖標這一塊的代碼,以下: ide

 

  還有一塊是顯示訂單的相關信息的,從下面的代碼中也能夠看出,是從session中拿咱們以前備份的訂單信息,原信息在用戶確認訂單跳到支付頁面時已經銷燬了。 工具

 

 

3. 測試一下效果

  下面咱們來測試一下支付頁面的顯示效果,以下: 

好了,支付頁面顯示正常,下面要完成支付功能了,即上一節用servlet寫的那個demo的功能,只不過如今放到Struts中,而且可能要考慮到一些其餘的問題,下一節再寫吧~

相關文章
相關標籤/搜索