request.getContextPath()使用情景分享

2021-10-08 15:16:33 浏览数 (1)

request.getContextPath()使用情景分享

<%=request.getContextPath()%>是为了解决相对路径的问题,可返回站点的根路径或者叫根目录,分为两种情况:

  1. 将web项目中的webRoot下的文件直接拷贝到webapps/ROOT下(删除ROOT下的原有文件);
  2. 在Tomcat下的webapps中创建以项目名称命名(当然也可以用其他的名称)的文件夹,并将webRoot下的文件直接拷贝到该文件夹下。 对于第一部署方法,request.getContextPath()的返回值为空(即:"",中间无空格,注意区分null)。 对于第二部署方法,其返回值为:/创建的文件夹的名称。

对于第1种方法,当你直接在浏览器中输入你的服务器ip 端口号,就会到你的jsp页面,而不是tomcat的默认页面,所以你通过request.getContextPath()得到的字符串是为空字符串; 如果你想得到工程文件的实际物理路径,可通过:<%=request.getRealPath("/")%>。 效果:

代码语言:javascript复制
<%

String path = request.getContextPath();

String basePath = request.getScheme() "://" request.getServerName() ":" request.getServerPort() path "/";

%>

path: /jspSmartUpLoad

basePath: http://yangm1203.oicp.net:8080/jspSmartUpLoad/

request.getScheme(): http

request.getServerName(): yangm1203.oicp.net

request.getServerPort(): 8080

实际应用中,一般用来解决jsp测试和生产环境路径不同的问题 request.getScheme(); 返回的协议名称,默认是http。对于ssl则返回"https"

request.getServerName() 返回的是服务器域名,如果是在本地的话就是localhost

getServerPort() 获取服务器端口号

比如<a href="<%=request.getContextPath()%>/catalog.jsp">,但当这两个文件是在同一个目录下时,也可以直接用<a href="catalog.jsp">。 比如你要生成一个文件放在服务器上的一个目录下,可以使用request.getContextPath() /dir,组成一个完整得目录结构!

注意在velocity中的写法可能要改为

代码语言:javascript复制
$!{request.getContextPath()}

一些常用的获取项目根目录写法:

代码语言:javascript复制
在jsp里去<%=request.getContextPath()%>这就是项目的根路径了。
js的引入方法如下:
<script src="<%=request.getContextPath() %> /home/test.js"></script>
css的引入方法:
<link href="<%=request.getContextPath() %>/css/one.css" rel="stylesheet" type="text/css">

0 人点赞