1、首先 jsp 是在 Server 端执行,由 jsp 引擎编译成 servlet,然后执行,所以很多人说 jsp 就是一个 servlet
2、jsp 中调试不如 servlet 中方便,建议你先在 servlet 调试通过,再放进 jsp 调试

解决方案 »

  1.   


    写绝对路径是没有问题的 可以找的到
    但是相对路径就不可以了
    怀疑是通过web后 走的tomcat的路径 所以一直提示找不到文件
      

  2.   


    写绝对路径是没有问题的 可以找的到
    但是相对路径就不可以了
    怀疑是通过web后 走的tomcat的路径 所以一直提示找不到文件
      

  3.   


    写绝对路径是没有问题的 可以找的到
    但是相对路径就不可以了
    怀疑是通过web后 走的tomcat的路径 所以一直提示找不到文件能不能把这个路径写在属性文件里?
      

  4.   

    现在这个不是servlet,要是servlet还是拼个全路径出来
      

  5.   


    写绝对路径是没有问题的 可以找的到
    但是相对路径就不可以了
    怀疑是通过web后 走的tomcat的路径 所以一直提示找不到文件能不能把这个路径写在属性文件里?写在属性文件里是什么意思呢?
    property?
      

  6.   

    其实也可以给这个方法加个参数,把路径传进去
    最终组装成http://ip:duankou/images/book.xml
    http://ip:duankou/这一部分可以通过request的相关API获得后台类中直接写成:传进来的参数+images/book.xml但是我觉得最好还是写在属性文件里
      

  7.   

    你看一下TOMCAT下面是否有这个文件吧,有时候是Tomcat下面没有这个文件
      

  8.   


    写绝对路径是没有问题的 可以找的到
    但是相对路径就不可以了
    怀疑是通过web后 走的tomcat的路径 所以一直提示找不到文件能不能把这个路径写在属性文件里?写在属性文件里是什么意思呢?
    property?就是把那个方法中用的路径写在配置文件中,然后再类的方法中再去读那个配置文件取路径,property、xml这些文件都可以
      

  9.   

    在程序里调用文件,分为几种情况:
    1. 如果这个文件是程序的配置文件,肯定跟着程序,程序部署到哪就跟到哪,这样的文件,如果是部署时不需修改的,可以写在src里的某个包下,经过编译,会进到classes里,然后引用文件的类用XXX.class.getResourceAsStream("/com/xxx/xxx/xxx.ext")这种方式来读取这个文件。如果是部署时需修改的,一般写在WEB-INF下的某个自建目录下,比如WEB-INF/config/xxx,然后程序中写一个取WebRoot的工具类,该类从当前class的物理路径向上查找,直到找到“WEB-INF”后,再向上一级,就是工程的根,然后以后找工程中的任何东西都可以通过这个工具类找到根再加上相对路径。这个根只计算一次就长驻内存,以后直接调用就可以。
    String classPathRoot = WebRootUtil.class.getResource("/").getFile();
    File classPath = new File(classPathRoot);
    while(true) {
    classPath = classPath.getParentFile();
    if (classPath.getName().equals("WEB-INF")) {
    classPath = classPath.getParentFile();
    break;
    }
    }
    String webRoot = classPath.getAbsolutePath();
    2. 如果这个文件是用户生成的文件,比如用户上传,或者是在程序运行中生成的某些文件,一般要通过配置指定一个位置,然后程序通过读取配置来找到这个路径,因为在部署时这个路径通常是要特殊管理的,比如要给特殊的权限,以让程序可以读写这个目录,另外如果是集群多台服务器统一读一个路径,很可能还是一个网络上的位置,而不是本机的某个路径。这时需要通过nfs或rsync等手段把某个目录映射到网络上的某个硬盘位置,以让程序像读本地文件一样读网络上的文件。总而言之,在程序读取文件时,尽量要考虑将来程序部署到不同的环境时的情况,而不是当时能读到就行。
      

  10.   

    如果你实在非要想知道你怎么能读到那个文件,你就在程序里往./xxx目录下写个文件,然后看看这个xxx目录生成在哪了就行了,一般应该是生成在了tomcat/bin下面了,因为整个程序的启动的地方是在tomcat/bin,你整个程序运行时的当前目录就是tomcat/bin下面,如果你是用eclipse启动了,看看是不是生成在了eclipse的安装路径下了。或者你new File(".").getAbsolutePath();把这个输出到日志或者控制台,就知道当前路径在哪了。
      

  11.   

    推荐你用个方法,在你调用的类里面写一个相对路径下的空文件,运行下,看文件生成在什么地方(在tomcat中的位置),然后根据这个位置对你类里面要读取文件的位置进行修改。