日期:2014-05-17  浏览次数:20716 次

request.getSession().getServletContext().getRealPath("/");想取到项目路径,结果报空指针
大神们请解答下小弟的疑问吧~~

Java code
    public String execute() throws Exception {
        java.io.InputStream is = new java.io.FileInputStream(upload);
        java.io.OutputStream os = new java.io.FileOutputStream(ServletActionContext
                .getServletContext().getRealPath( "/UploadImages" ) + "/" + uploadFileName);
                //"d://upload//"+ uploadFileName);
        
        String s2=httpservletrequest.getSession().getServletContext().getRealPath("/");
        System.out.println(s2);
        byte buffer[] = new byte[8192];
        int count = 0;
        while ((count = is.read(buffer)) > 0) {
            os.write(buffer, 0, count);
        }
        os.close();
        is.close();
//        String s1=ServletActionContext.getServletContext().getRealPath("/");
//        String s2=httpservletrequest.getSession().getServletContext().getRealPath("/") ;
//        System.out.println(s2);
        return SUCCESS;
    }


ServletActionContext.getServletContext().getRealPath("/");拿到的路径是C:\Documents and Settings\hao\Workspaces\MyEclipse 8.5\.metadata\.me_tcat\webapps\pig1.02\
 
而我是想拿到C:\Documents and Settings\hao\Workspaces\MyEclipse 8.5\Pig1.02_testUpload2\WebRoot\ 


------解决方案--------------------
期待高人解决
取出前者是很正确的,因为在运行时eclipse将C:\Documents and Settings\hao\Workspaces\MyEclipse 8.5\Pig1.02_testUpload2\WebRoot 下的内容全部复制到了
C:\Documents and Settings\hao\Workspaces\MyEclipse 8.5\.metadata\.me_tcat\webapps\pig1.02\目录下,其中pig1.02是你调试Pig1.02_testUpload2设置的工程名
------解决方案--------------------
要么固定路径,要么就是第一种情况,没提选择。

第一个路径才是程序运行时可见的路径,
第二个路径是开发时的路径,对程序运行起来已经不可见了,用了也没意义,

而且只有当图片放在第一个路径的UploadImages目录下时,在WEB中才可以访问这个图片。