WEB-INF下的jsp通過servlet中超鏈接跳轉


在J2EE中其主要安全性就體現在web工作目錄的WEB-INF文件夾下.如果將一個頁面保存在WEB-INF文件下 ,那么該頁面則不能被用戶訪問,就好比小偷都看不見我有什么,他還能知道要偷什么嗎.. 因此如果將一個頁面放在WEB-INF文件夾下,那么該頁面的安全性將得到提高... 但有時候當我們需要訪問該頁面時,卻無法訪問,如何能夠訪問WEB-INF文件夾下的頁面呢?

  struts為此提供了很便捷的跳轉環境。在struts中每一個跳轉都是通過一個action來處理的,action處理完了之后在forward到相對地址就行,這個很簡單。

  但是問題是如果我不通過action來處理跳轉,我想直接從web-inf的a.jsp頁面跳到b.jsp頁面怎么辦呢?通常這個時候我們會試下相對地址/b.jsp 絕對地址/WEB-INF/b.jsp或者<%=request.getContext()=%>/WEB-INF/b.jsp,但無論怎么搞都不行,這個時候就比較崩潰。想直接跳轉從安全性的角度來看肯定不行的,因為在WEB-INF底下web容器是不讓你看見他的跳轉路徑的。直接跳轉不行,間接跳轉還是有的,比如struts的action跳轉就是一種間接,為什么間接就是安全的呢?因為它的跳轉地址是在web.xml里面配好的,訪問的人是看不見的所以是間接安全的。難道只有struts可以完成間接的任務,顯然不是了。其實想一想struts的action是什么東西就知道怎么做了,struts的action說白了還是一個servlet,所以可以通過servlet來完成任務了。

首先在web.xml里面配置servlet和servlet mapping

<servlet>
   <servlet-name>goto</servlet-name>
   <jsp-file>/WEB-INF/jsp/test.jsp</jsp-file>--要跳轉到的頁面
  </servlet>
  <servlet-mapping>
   <servlet-name>goto</servlet-name>
   <url-pattern>/test</url-pattern>
  </servlet-mapping>

配置好了之后在jsp頁面里用a就可以跳轉了<a href="/工程名/test">測試頁面跳轉</a>--這里一定要“/工程名/test”

   通過servlet跳轉還是比較麻煩了,但是這樣能保證JSP頁面的安全性,想兩全其美是比較難的了。

 當然如果安全要求不高,那就可以做成很簡單的了,直接把所有的jsp頁面全部放在webRoot底下,在WebRoot下頁面用戶可以直接輸入地址訪問。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM