Web工程下URL地址,有斜槓與沒有斜槓路徑的區別及使用
阿新 • • 發佈:2019-02-09
對於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="">型別<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>