WEB-INF下的jsp不能访问的问题

放在Tomcat WEB-INF目录下的文件

WEB-INF下的jsp不能访问的问题_第1张图片

image.png


当浏览器访问Result.jsp时,无法正常显示,通过了解才得知,原来Tomcat WEB-INF目录下的文件,浏览器一般无法直接方法,只能通过重定向后才可以访问,如果需要直接访问,可以放在和WEB-INF同级目录下。

通过网上查阅资料得出

WEB-INF目录下的文件不能直接访问,需要映射,jsp放在那里也不能访问,应该是servlet或javabean才行

要想访问Tomcat WEB-INF目录下的文件有如下几个方法

方法1

本来WEB-INF中的jsp就是无法通过地址栏访问的.所以安全.如果说你要访问这个文件夹中的jsp文件需要在项目的web.xml文件中去配置servlet格式差不多的配置就ok了。如下:


  
safety  
/WEB-INF/show.jsp  
  
  
safety  
/show 

然而在配置的时候,web.xm出现红色叉叉,提示The content of element type "web-app" must match "

WEB-INF下的jsp不能访问的问题_第2张图片

image.png

原因大概就是:web.xml中标签顺序不符合web-app_2_3.dtd规范,下面是顺序规范

  icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-
  mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-
  ref*,resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)".

调整位置后,提示错误消失

WEB-INF下的jsp不能访问的问题_第3张图片

调整位置后

访问地址http://localhost:8080/show 就可以看见内容了!


方法2


方法3: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);就不能访问.
下面提供原文链接,怎么访问html的链接 http://blog.csdn.net/eidolon8/article/details/7050114

总结下

jsp放在webroot目录下 这样就可以让用户直接访问,jsp放在web-inf目录下就必须要通过请求才能访问。因此放在web-inf下jsp页面显得要安全。



作者:ReadFaster
链接:https://www.jianshu.com/p/0dd2731598af
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

你可能感兴趣的:(JSP)