• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    JSP的相对路径如何计算深入研究
    问题描述:

    要在/jsp/index.jsp文件使用图片,如何计算相对路径? 经过Servlet,struts转发后又如何计算相对路径?

    目录结构:

    应用名字:Demo

    demo

    ----webroot

    ----images

    ----go.gif

    ----jsp

    ----index.jsp

    ----css

    ------------------------------------------------------------------------------

    第一种情况:直接访问JSP文件

    URL是 http://localhost/Context path/jsp/index.jsp

    要在index.jsp引用go.gif文件:

    1、使用决对路径

    img src='%=request.getContextPath() %>/images/go.gif'/>

    浏览器寻找方式: 域名+/Context path/images/go.gif ,可找到。

    2、使用相对路径

    img src='../images/go.gif'/>

    浏览器寻找方式:通过地址栏分析,index.jsp所在目录(jsp)的上一层目录(WebRoot)下的images/go.gif文件 。

    3、使用base href

    写%=request.getContextPath() %>太麻烦,可以在每一个jsp文件顶部加入以下代码

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

    img src='images/go.gif'/>

    浏览器寻找方式: basePath的值http://localhost/Context path/再加上images/go.gif,可找到。

    ------------------------------------------------------------------------------

    第二种情况:servlet转发到jsp

    1、使用相对路径

    URL是http://localhost/Context path/servlet_2 (转发到/jsp/index.jsp)

    错误:

    根据/jsp/index.jsp路径计算,得到 img src='../images/go.gif'/>

    正确:

    img src='images/go.gif'/>

    原因:

    index.jsp是保存在服务器端的/jsp/index.jsp目录下面,但通过转发后浏览器并不知道/jsp/目录的存在,因为地址栏中没有体现出来。所以服务器端/jsp/目录并不会对相对路径产生影响

    浏览器寻找方式:通过地址栏分析http://localhost/Context path/servlet_2 ,相对于servlet_2所在目录(/)下面找到images/go.gif文件

    2、使用相对路径

    URL是http://localhost/Context path/servlet/ser/ser/servlet_1 (转发到/jsp/index.jsp)

    “/servlet/ser/ser/servlet_1 是在web.xml文件配置的

    错误:

    根据/jsp/index.jsp路径计算,得到 img src='../images/go.gif'/>

    正确:

    img src='../../../images/go.gif'/>

    原因:

    index.jsp是保存在服务器端的/jsp/index.jsp目录下面,但通过转发后浏览器并不知道/jsp/目录的存在,因为地址栏中没有体现出来。所以服务器端/jsp/目录并不会对相对路径产生影响

    浏览器寻找方式:通过地址栏分析http://localhost/Context path/servlet/ser/ser/servlet_1,相对于servlet_1所在目录(ser)的上一层目录的上一层目录的上一层目录(/)下的images/go.gif文件

    3、使用决对路径

    img src='%=request.getContextPath() %>/images/go.gif'/>

    ------------------------------------------------------------------------------

    总结:相对路径是由浏览器通过地址栏分析出来的,与服务器端文件的存放路径没有关系,由其是使用Servlet,struts转发到某jsp文件后,某jsp在服务器端存放的位置是/a/b/c/d/f/g.jsp , 但经过Servlet,struts转发后,浏览器的地址栏可不一定是/a/b/c/d/f/这样的层次。所以相对路径的计算以浏览器地址栏为准。

    struts2中可以使用命名空间,来保证浏览器地址栏中的目录层次与服务器端目录层次的一致性,这样程序员通过服务器端的目录层次计算相对路径,在浏览器中也是正常的。

    但我们理解了原理,就算不使用命名空间,自己也有强大的控制力。
    您可能感兴趣的文章:
    • JSP对URL链接中的中文乱码处理方法总结
    • jsp中URL传递中文参数的处理方法
    • 在jsp页面如何获得url参数
    • JSP中js传递和解析URL参数以及中文转码和解码问题
    • javascript通过url向jsp页面传递中文参数导致乱码解决方案
    • jsp文件绝对路径的设置方法
    • jsp下显示中文文件名及绝对路径下的图片解决方法
    • 在JSP中处理虚拟路径
    • jsp获取url路径的方法分析
    上一篇:JSP对浏览器发送来的数据进行重新编码的两种方式
    下一篇:jsp和servlet的区别探讨
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    JSP的相对路径如何计算深入研究 JSP,的,相对,路径,如何,计算,