2016-04-27 23 views
1

Gibt es eine einfache Möglichkeit, Spring Boot Mvc-Projekt für .jsp Ansichten zu generieren?Spring Boot JSP

Ich habe versucht, Projekt in ähnlicher Weise wie Spring Boot Rest Projekt zu erstellen, aber es ist nicht so einfach für mich. Ich habe versucht, official Spring Boot Mvc jsp sample zu verwenden, aber wenn ich versuche, das ich so bekommen Ausnahme auszuführen:

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [sample.jsp.SampleWebJspApplication]; nested exception is java.lang.IllegalStateException: Failed to introspect annotated methods on class org.springframework.boot.context.web.SpringBootServletInitializer 
    at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:187) ~[spring-context-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:321) ~[spring-context-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:243) ~[spring-context-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:273) ~[spring-context-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:98) ~[spring-context-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:681) ~[spring-context-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:523) ~[spring-context-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:765) [spring-boot-1.4.0.BUILD-20160427.203128-289.jar:1.4.0.BUILD-SNAPSHOT] 
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370) [spring-boot-1.4.0.BUILD-20160427.203128-289.jar:1.4.0.BUILD-SNAPSHOT] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-1.4.0.BUILD-20160427.203128-289.jar:1.4.0.BUILD-SNAPSHOT] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1182) [spring-boot-1.4.0.BUILD-20160427.203128-289.jar:1.4.0.BUILD-SNAPSHOT] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1171) [spring-boot-1.4.0.BUILD-20160427.203128-289.jar:1.4.0.BUILD-SNAPSHOT] 
    at sample.jsp.SampleWebJspApplication.main(SampleWebJspApplication.java:33) [classes/:na] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_65] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_65] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_65] 
    at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_65] 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) [idea_rt.jar:na] 
Caused by: java.lang.IllegalStateException: Failed to introspect annotated methods on class org.springframework.boot.context.web.SpringBootServletInitializer 
    at org.springframework.core.type.StandardAnnotationMetadata.getAnnotatedMethods(StandardAnnotationMetadata.java:163) ~[spring-core-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:300) ~[spring-context-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:237) ~[spring-context-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:204) ~[spring-context-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:173) ~[spring-context-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    ... 17 common frames omitted 
Caused by: java.lang.NoClassDefFoundError: javax/servlet/ServletContext 
    at java.lang.Class.getDeclaredMethods0(Native Method) ~[na:1.8.0_65] 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) ~[na:1.8.0_65] 
    at java.lang.Class.getDeclaredMethods(Class.java:1975) ~[na:1.8.0_65] 
    at org.springframework.core.type.StandardAnnotationMetadata.getAnnotatedMethods(StandardAnnotationMetadata.java:152) ~[spring-core-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    ... 21 common frames omitted 
Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContext 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_65] 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_65] 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) ~[na:1.8.0_65] 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_65] 
    ... 25 common frames omitted 
+0

Versuchen zu finden, das Glas ist 'ServletContext' gelegen und versuchen, sie zu importieren und führe es nochmals aus. –

+0

Vielleicht, weil das Glas während des Herunterladens beschädigt wurde. –

+0

Gehen Sie und finden Sie es dann versuchen Sie es per Zip oder anderen Uncompress-Tool zu öffnen und stellen Sie sicher, dass es vollständig heruntergeladen wird. –

Antwort

1

Jede Chance, dass Sie in IntelliJ laufen lassen? Ich habe dieses Problem bemerken auch, und die Lösung ist, die <scope>provided</scope> aus der Feder-boot-Starter-tomcat Abhängigkeit zu entfernen, wie folgt aus:

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-tomcat</artifactId> 
    <!-- <scope>provided</scope> --> 
</dependency> 

Es ist ein Fehler in IntelliJ, so dass es nicht vorgesehen Abhängigkeiten hinzufügen zum Klassenpfad bei lokaler Ausführung.

BEARBEITEN: Das Entfernen des bereitgestellten Bereichs kann Probleme verursachen, wenn Sie es in einem Servlet-Container ausführen. Seien Sie also vorsichtig, eine Erläuterung zur Fehlerbehebung finden Sie in Run Spring-boot's main using IDE.

1

Wie ich weiß, ist die Feder Boot Standardseite Technologie thymeleaf und die offizielle empfiehlt uns, es zu benutzen. Wenn Sie JSP verwenden möchten, könnten Sie einige Konfiguration vornehmen.

Die folgenden Schritte können nützlich sein.

1. Creating src/main/webapp/WEB-INF/jsp folder. 
2. Modify application.properties file. 

spring.mvc.view.prefix: /WEB-INF/jsp/ 
spring.mvc.view.suffix: .jsp 

3.Add jar Unterstützung für jsp. Sie könnten das folgende maven-Repository zu Ihrer Projektdatei pom.xml hinzufügen.

<dependency> 
    <groupId>org.apache.tomcat.embed</groupId> 
    <artifactId>tomcat-embed-jasper</artifactId> 
    <scope>provided</scope> 
</dependency> 

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>jstl</artifactId> 
</dependency> 

Ich hoffe, es hilft. Irgendwelche Bedenken, bitte zögern Sie nicht, lassen Sie es mich wissen.

0

Verwenden Sie eine Maven-Run-Konfiguration mit spring-boot:run als "Befehlszeilen" -Wert.

Viel Glück

0

unten hinzufügen Abhängigkeiten zu Ihrem POM-Datei:

<dependency> 
    <groupId>org.apache.tomcat.embed</groupId> 
    <artifactId>tomcat-embed-jasper</artifactId> 
</dependency> 
<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>jstl</artifactId> 
</dependency> 

unter Struktur erstellen /src/main/resources/META-INF/Ressourcen

Jetzt Der obige Ordner entspricht Ihrem WebContent-Ordner. Darin können Sie Ihren statischen Inhalt platzieren. In WEB-INF Ordner hier und jetzt können Sie platzieren Sie Ihre JSP-Dateien wie jedes andere Web-Projekt.

In Ihrem application.properties Datei unten hinzu:

spring.mvc.view.prefix =/WEB-INF/jsp/

spring.mvc.view.suffix =.

jsp
0

Hinzufügen von Abhängigkeiten in POM-Datei unter

<dependency> 
     <groupId>org.apache.tomcat.embed</groupId> 
     <artifactId>tomcat-embed-jasper</artifactId> 
     <scope>provided</scope> 
    </dependency> 

Voll Code avaliable auf Github Link klicken here

den Code herunterladen und die Eclipse/STS importieren mit Verlassen Maven Projekt

Weiter laufen das Projekt. Gehen Sie zum Paket auf com.chandrakumar.test.demo.

es hat "DemoApplication.java" und klicken Sie mit der rechten Maustaste und wählen Sie ausführen als wählen Sie die Java-Anwendung.

Die Adressleiste des Browsers "http://localhost:8080/".

1

Dieser Blog post erklärt, welche Schritte Sie ergreifen sollten und warum. Es ist ziemlich einfach und ich habe es selbst behoben.

TD: LR

hinzufügen Maven Abhängigkeiten

Um JSP-Unterstützung zu aktivieren, müssen wir ein paar Abhängigkeiten unser neues Projekt in pom.xml hinzuzufügen.

<dependency> 
<groupId>org.apache.tomcat.embed</groupId> 
<artifactId>tomcat-embed-jasper</artifactId> 
</dependency> 
<dependency> 
<groupId>javax.servlet</groupId> 
<artifactId>jstl</artifactId> 
</dependency> 

Legen Sie die JSP-Vorlagen unter src/main/resources/META-INF/resources/WEB-INF/jsp/