JSP中的相对路径解惑

 

简单示例

 

JSP页面中,我们经常有引用各种图片等资源,例如下面的jsp片段中
<div class="main">
      <a href="http://www.sina.com.cn/abc.htm">
              <strong>我的档案</strong>
     </a>
      <a href="#" onclick="show()">
           <img id="op" src="/images/close.gif" class="op" alt="">
     </a>
</div>


在src有两种引用方法:
      1、src="/images/close.gif" class="op" alt="">
      2、src="images/close.gif" class="op" alt="">

这两种方法的具体含义(以Web容器为Tomcat为例):

      1、第一种方法前面有“/”,表示引用的tomcat 的webapps的images目录中的gif文件,但如果你的web引用程序没有部署到root目录下(例如xiaonei),那么src正确的写法应该是src="/xiaonei/images/close.gif" class="op" alt="">
      2、第二种方法要视你的jsp文件所在的目录而定,也就是引用的目录为jsp文件所在的目录下的子目录images

 

 

 

 

第一类 客户端的html相对路径:

 

有个html文件:a.html,其中有<link href="one.css" rel="stylesheet" type="text/css">,其中href属性表示引用的css文件的路径。

one.css:表示one.css和a.hmtl处于同一个目录。

user/one.css:表示one.css处于a.html所在目录的子目录user中。

../one.css:表示one.css位于a.hmtl上一级目录中。

 

../style/one.css:表示one.css位于a.hmtl上一级目录的子目录style中。

../../one.css:表示one.css位于a.hmtl上一级目录的上一级目录中。

./one.css:表示和a.hmtl同一目录。

 

/style/one.css:表示在站点根目录的子目录style中。

 

我们称上述相对路径为html相对路径。

 

当然也可以这样:

http://www.sina.com.cn/style/one.css:表示在www.sina.com.cn站点的根目录的子目录style中。

 

 

第二类 服务器端的相对路径:

 

服务器端的相对地址指的是相对于你的web应用的地址,这个地址是在服务器端解析的(注意:html和javascript中的相对地址是由客户端浏览器解析的,这两类相对路径是不同的),也就是说这时候在jsp和Servlet中的相对地址应该是相对于你的web应用,即相对于http://192.168.0.1/webapp/的。

 

例如一个Servlet示例代码:

 

public class LoginServlet extends HttpServlet {

 public LoginServlet() {
  super();
 }

 public void destroy() {
  super.destroy();
 }

 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  this.doPost(request, response);
 }

 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  response.setContentType("text/html; charset=UTF-8");
  PrintWriter out = response.getWriter();
  out.println("<!DOCTYPE HTML PUBLIC /"-//W3C//DTD HTML 4.01 Transitional//EN/">");
  out.println("<HTML>");
  out.println("  <HEAD><TITLE>A Servlet</TITLE>");
  out.println("    <TITLE>A Servlet</TITLE>");
  out.println("    <script src="/js/one.js"></script>");
  out.println("  <HEAD>");
  out.println("  <BODY>");
  out.print("    This is ");
  out.print(this.getClass());
  out.println(", using the POST method");
  out.println("  </BODY>");
  out.println("</HTML>");
  out.flush();
  out.close();
 }

 public void init() throws ServletException {
  
 }

}

其中 out.println("    <script src="/js/one.js"></script>");的src的值要注意是以应用的根目录为相对的。

 

 

亦或是服务器端的JSP页面中,可以这样写:<script src="<%=request.getContextPath() %> /js/one.js"></script>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值