WebRoot根目录下分别有css,pageImages,userPages
当前显示异常的A.jsp页面就放在userPages底下.jsp发布的页面识别不了这样的相对路径:
"../css/style.css"或<img src="../pageImages/5-22.gif"
导致在设计视图里都能正确看到页面布局或图片,可是发布后浏览就显示不正常了(完全引用不了这些样式或图片).如果将路径统一换成"<%=request.getContextPath() %>/css/style.css"或<img src="<%=request.getContextPath() %>/pageImages/5-22.gif" 
(<%=request.getContextPath() %>用来找到相对路径)就能在发布的时候正常浏览,可是到了设计视图又显示不了.
两头为难,该怎么解决啊?

解决方案 »

  1.   

    设计视图用"../css/style.css"或<img src="../pageImages/5-22.gif",
    发布时再换回来<%=request.getContextPath() %>
      

  2.   

    有的时候要看你用JSP帮你生成的高级版本还是基础版本路径跟这个有关系,有的时候前面的东西根本就不要自己去获得,高级的会帮你生成一个BASE 路径
      

  3.   

    request.getContextPath() 这是从根路径开始查找的,对项目来说是绝对路径呀.
    jsp发布的页面识别不了这样的相对路径:
    "../css/style.css"或<img src="../pageImages/5-22.gif"如果用相对路径那要看你当前所在什么路径下.把这些搞清楚了应该不会错的!
      

  4.   

    我看了,有会自动生成一个basepath的,可是它是WebRoot的上一级文件,也就是当前项目的文件夹.
    楼上的tuxingxing,谢谢你的群啊,会加的.
    绝对路径行不通,我做这个项目得换两个地方做.也不是治根的办法.
    大家还有什么好的方法吗?比如刚才的bluter1104怎么引用高级的jsp啊?
    我试试去.
      

  5.   

    哦,刚试过,我用的是高级的JSP模板啊.
    不是基础的.
      

  6.   

    哈哈,当初学JSP时也是路径问题,搞的头都大,后来全用base,就OK乐
      

  7.   

    所以说。以后JSP的时候都用绝对的。呵呵
      

  8.   


    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">看看你这里有没有base标签, 有的话表示你的相对路径是相对于根目录,如果没有就是相对于当前目录,
    你改一下试试吧,我感觉是这里的问题
      

  9.   

    用绝对路径<%=path%>/css/style.css
      

  10.   

    喔靠,发现解决方法了.
    当显示异常的代码头部拼接basePath字符串就搞定了.如下:
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/userPages/";
    哈哈,这才是治根的法子啊!
    eclipse不会自动帮我们加上去,只有我自己手动加了.
      

  11.   

    相对路径很烦的 你要明确知道该页面的路径才行,万一跳转了一次,路径变了就OVER了。
    用绝对路径 就不用考虑 页面跳来跳去后 的路径到底是什么了。
    所以我觉得 也是绝对路径安全点 不会错。
    用c标签 也可以:<c:url value="[相对路径]"/>
      

  12.   


    <%
      String path =request.getContextPath();
     %>
    "../css/style.css"或<img src="../pageImages/5-22.gif"
    或<%=path %>/css/style.css这样是一定行的
      

  13.   

    呵呵,大家别争了,还是用相对的吧,假如你项目让别人拷到别的路径底下那岂不是麻烦得要死.
    而我直接改了以下的,上哪都OK,何乐而不为呢.
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/MyPages/";
    %>
    引用时依然:
    <img src="../pageImages/5-22.gif"
    多好啊!