2015-05-15 3 views
0

У меня есть простая программа, которая позволяет мне сопоставлять HTTP-запросы с функцией - это здорово, поэтому я решил, что вместо того, чтобы просто возвращать случайную строку, я мог бы просто как легко вернуть HTML-страницу в строчном формате и, таким образом, иметь возможность динамически обслуживать статические HTML-страницы.Как загрузить файловый ресурс из скомпилированного проекта Maven/Spring

Проблема в том, что я не могу загрузить ресурс веб-страницы.

Мой проект имеет такую ​​структуру:

projectFolder 
    pom.xml 
    -> src 
     -> main 
       -> webapp 
       home.html 
       -> java 
        -> redway 
         MLoader.java 
         Application.java 

Как я сказал, что моя программа работает нормально, если я просто хочу, чтобы вернуть строку, он пытается загрузить файл home.html, что я не могу, кажется, в частности, моя проблема заключается в том, как получить правильный путь к ней.

Это последнее, что я пробовал:

package redway; 

import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RestController; 

import java.net.URL; 
import java.io.*; 

@RestController 
public class MLoader { 

    public static final String HOME_HTML = "src/main/webapp/home.html"; 

    @RequestMapping("/home") 
    public String home() { 

     String page = ""; 
     String line; 

     URL url = this.getClass().getClassLoader().getResource(HOME_HTML); 

     try (BufferedReader reader = new BufferedReader(new InputStreamReader (new FileInputStream(url.toString()),"UTF-8"))){ 
      while((line = reader.readLine()) != null) { 
       page += line; 
      } 
     } catch (IOException e) { 
      return "unable to load file..."; 
     } 

     return page; 
    } 

} 

Вот мой pom.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<project 
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>org.springframework</groupId> 
    <artifactId>HTMLLoader</artifactId> 
    <version>1</version> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.2.3.RELEASE</version> 
    </parent> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
    </dependencies> 

    <properties> 
     <java.version>1.7</java.version> 
    </properties> 


    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

    <repositories> 
     <repository> 
      <id>spring-releases</id> 
      <url>https://repo.spring.io/libs-release</url> 
     </repository> 
    </repositories> 
    <pluginRepositories> 
     <pluginRepository> 
      <id>spring-releases</id> 
      <url>https://repo.spring.io/libs-release</url> 
     </pluginRepository> 
    </pluginRepositories> 
</project> 

И просто для хорошей мерой здесь мой файл, содержащий Apllication.java мой основной метод:

package redway; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 

@SpringBootApplication 
public class Application { 
    public static void main (String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 
} 

Я возился с ним на пару Hourse, и это сводит меня с ума, потому что я уверен, что т здесь должно быть действительно простое объяснение. Я просто играю с этим на данный момент, поэтому я уверен, что это не лучший подход к созданию динамического веб-приложения, но я все равно хотел бы знать, что я сделал неправильно.

ответ

0

Maven подход поставить HTML-файлы (или любые другие файлы ресурсов) при SRC/основные/ресурсы/

после этого попробовать

this.getClass().getResource("/home.html") 
+0

Она компилирует, но он выдает эту ошибку во время выполнения: Пт Май 15 21:35:41 BST 2015 Произошла непредвиденная ошибка (тип = Внутренняя ошибка сервера, статус = 500). Нет сообщений –

+0

Что я думаю, поэтому я посмотрел в фактическом файле jar, чтобы проверить его местоположение, и я не могу найти ресурс в банке. Это может показаться глупым, потому что я новичок в Maven, но мне нужно включить его в файл pom.xml? Я думаю, может быть, это никогда не было собрано в банку? –

+0

проверьте свою банку в целевой папке, например, jar tf target/your-name.jar –

Смежные вопросы