jsp訪問WEB-INF下面的資源

 

方法1
本來WEB-INF中的jsp就是無法通過地址欄訪問的.所以安全.如果說你要訪問這個文件夾中的jsp文件需要在項目的web.xml文件中去配置servlet就ok了.

如下:
<servlet>
         <servlet-name>runtain</servlet-name

>
         <jsp-file>/WEB-INF/INF.jsp</jsp-file>
</servlet>
<servlet-mapping>
         <servlet-name>runtain</servlet-name>
         <url-pattern>/XXX</url-pattern>

訪問地址:http://localhost:8080/runtain/xxx
就可以看見內容了.!

方法2

<jsp:forward page = "/WEB-INF/jsp/test/test.jsp" />


方法3

request. getRequestDispatcher("/WEB-INF/a.jsp").forward(request, response);
 怎麼樣讓servlet訪問web-inf下的網頁或jsp文件呢.在web-inf下,應用服務器把它指爲禁訪目錄,即直接在瀏覽器裏是不能訪問到的.
因些,可以讓servlet進行訪問,如web-inf下有a.jsp則可以用request. getRequestDispatche("/WEB-INF/a.jsp").forward(request,response);進行派遣訪問.但如果web-inf下有a.htm,則用request. getRequestDispatcher("/WEB-INF/a.htm").forward(request,response);就不能訪問.

一開始想不通,覺得怪.後來想想,jsp其實也是servlet,會自動編譯的,於是work目錄下會有/web-inf/a$jsp.class類型,於是有頭緒了,讓應用服務器能夠編譯.htm,如a$htm.class.抱有這個想法,開始動手

在tomcat下的conf/web,找到jsp的訪問方式,

<servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>*.jsp</url-pattern>
   </servlet-mapping>

於是在下面添加

<servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>*.htm</url-pattern>
   </servlet-mapping>
   <servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>*.html</url-pattern>
   </servlet-mapping>

結果:一切OK,訪問a.htm,和a.html在work/web-inf/下者有a$htm.class,a$html.class生成

 

在jsp中設置一個request.getContextPath 可以直接訪問WEB-INF外面的文件。以上辦法只是常用的解決方案,現在需要的是:WEB-INF下的資源自己相互訪問都成問題!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章