訪問WEB-INF下JSP資源的幾種方式(轉)


訪問WEB-INF下JSP資源的幾種方式

 方法一:

本來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>
</servlet-mapping>

訪問地址:http://localhost:8080/runtain/xxx
即可訪問jsp頁面內容

 

方法二

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

方法三
   request.getRequestDispatcher("/WEB-INF/a.jsp").forward(request, response);

 

怎么樣讓servlet訪問web-inf下的網頁或jsp文件呢?

因為web-inf下,應用服務器把它指為禁訪目錄,即直接在瀏覽器里是不能訪問到的。
因些,可以讓servlet進行訪問,如web-inf下有a.jsp,

則可以用request.getRequestDispatcher("/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.xml,找到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>

隨后,此時可訪問a.htm。

a.html在work/web-inf/下者有a$htm.class,a$html.class生成


免責聲明!

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



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