當前位置:
首頁 > 最新 > 納稅服務系統五配置系統、子系統首頁、登陸與攔截

納稅服務系統五配置系統、子系統首頁、登陸與攔截

前言

到目前位置,我們的用戶模塊和角色模塊基本已經做好了,我們的納稅服務系統是放在一個大系統裡邊的。我們應該把我們已經寫好的模塊載入進去

本文主要的知識點:

配置系統首頁

登陸模塊

許可權攔截模塊

載入整個系統首頁

導入對應的JSP頁面:

這裡寫圖片描述

創建home模塊的包,對應的Action和struts配置文件

這裡寫圖片描述

效果圖:

這裡寫圖片描述

把納稅服務系統加到總系統上

當我點擊納稅服務的時候,會出現納稅服務子系統的頁面

這裡寫圖片描述

綁定相關的超鏈接,跳轉到對應的Action中

導入對應的JSP頁面:

這裡寫圖片描述

創建對應的模塊包和配置文件:

這裡寫圖片描述

配置文件

效果:

這裡寫圖片描述

子功能添加到納稅服務系統中

就是讓左邊的導航欄跳轉到我們的對應顯示頁面就行了

到目前為止,我們已經寫了用戶模塊和角色模塊了。也已經把系統的首頁和子系統的首頁配置好了。我們的系統是需要登陸後才能訪問的

這裡寫圖片描述

因此,接下來主要講解登陸模塊、許可權攔截

登陸模塊

編寫Action與配置文件

引入對應的JSP頁面

這裡寫圖片描述

編寫Action處理請求和對應的配置文件:

這裡寫圖片描述

效果:

這裡寫圖片描述

Action處理

在常量類中保存著一個Session的標識:

Action

在dao層中實現根據賬戶和密碼查詢數據:

我們還在Action中定義了一個String來記載著Login的狀態,如果出錯了。我們就返回loginUI界面,然後在那裡回顯Login出錯的信息。

同時登錄完在系統主頁上回顯數據:

這裡寫圖片描述

註銷功能

在主頁上的退出上綁定超鏈接

Action處理:

處理首頁

當用戶訪問首頁的時候,我們重定向到登陸頁面:

訪問Index頁面的時候,我們就重定向到登陸頁面上。

過濾器模塊

進入系統攔截

我們講道理是要用戶登陸後,才能訪問我們的總系統。但是現在假如用戶知道了我們的首頁地址,他可以直接訪問我們的首頁地址而不用登陸。這是不合適的。

因此,我們寫一個過濾器進行攔截,如果用戶不是想要登陸,而訪問我們其他的頁面。都攔截他,讓他登陸後才能訪問。

這裡寫圖片描述

過濾器:

配置過濾器,需要在struts過濾器之前配置:

許可權過濾

我們的納稅服務子系統並不是任何人都可以進去操作的,我們有可以對角色的管理,對用戶的管理。。一般的用戶是沒有許可權去操作這些東西的。因此,我們要對其進行許可權控制。

當該用戶有許可權才能夠訪問納稅服務系統的內容,沒有許可權就不給該用戶看。

許可權過濾的前提條件:

用戶已經登陸了

知道用戶訪問的是什麼子系統

由於我們在LoginFilter中已經可以得到這兩個條件了,於是我們在LoginFilter中接著寫就行了。又因為許可權過濾是一個比較單獨的模塊,我們可以將其抽出。這樣一來,LoginFilter又不會顯得太大,職責又分工了。

這裡寫圖片描述

過濾器全部代碼:WebApplicationContextUtils得到IOC中的對象

在登陸完之後,就查詢出用戶擁有的所有角色,並設置到該用戶中:

在User.java中加入一個List集合,存儲著用戶所擁有的角色

到這裡,有同學可能會疑問,為啥現在我要修改User的結構呢??明明在編寫User和Role的時候說好不修改User類的。我們在驗證的時候需要得到用戶所有的角色,從而得到許可權。如果在檢查的時候做的話,我們用的是過濾器檢查,每請求一次都要去訪問資料庫。

這樣的話就非常耗費我們的性能,於是我們就修改User類,但這次的修改沒有影響到我們其他地方的操作。這樣一來,我們在檢查的時候就可以通過對象來得到用戶對應的許可權了,不用查詢資料庫。

檢查用戶是否有許可權:

頁面嵌套問題

現在我打開了兩個首頁,是同一個會話的。如果用戶太久沒有操作我們的頁面,那麼Session就會被摧毀。

這裡寫圖片描述

等用戶再操作的時候,Session已經被Tomcat摧毀了。講道理用戶操作頁面的時候,是會回到登陸頁面的。我們看看發生了什麼:

這裡寫圖片描述

登陸頁面嵌套在我們右邊的顯示頁面了。為啥出現這種情況??

當用戶的Session沒有了,用戶操作時,過濾器就會將頁面跳轉到登陸頁面

而我們點擊了左邊的菜單欄,默認在右邊顯示

所以,到目前為止,我們的邏輯是沒毛病的。但怎麼解決上面遇到的情況呢??** 我們不需要使用監聽器Session,監聽Session被摧毀了,然後刷新頁面**。。我們用更好地一種解決辦法:

判斷自身頁面是否為頂級窗口,如果不是就自動刷新父窗口的地址,跳轉到頂級窗口中。

總結

對於登陸和註銷功能就沒什麼好說的,我們已經寫過很多次了。在登陸的時候就是將我們的User對象保存Session域對象中而已。

當用戶訪問index頁面的時候,我們就讓它重定向到登陸頁面上

只有登陸了才能訪問我們的系統首頁,因此我們編寫了一個過濾器。判斷該用戶是否是要訪問我們的登陸頁面,如果不是,就判斷該用戶是否登陸了(也就是判斷session有沒有User值)。如果有就放行,如果沒有就跳轉到登陸頁面上

我們還可以對其進行許可權認證,許可權認證是基於用戶已經登陸的前提下的。對於許可權我們直接使用許可權的Code來進行校驗。為了方便我們去驗證,我們在登陸的時候就把用戶的許可權全都載入到用戶上(這樣的話,在每次驗證就不用重複去找資料庫要數據了。)

session失效的問題導致了頁面的嵌套。我們無需監聽Session失效的問題,直接在javaScript用代碼判斷該頁面是否是頂級頁面,如果不是頂級頁面,直接就跳轉到頂級頁面就行了!


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Java3y 的精彩文章:

Mybatis配置文件
Hibernate面試題大全

TAG:Java3y |