WEB-INF下的jsp頁面使用者不能直接訪問如何解決?
阿新 • • 發佈:2019-01-29
應用伺服器把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);就不能訪問.
因此,可以讓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);就不能訪問.
至於原理的話,可以去看看Tomcat的原始碼。
WEB-INF下的jsp直接在連結中是無法請求到的,需要作一個action或者servlet的跳轉,如<a href='index.action'>首頁</a>,web.xml中的servlet可以這樣配置:
<servlet>
<servlet-name>index</servlet-name>
<servlet-class>跳轉到首頁的action</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>index</servlet-name>
<url-pattern>/index.action</url-pattern><!--對映的路徑-->
</servlet-mapping>
建議把jsp從WEB-INF中拿出來。