1. 程式人生 > >web專案訪問jsp的方式及頁面間的跳轉

web專案訪問jsp的方式及頁面間的跳轉

今天借鑑各位大佬的經驗,加以自己的理解 小小寫一個WEB開發的心得 在做的涉及到前端的專案時,有很多的jsp頁面,在剛開始做專案的時候,只會機械的學別人的配置,或是web.xml中的配置,或是SSH中struts裡面配頁面之間的跳轉路徑等等,但是反過頭來,真正要在剛建web專案時,訪問其下jsp,或是實現頁面間跳轉的時候就會發現經常跳轉報錯,無論我是用相對路徑還是絕對路徑都報錯,這就搞的我很鬱悶了,這究竟是為什麼呢? 原來這是JSP的安全性作的鬼。

在J2EE中其主要安全性就體現在web工作目錄的WEB-INF資料夾下。

一般為啥要把jsp頁面放在WEB-INF吶?這樣主要是為了網站的安全的角度來說的,WEB-INF是安全目錄Tomcat 預設的訪問路徑是WebRoot下的index.jsp[體現在下圖,它是按順序匹配的],放在WEB-INF下的頁面一般不配置是無法訪問的。

因此如果將一個頁面放在WEB-INF資料夾下,那麼該頁面的安全性將得到提高... 

但有時候當我們需要訪問該頁面時,卻無法訪問,那麼如何能夠訪問WEB-INF資料夾下的頁面呢?

此為專案目錄:


  可以直接將想要訪問的jsp寫在WebContent下,以專案名為url進行訪問

或者在web.xml中做一下配置

<welcome-file-list>
    <welcome-file>/WEB-INF/one.jsp</welcome-file>
  </welcome-file-list>

接下來以<a>標籤講解一下jsp之間的跳轉,重點是要跳轉到WEB-INF下的jsp

通常這個時候我們會試下相對地址/b.jsp、絕對地址/WEB-INF/b.jsp以及${pageContext.request.contextPath}/WEB-INF/b.jsp,但無論怎麼搞都不行,這個時候就比較崩潰。

但是還是可以通過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下頁面使用者可以直接輸入地址訪問。