先上圖

說明
WEB-INF里內容只能由服務器級別才能訪問,客戶端級別不能訪問,
服務器級別的例子就是請求轉發,轉發是由服務器自己處理,跟客戶端(瀏覽器)無關,所以瀏覽器上的地址欄也就不會改變,
客戶端級別的例子就是重定向,兩次請求,兩次回應,所以地址欄會改變,
為什么設定這種權限
為了安全,比如圖中success.jsp在WEB-INF目錄下,在頁面中用超鏈接a標簽或者js的location.href去直接轉向它,會找不到,因為這種是客戶端請求,設定這種權限就能保證一些檔案的安全,
怎么讓客戶端級別可以訪問
放在webapp下,
代碼演示一波
- 看圖可知,login.jsp檔案在wepapp目錄下,也就是專案名下,
login.jsp
<form method="post" action="${pageContext.request.contextPath}/login3.action">
用戶名:<input type="text" name="username"><br>
密 碼:<input type="password" name="password"><br>
<input type="submit" value="登錄">
</form>
- 輸入資料,提交到映射的處理器
UserController
@RequestMapping("login3.action")
public void login3(User user, HttpSession session, HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {
if ("jack".equals(user.getUsername())&&"1234".equals(user.getPassword())){
request.getRequestDispatcher("WEB-INF/jsp/success.jsp").forward(request,response);
}else {
response.sendRedirect("WEB-INF/jsp/fail.jsp");
}
}
- 資料匹配正確,會請求轉發,
注意,success.jsp頁面在WEB-INF目錄下,所以請求轉發的路徑引數要加上WEB-INF/jsp, - 資料匹配不正確,會重定向,
注意,fail.jsp在WEB-INF目錄下,所以該路徑沒寫錯,但是重定向的原理是讓客戶端再次訪問,而WEB-INF目錄下的檔案不能被客戶端訪問,所以會報404-未找到,
有一些標簽,可以訪問到WEB-INF目錄中的檔案
如果符合要求的情況下也可以在jsp中使用,(原理也都是請求轉發)如:
<a href="javascript:<jsp:forward page='WEB-INF/xxxx.jsp'/>"></a>
<jsp:forward page = "/WEB-INF/jsp/test/test.jsp" />
<jsp:include page="WEB-INF/xxx.jsp">
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/186196.html
標籤:其他
上一篇:H5本地存盤
