복붙노트

[SPRING] 내 WebContent 폴더에서 파일의 실제 경로를 얻으려면 어떻게합니까?

SPRING

내 WebContent 폴더에서 파일의 실제 경로를 얻으려면 어떻게합니까?

내 WebContent 디렉토리에있는 파일에 대한 실제 경로를 가져와 사용해야하는 프레임 워크가 해당 파일에 액세스 할 수 있도록해야합니다. String 파일 만 속성으로 사용하므로 WebContent 디렉토리에서이 파일의 실제 경로를 가져와야합니다.

나는 스프링 프레임 워크를 사용하므로 스프링에서 솔루션을 만들어 낼 수 있어야한다.

해결법

  1. ==============================

    1.이것을 서블릿에 필요로한다면 getServletContext (). getRealPath ( "/ filepathInContext")를 사용하십시오!

    이것을 서블릿에 필요로한다면 getServletContext (). getRealPath ( "/ filepathInContext")를 사용하십시오!

  2. ==============================

    2.getServletContext (). getRealPath ( "") - .war 아카이브에서 내용을 사용할 수있는 경우이 방법은 작동하지 않습니다. getServletContext ()는 null이됩니다.

    getServletContext (). getRealPath ( "") - .war 아카이브에서 내용을 사용할 수있는 경우이 방법은 작동하지 않습니다. getServletContext ()는 null이됩니다.

    이 경우에는 실제 경로를 얻기 위해 다른 방법을 사용할 수 있습니다. 다음은 속성 파일 C : / Program Files / Tomcat 6 / webapps / myapp / WEB-INF / classes / somefile.properties에 대한 경로를 가져 오는 예제입니다.

    // URL returned "/C:/Program%20Files/Tomcat%206.0/webapps/myapp/WEB-INF/classes/"
    URL r = this.getClass().getResource("/");
    
    // path decoded "/C:/Program Files/Tomcat 6.0/webapps/myapp/WEB-INF/classes/"
    String decoded = URLDecoder.decode(r.getFile(), "UTF-8");
    
    if (decoded.startsWith("/")) {
        // path "C:/Program Files/Tomcat 6.0/webapps/myapp/WEB-INF/classes/"
        decoded = decoded.replaceFirst("/", "");
    }
    File f = new File(decoded, "somefile.properties");
    
  3. ==============================

    3.당신은 자바 프로젝트에 귀하의 PC에서 경로를 변경하려면 자바 말해야한다 스프링 사용을 사용하는 경우 :

    당신은 자바 프로젝트에 귀하의 PC에서 경로를 변경하려면 자바 말해야한다 스프링 사용을 사용하는 경우 :

    @Autowired
    ServletContext c;
    
    String UPLOAD_FOLDEdR=c.getRealPath("/images"); 
    

    하지만 서블릿을 사용한다면

    String UPLOAD_FOLDEdR = ServletContext.getRealPath("/images");  
    

    그래서 경로는 / webapp / images / :)가 될 것입니다.

  4. ==============================

    4.이런 상황에서는 리소스 (MyClass.getClass (). getResourceAsStream ())로 필요한 컨텐츠를 추출하여 임시 위치에 파일로 쓰고이 파일을 다른 호출에 사용합니다.

    이런 상황에서는 리소스 (MyClass.getClass (). getResourceAsStream ())로 필요한 컨텐츠를 추출하여 임시 위치에 파일로 쓰고이 파일을 다른 호출에 사용합니다.

    이 방법을 사용하면 jar 파일에만 포함되거나 현재 사용중인 웹 컨테이너에 따라 어딘가에 위치하는 콘텐츠에 신경 쓸 필요가 없습니다.

  5. ==============================

    5.요청을 매개 변수로 포함하십시오. Spring은 매핑 된 메소드를 호출 할 때 요청 객체를 전달합니다.

    요청을 매개 변수로 포함하십시오. Spring은 매핑 된 메소드를 호출 할 때 요청 객체를 전달합니다.

    @RequestMapping .....
    public String myMethod(HttpServletRequest request) {
       String realPath = request.getRealPath("/somefile.txt");
       ...
    
  6. ==============================

    6.Spring 리소스 인터페이스 (특히 ServletContextResource)를 사용할 수 있습니다 : http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/core/io/Resource.html

    Spring 리소스 인터페이스 (특히 ServletContextResource)를 사용할 수 있습니다 : http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/core/io/Resource.html

  7. ==============================

    7.이 방법은 리소스 로더를 사용하여 앱의 파일에 대한 절대 경로를 얻은 다음 몇 개의 폴더를 앱의 루트 폴더로 이동합니다. 서블릿 컨텍스트가 필요하지 않습니다! 이것은 WEB-INF 폴더에 "web.xml"이있는 경우 작동합니다. 이 유형의 구성은 대개 앱에서 외부에 저장하는 것이 가장 좋기 때문에 개발 용도로만 사용하는 것이 좋습니다.

    이 방법은 리소스 로더를 사용하여 앱의 파일에 대한 절대 경로를 얻은 다음 몇 개의 폴더를 앱의 루트 폴더로 이동합니다. 서블릿 컨텍스트가 필요하지 않습니다! 이것은 WEB-INF 폴더에 "web.xml"이있는 경우 작동합니다. 이 유형의 구성은 대개 앱에서 외부에 저장하는 것이 가장 좋기 때문에 개발 용도로만 사용하는 것이 좋습니다.

    public String getAppPath()
    {
        java.net.URL r = this.getClass().getClassLoader().getResource("web.xml");
        String filePath = r.getFile();
        String result = new File(new File(new File(filePath).getParent()).getParent()).getParent();
    
        if (! filePath.contains("WEB-INF"))
        {
            // Assume we need to add the "WebContent" folder if using Jetty.
            result = FilenameUtils.concat(result, "WebContent");
        }
    
        return result;
    }
    
  8. ==============================

    8.개발 및 제작 수준에서 arff.txt를 사용하려는 경우이 도구를 사용하십시오.

    개발 및 제작 수준에서 arff.txt를 사용하려는 경우이 도구를 사용하십시오.

      String path=getServletContext().getRealPath("/WEB-INF/files/arff.txt");
    
  9. from https://stackoverflow.com/questions/2786426/how-can-i-get-real-path-for-file-in-my-webcontent-folder by cc-by-sa and MIT license