JavaWeb - 訪問 WEB-INF 資源幾種方式


方法一

本來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: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,找到 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 生成~

原作者:https://blog.csdn.net/Dream_Weave/article/details/83271027?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare


免責聲明!

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



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