我有两个目录 image /图片
            page /jsp页面 
           我在Servelt里用到
             request.getRequestDispatcher("/page/regedit.jsp").forward(request,response);
           但我regedit.jsp里面的图片的路径全丢了!!!
             对此小弟十分郁闷,特请高手指点。             在线等待答复。速回!!!

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【fyumin】截止到2008-07-11 15:06:11的历史汇总数据(不包括此帖):
    发帖的总数量:10                       发帖的总分数:190                      每贴平均分数:19                       
    回帖的总数量:6                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:1                        结贴的总分数:20                       
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:9                        未结的总分数:170                      
    结贴的百分比:10.00 %               结分的百分比:10.53 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
      

  2.   

    这大概是跟你的Servlet的Url-pattern有关.
      

  3.   

    那么你直接访问 "page/regedit.jsp" 页面的时候图片能正常显示么?建议用在Jsp中可以用<%=request.getContextPath()%>来检查当前的路径是否正确
      

  4.   

    改成
     request.getRequestDispatcher("/regedit.jsp").forward(request,response); 
    再试一下。
      

  5.   

    不清楚你的目录结构:
    还不行把/去掉
     request.getRequestDispatcher("regedit.jsp").forward(request,response); 
      

  6.   

    另外建议引用图片的时候
    尽量使用绝对路径
    即:
    /site/image/...jpg
    这样的话是不可能出现问题的
      

  7.   

    那这样。假如说:
    我的web项目目录结构为   
      /context/page/存放页面   
      /context/pic/存放图片   
      放在page下的页面需要使用的图片都在pic下,那么html代码应该写img   src="../pic/xxx.jpg"   
      这样的话,直接打开这个页面是没问题。   
      可是我用servlet里的request.getRequestDispatcher     forward到这个页面,页面上的图片路径就不对了。servlet路径是直接映射为context下的,比如/context/LoginServlet   
        
      我看用request.getRequestDispatcher之后那些图片的路径就都变成/context/pic/xxx.jpg了   
      http://localhost:8080/pic/xxx.jpg了,感觉forward后的页面都以context为相对路径了,于是“..”就到了根目录....   
      是不是request.getRequestDispatcher的关系?   
        
      但是用response.sendRedirect的话就没有这个问题了。   
      我清楚sendRedirect和forward的区别,但不知道forward后的页面里的元素怎么路径会有这个问题
      

  8.   

    肯定是图片路径的问题,你把图片路径写成相对项目路径,比如,你的WebRoot下面有一个文件夹是img放图片的,那图片的路径写成/img/xxx.jpg,就能显示出来了。
      

  9.   

    。。
      放在page下的页面需要使用的图片都在pic下,那么html代码应该写img  src="../pic/xxx.jpg"  

    应该就是这里的问题
    你把所有的"../pic/xxx.jpg",换成“/context/pic/xxx.jpg”
    保证没问题
      

  10.   

     request.getRequestDispatcher("/page/regedit.jsp").forward(request,response); 
    该称不用request获取委托对象改用
    getServletContext().getRequestDispatcher("/page/regedit.jsp").forward(request,response); 
    这种方法要传入的参数是第二个资源相对于servlet上下文根的路径即从“/”开始的
      

  11.   

    我认为解决的办法是:将项目跑起来,在图片显示的地方看属性,看看这儿的图片道底是处于什么位置。知道位置后处理起来就容易了。jsp路径很烦人的。使用绝对路径可能会好点。本人刚从事java开发,对这个问题不太了解,只是给出自己的看法。
      

  12.   

    因为你在显示图片的页面的图片路径是针对你现在这个页面的,你提交后是转发,而不是重定向,所以就请求不到你的图片,也许我说的不太清楚,但意思就是转发过来后可能会找不到你的图片,因为在地址栏上的路径不是你网页的路径,而是
    action的路径.