標籤:
參考:http://www.cnblogs.com/woshimrf/p/4817074.html
在web項目中,轉寄時的相對路徑是以第一次請求的資源為基準的,所以轉寄時用相對路徑經常發生404錯誤。
web項目中,使用絕對路徑分兩種:
1.伺服器端,使用絕對路徑找檔案,一般用於轉寄。以‘/‘開頭,‘/‘代表著webapps檔案夾中的項目名。
2.瀏覽器端,使用絕對路徑找伺服器端的檔案,如js指令碼,css指令碼,圖片,表單提交,重新導向等。用完整URL來尋找。
在web項目的index.jsp檔案中,定義了‘/‘===>‘http://localhost:8090/項目名/‘
------------------------------------------------------------------------------------------------------
web項目中‘/‘有兩個含義:1.相對路徑中的根目錄,想當於webapps檔案夾。2.絕對路徑中由index.jsp檔案定義的,想當於http://localhost:8090/項目名/
在web項目中跳轉檔案,是基於部署後的檔案結構,而不是部署前的在myeclipse中的視圖模式。
-------------------------------------------------------------------------------------------------------
web項目的檔案結構:
訪問流程:
第一次訪問personServlet,得到資訊,轉到-->showPerson.jsp檔案顯示,表單提交-->personServlet檔案
例題:
1.轉寄時,相對路徑,絕對路徑:
相對路徑:
request.getRequestDispatcher("/hrManger/pages/showPerson.jsp").forward(request,response);
絕對路徑:
request.getRequestDispatcher("/pages/showPerson.jsp").forward(request,response);
或:
request.getRequestDispatcher("http://localhost:8090/hrManage/pages/showPerson.jsp").forward(request,response);
2.表單提交時,相對路徑,絕對路徑
相對路徑:
<form action="/hrManage/servlet/personServlet">
或:
<form action="personServlet">
原因:第一次是向personServlet檔案請求,所以相對路徑就以他為基準,自然使用相對路徑時,直接寫personServlet便行了。
絕對路徑:
<form action="/servlet/personServlet">
或:
<form action="http://localhost:8090/hrManage/servlet/personServlet">
3.尋找jQuery架包時,相對路徑,絕對路徑
相對路徑:
<script type = "text/javascript" src ="/hrManger/js/jquery.min.js"></script>
或:
<script type = "text/javascript" src ="../js/jquery.min.js"></script>
現在又是以當前檔案為基準,進行相對路徑。
絕對路徑:
<script type = "text/javascript" src ="/js/jquery.min.js"></script>
或:
<script type = "text/javascript" src ="http://localhost:8090/hrManger/js/jquery.min.js"></script>
整個檔案:
personServlet.java檔案
package servlet;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import dao.BaseDao;import entity.Person;public class personServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name"); String sex = request.getParameter("sex"); List<Person> list = new ArrayList<Person>(); BaseDao bd = new BaseDao(); list = bd.selectByCond(name, sex); request.setAttribute("list", list); request.getRequestDispatcher("/pages/showPerson.jsp").forward(request,response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); }}
showPerson檔案:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%@ page import="java.util.*" %><%@ page import="entity.Person" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><!--css樣式 --><style type = "text/css"> .line{ background-color:#aaa; }</style><!--jQuery --><script type = "text/javascript" src ="/js/jquery.min.js"></script><script type = "text/javascript"> $(document).ready(function(){ $("tr:odd").addClass("line"); }); </script></head><body><form action="/hrManage/servlet/personServlet">姓名:<input type = "text" name = "name"/> 性別:<select name = "sex"> <option value = "">--全部--</option> <option value = "男">-男-</option> <option value = "女">-女-</option> </select> <button type = "submit">查詢</button></form><table width="750" cellspacing="0" cellpadding = "0" border="1"> <tr> <td colspan ="6">人員列表</td> </tr> <tr> <td>編號</td> <td>姓名</td> <td>性別</td> <td>年齡</td> <td>等級</td> <td>部門</td> </tr> <c:forEach var = "person" items = "${requestScope.list }"> <!--<td>person.getId()</td>,這個屬於Java代碼,要寫在<%%>裡的 --> <tr> <td>${person.id}</td> <td>${person.name}</td> <td>${person.sex}</td> <td>${person.age}</td> <td>${person.rank}</td> <td>${person.department}</td> </tr> </c:forEach></table></body></html>
servlet檔案的路徑問題:
若servlet檔案的uri為
<servlet-mapping> <servlet-name>servlet</servlet-name> <url-pattern>/servlet/personServlet</url-pattern> </servlet-mapping>
則它的URL為:http://localhost:8090/項目名/servlet/personServlet。
在uri中‘/‘就代表著‘http://localhost:8090/項目名/‘。
關於web項目的路徑問題,小理解。