jsp首页存在这条语句的作用
<%
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";
%>
<a href="<%= basePath%>article/list">不分页的list</a><br /><p />
request.getSchema()可以返回当前页面使用的协议,http 或是 https;
request.getServerName()可以返回当前页面所在的服务器的名字,如果你的应用部署在本机那么其就返回localhost或者127.0.0.1 ,这两个是等价的;
request.getServerPort()可以返回当前页面所在的服务器使用的端口,就是80;
request.getContextPath()可以返回当前页面所在的应用的名字;
这个语句是用来拼装当前网页的相对路径的。
<a href="...">是用来表明当前页面的相对路径所使用的根路径的。
比如,页面内部有一个连接,完整的路径应该是 http://localhost:80/myblog/authen/login.do
其中http://server/是服务器的基本路径,myblog是当前应用程序的名字,那么,我的根路径应该是那么http://localhost:80/myblog/。
有了这个<basePath... >以后,我的页面内容的连接,我不想写全路径,我只要写 authen/login.do就可以了。服务器会自动把<basePath...>指定的路径和页面内的相对路径拼装起来,组成完整路径。
如果没有这个<basePath...>,那么我页面的连链接就必须写全路径,否则服务器会找不到。
假如项目目录为:Work,则执行以下语句:
<%
System.out.println( "path= " + path);
System.out.println( "path= " + basePath);
%>
输出结果为:
path= /Work
path= http://localhost:8080/Work/