javascript
当前路径_[JSP] 07 JSP 路径问题
首先先明確一下下列URL的
假設(shè)一個URL是這樣的losthost:8080/myservlet/path
服務(wù)器根路徑:losthost:8080/
項目根路徑:losthost:8080/myservlet/
明確了服務(wù)器根路徑和項目根路徑之后,我們就可以開始學(xué)習(xí)后面的知識了
servlet路徑問題
請求轉(zhuǎn)發(fā)和重定向的相對路徑寫法總結(jié):
Servlet重定向jsp
resp.sendRedirect("jsp的相對路徑/servlet的別名");//重定向jsp頁面Servlet請求轉(zhuǎn)發(fā)jsp
req.getRequestDispatcher("jsp的相對路徑/servlet的別名")
.forward(req, resp);//請求轉(zhuǎn)發(fā)到j(luò)sp頁面服務(wù)器根目錄
服務(wù)器的webapps目錄路徑 localhost:8080/
項目根目錄
服務(wù)器的webapps目錄下項目路徑 localhost:8080/jsp/
注意:
以上兩種寫法其實都是相對路徑,相對路徑指的是從當前請求路徑查找jsp所經(jīng)過的路徑。
請求轉(zhuǎn)發(fā)和重定向的絕對路徑寫法總結(jié):
重定向:
在重定向中的路徑中第一個/表示服務(wù)器根目錄。
示例:
resp.sendRedirect("/虛擬項目名/資源路徑");//重定向jsp頁面請求轉(zhuǎn)發(fā):
在請求轉(zhuǎn)發(fā)中第一個/表示項目根目錄
示例:
tDispatcher("/資源路徑").forward(req, resp);//請求轉(zhuǎn)發(fā)到j(luò)sp頁面jsp路徑問題
精華總結(jié):
- 在jsp頁面中進行資源之間的跳轉(zhuǎn)時,使用絕對路徑 。
- 在jsp中路徑中的第一個/表示服務(wù)器根目錄。
- 在Myeclipse中創(chuàng)建的jsp頁面會自動生成路徑處理代碼basePath而basePath的值為當前項目 根目錄。
- request.getSchema()返回的是當前連接使用的協(xié)議,一般應(yīng)用返回的是http、SSL返回的是https;
- request.getServerName()返回當前頁面所在的服務(wù)器的名字;
- request.getContextPath()返回當前頁面所在的應(yīng)用的名字。
問題:
在jsp頁面中進行資源之間的跳轉(zhuǎn)時,如果書寫的是相對路徑這樣會造成如果當前文件的路徑發(fā)生變更,從當前路徑查找資源的相對路徑都要重新進行書寫。
解決:
將相對路徑編程絕對路徑
使用:
在jsp中路徑中的第一個/表示服務(wù)器根目錄。
示例:
<a href="/虛擬項目名/資源路徑">訪問關(guān)鍵字</a>注意:
Myeclipse
創(chuàng)建的jsp頁面會自動生成路徑處理代碼basePath
而basePath的值為當前項目根目錄,并且在head標簽中使用了
<base href="<%=basePath%>">
相當于將當前頁面的資源全部默認定位為從項目根目錄開始查找,我們就不需要寫第一個/了
IDEA
需要手動輸入或者更改模板
頁面報錯處理
注意:
basePath方式和添加/方法只能二選一。
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
System.out.println(basePath);
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'path.jsp' starting page</title><!-- 問題:在jsp頁面中進行資源之間的跳轉(zhuǎn)時,如果書寫的是相對路徑這樣會造成如果當前文件的路徑發(fā)生變更,從當前路徑查找資源的相對路徑都要重新進行書寫。解決:將相對路徑編程絕對路徑使用:在jsp中路徑中的第一個/表示服務(wù)器根目錄。示例:<a href="/虛擬項目名/資源路徑">訪問關(guān)鍵字</a>注意:在Myeclipse中創(chuàng)建的jsp頁面會自動生成路徑處理代碼basePath而basePath的值為當前項目根目錄,并且在head標簽中使用了<base href="<%=basePath%>">相當于將當前頁面的資源全部默認定位為從項目根目錄開始查找,我們就不需要寫第一個/了注意:basePath方式和添加/方法只能二選一。--></head><body>我是path.jsp<a href="a/a.jsp">a.jsp</a></body>
</html>Balmy:[Servlet] 17 Servlet 路徑問題?zhuanlan.zhihu.com
總結(jié)
以上是生活随笔為你收集整理的当前路径_[JSP] 07 JSP 路径问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 线程组多次调用_详细分析 Java 中启
- 下一篇: 动态加载的html没有js效果,JS利用