Web-INF下的jsp不能直接访问
直接点击index2.jsp运行:
通过了解才得知,原来Tomcat WEB-INF目录下的文件,浏览器一般无法直接方法,只能通过重定向后才可以访问,如果需要直接访问,可以放在和WEB-INF同级目录下。
通过网上查阅资料得出
WEB-INF目录下的文件不能直接访问,需要映射,jsp放在那里也不能访问,应该是servlet或javabean才行
要想访问Tomcat WEB-INF目录下的文件有如下几个方法
方法1
本来WEB-INF中的jsp就是无法通过地址栏访问的.所以安全.如果说你要访问这个文件夹中的jsp文件需要在项目的web.xml文件中去配置servlet格式差不多的配置就ok了。如下:
<servlet>
<servlet-name>safety</servlet-name>
<jsp-file>/WEB-INF/show.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>safety</servlet-name>
<url-pattern>/show</url-pattern>
然而在配置的时候,web.xm出现红色叉叉,提示The content of element type “web-app” must match "
方法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.getRequestDispatcher("/WEB-INF/a.jsp").forward(request,response);进行派遣访问.但如果web-inf下有a.htm,则用request.getRequestDispatcher("/WEB-INF/a.htm").forward(request,response);就不能访问.
总结
jsp放在webroot目录下 这样就可以让用户直接访问,jsp放在web-inf目录下就必须要通过请求才能访问。因此放在web-inf下jsp页面显得要安全。