在Javaweb開發中,只要寫URL地址,建議以“/”開頭,也就是使用絕對路徑的方式。
“/”:如果是給伺服器的,代表當前的web工程。給瀏覽器的,代表webapps目錄
代表web工程
1,ServletContext.getRealPath(String path)獲取資源的絕對路徑
2,在伺服器端forward到其他頁面
/** * 2.forward * 客戶端請求某個web資源,伺服器跳轉到另外一個web資源,這個forward也是給伺服器用的, * 那麼這個"/"就是給伺服器用的,所以此時"/"代表的就是web工程
*/ this.getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);
3,使用include指令或者<jsp:include>標籤引入頁面
<jsp:include page="/jspfragments/demo.jsp" />
<%@include file="/jspfragments/head.jspf" %> 代表的都是web工程
代表webapps目錄
1,使用sendRedirect實現請求重定向
使用request.getContextPath()代替"/專案名稱",推薦使用這種方式,靈活方便!
2,使用超連結跳轉
<a href="${pageContext.request.contextPath}/index.jsp">跳轉到首頁</a>
3,Form表單提交
<form action="/JavaWeb_HttpServletResponse_Study_20140615/servlet/CheckServlet" method="post">
<input type="submit" value="提交">
</form>
改進:
<form action="${pageContext.request.contextPath}/servlet/CheckServlet" method="post">
<input type="submit" value="提交">
</form>
${pageContext.request.contextPath}的效果等同於request.getContextPath(),兩者獲取到的都是"/專案名稱"
4,js指令碼和css樣式檔案的引用
<%--使用絕對路徑的方式引用js指令碼--%>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/index.js"></script>
<%--使用絕對路徑的方式引用css樣式--%>
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/index.css" type="text/css"/>
<%--${pageContext.request.contextPath}與request.getContextPath()寫法是得到的效果是一樣的--%>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/login.js"></script>