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

posted @ 2020-08-06 20:20  柒丶月  阅读(1944)  评论(0编辑  收藏  举报