關於web項目的路徑問題,小理解。

來源:互聯網
上載者:User

標籤:

參考: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"/>&nbsp;&nbsp;性別:<select name = "sex">        <option value = "">--全部--</option>        <option value = "男">-男-</option>        <option value = "女">-女-</option>    </select>&nbsp;&nbsp;    <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項目的路徑問題,小理解。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.