tomcat发布的应用在C盘
D:目录下面有两个html文件:a.html和b.html
a.html大概的内容如下
<html>
<frame id="RightFrame" name="RightFrame" src="b.html">
</html>tomcat的中的servlet通过,直接向response中写入a.html文件内容流的方式,把a.html的内容发给客户端
servlet的url是http://localhost:8080/test/getAHTML,那么访问b.html就变成了http://localhost:8080/test/b.html,因为这里是相对路径,a.html中嵌套的b.html看不到有什么好办法?

解决方案 »

  1.   

    <%=request.getContextPath()%>可以找到文件项目根,然后再去设置对应的绝对路径吧,不过这个办法不是很好
      

  2.   

    如果a.htm变成了字节流,显然是无法执行<frame id="RightFrame" name="RightFrame" src="b.html">的。似乎挺困难的。是不是可以这样:<frame id="RightFrame" name="RightFrame" src="getBHTML">写在a.html中,getBHTML是一个servlet,它可以向你访问A那样去得到B。我觉得行
      

  3.   

    可以的, 
    1. 配置法
      将你D:文件夹也做成一个Web目录. Tomcat的服务器定义里面需要加一句话, 怎么加忘了2. 程序法
      作为文件流, 写一个Servlet, 读取文件返回
      

  4.   

    采用1,配置法的方法更简单一些,但是有可能出现资源文件经常变换在文件系统中的位置,这样的话就需要经常修改tomcat应用发布的配置
    2,程序法也就是 funcreal提出的方法,麻烦一些,因为a.html和b.html都是用户上传的文件,这样不可能让客户修改a.html的内容,那么只能是做一个文件解析的工作,出现超链接的话替换成servlet的方法,比较麻烦
      

  5.   

    SERVLET通过操作本地物理文件路径的方法访问A.HTML,而A.HTML通过HTTP协议访问B.HTML,由于A和B的连接界定于物理文件路径,显然,http协议里的url地址并没有绝对物理路径,所以直接的实现方法是没有的(个人认为)。很明显,上面几位都是通过将a.html和b.html的访问方式变成了一致以后才达到效果的。要么象访问A一样访问B,要么通过设定B所在的CONTEXT使得A和B的url根一致。