request.getScheme()+”://”+request.getServerName()+”:”+request.getServerPort(

來源:互聯網
上載者:User

String path = request.getContextPath();
String basePath = request.getScheme()
+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    <base href=" <%=basePath%>">

這個語句是用來拼裝當前網頁的相對路徑的。

<base href="...">是用來表明當前頁面的相對路徑所使用的根路徑的。
比如,頁面內部有一個串連,完整的路徑應該是 http://localhost:80/myblog/authen/login.do
其中http://
server/是伺服器的基本路徑,myblog是當前應用程式的名字,那麼,我的根路徑應該是那麼http://localhost:80/myblog/。

有了這個 <base ... >以後,我的頁面內容的串連,我不想寫全路徑,我只要寫 authen/login.do就可以了。伺服器會自動把 <base ...>指定的路徑和頁面內的相對路徑拼裝起來,組成完整路徑。
如果沒有這個 <base...>,那麼我頁面的連連結就必須寫全路徑,否則伺服器會找不到。

request.getSchema()可以返回當前頁面使用的協議,就是上面例子中的“http”
request.getServerName()可以返回當前頁面所在的伺服器的名字,就是上面例子中的“localhost"
request.getServerPort()可以返回當前頁面所在的伺服器使用的連接埠,就是80,
request.getContextPath()可以返回當前頁面所在的應用的名字,就是上面例子中的myblog
這四個拼裝起來,就是當前應用的跟路徑了

最近在自學struts,被裡面struts中action 的path與form表單的action屬性弄迷糊了。

struts-config.xml 檔案中,action元素中的path屬性工作表示的是瀏覽器地址欄中相對於應用程式根目錄的請求路徑,與form 中提交表單以後有誰處理的action屬性指定的根路徑一致。(只是一致,千萬不要以為是絕對相等~)

例如:form表單的提交處理請求是classesAdd.do,其在ie地址欄中的路徑如下所示,

http://localhost:9000/Struts_study/classesMan/classesAdd.do

紅色部分表示的根路徑,所以,action中的classesAdd.do請求的完整路徑是classesMan/classesAdd.do

<form name="form1" action="classesAdd.do" method=post>

所以 struts 中的action 的path路徑是指/classesMan/classesAdd。

大家可以看著瀏覽器的地址欄加以配置。祝大家晚上睡覺快樂。

 

補充一下吧,form中的action的預設路徑就是當前路徑,

而struts中的action 的path屬性預設路徑為根路徑,所以要加上所在的檔案夾得路徑。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.