1. 程式人生 > >Web工程下URL地址,有斜槓與沒有斜槓路徑的區別及使用

Web工程下URL地址,有斜槓與沒有斜槓路徑的區別及使用

對於Web工程下URL地址,有兩種寫法: ① 絕對路徑(“以’/ ‘開頭的路徑”) ② 相對路徑(”不以’/ ‘開頭的路徑“)

對於絕對路徑的URL(“以’/ ‘開頭的路徑”)需要根據這個URL是給伺服器用的,還是客戶端瀏覽器用的。

  • ① 如果是給伺服器用的,則”/”代表當前應用(如這裡的RequestAndResponse或者是你的web專案路徑WebContent、WebRoot);
  • ② 如果是給客戶端瀏覽器用的,則”/”代表當前站點(如這裡的http://localhost:8080/或者是tomcat下的> webapps);

例子:

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        //1.
轉發型別:(給伺服器用的地址) //request.getRequestDispatcher("/page/test1.jsp").forward(request, response);//正確 //request.getRequestDispatcher("page/test1.jsp").forward(request, response);//相對於當前web專案 正確 //request.getRequestDispatcher("/RequestAndResponse/page/test1.jsp").forward(request, response); //HTTP Status 404 - /RequestAndResponse/RequestAndResponse/page/test1.jsp
//2.重定向型別:(給瀏覽器用的地址) //response.sendRedirect("/page/test1.jsp");//error: http://localhost:8080/page/test1.jsp //response.sendRedirect("page/test1.jsp");//正確 //response.sendRedirect("/RequestAndResponse/page/test1.jsp");//正確 //3.獲取資源真實路徑:(給伺服器用的) response.setHeader("Content-Type", "text/html;charset=utf-8"
); OutputStream out = response.getOutputStream(); String path = this.getServletContext().getRealPath("/page/test1.jsp");//(1)正確: String path = this.getServletContext().getRealPath("page/test1.jsp"); //(2)正確: String path = this.getServletContext().getRealPath("/RequestAndResponse/page/test1.jsp");//(3)錯誤地址得到的是:E:\workspace\jsp\.metadata\.me_tcat\webapps\RequestAndResponse\RequestAndResponse\page\test1.jsp //4.獲取資原始檔輸入流物件:(給伺服器用的) InputStream in = this.getServletContext().getResourceAsStream("/page/test1.jsp");//正確:正確輸出test1.jsp頁面 InputStream in = this.getServletContext().getResourceAsStream("page/test1.jsp");//正確:正確輸出test1.jsp頁面 InputStream in = this.getServletContext().getResourceAsStream("/RequestAndResponse/page/test1.jsp");//錯誤java.lang.NullPointerException; }
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
<base href="<%=basePath%>">
<title>My JSP 'test2.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
 </head>
<body>
 5. 給客戶端瀏覽器用的地址-form action=""&gt;型別<br>
表單1:
<form action="/page/test1.jsp">
 <input type="text" name="username" value="中國">
 <input type="submit" value="提交" name="button">
 (action="/page/test1.jsp" 地址錯誤=localhost:8080/page/test1.jsp)
 </form>
 <br>
 表單2:
 <form action="page/test1.jsp">
 <input type="text" name="username" value="中國">
 <input type="submit" value="提交" name="button">
 (action="page/test1.jsp" 地址正確)
 </form>
 <br>
 表單3:
 <form action="/RequestAndResponse/page/test1.jsp">
 <input type="text" name="username" value="中國">
 <input type="submit" value="提交" name="button">
 (action="/RequestAndResponse/page/test1.jsp" 地址正確)
 </form>
 <br>
 表單4:
 <form action="../page/test1.jsp">
 <input type="text" name="username" value="中國">
 <input type="submit" value="提交" name="button">
 (action="../page/test1.jsp" 地址錯誤,跳轉至http://localhost:8080/page/test1.jsp)
 </form>
 <br>
 6. 給客戶端瀏覽器用的地址 a標籤
 <a href="/page/test1.jsp">連線1(href="/page/test1.jsp" 地址錯誤)</a><p>
 <a href="page/test1.jsp">連線2(href="page/test1.jsp" 地址正確)</a><p>
 <a href="/RequestAndResponse/page/test1.jsp">連線3(href="/RequestAndResponse/page/test1.jsp" 地址正確)</a> <p> 
 <a href="../page/test1.jsp">連線4(href="../page/test1.jsp" 地址錯誤,跳轉至http://localhost:8080/page/test1.jsp)</a><p>
 </body>
</html>