Le fichier JSP ne rend pas dans L'application Web de démarrage de printemps

j'ai une application Web de démarrage à ressort qui fonctionne avec Tomcat intégré (par défaut). Quand il sert des fichiers JSP dans le cadre du rendu de la vue que j'ai spécifiée dans mon contrôleur, les JSP ne sont pas rendus en tant que tels, et à la place imprimer le contenu. Par exemple:

de l'index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html lang="en">
    <head></head>
    <body>Test</body>
</html>

lorsque la vue est rendue dans les navigateurs, le contenu ci-dessus est affiché, au lieu du contenu attendu:

Test
46
demandé sur Nick Spacek 2013-12-16 05:13:01

13 réponses

assurez-vous que votre pom.xml spécifie la dépendance Tomcat JSP comme suit:

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

il semble que Tomcat intégré traite le rendu JSP comme facultatif.

comme mentionné ci-dessous, ce bocal est parfois nécessaire aussi bien:

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

(j'ai ajouté fourni puisque ce pot devrait être inclus par le contenant de servlet.

87
répondu Nick Spacek 2014-12-30 12:01:49

vous n'aurez pas besoin d'une mais de deux dépendances (jasper et jstl) dans votre pom.xml pour que cela fonctionne.

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

    <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>
</dependencies>
20
répondu Sezin Karli 2014-03-21 07:35:31

pour moi a travaillé le même comme Dan mentionné. Suppression de la portée prévue .

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

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

Merci guy's!

12
répondu JaySon 2016-11-08 11:43:56

a travaillé pour moi aussi, mais, j'ai dû supprimer

<scope>provided</scope>

<dependency>
  <groupId>org.apache.tomcat.embed</groupId>
  <artifactId>tomcat-embed-jasper</artifactId>
</dependency>
11
répondu Dan 2016-09-23 21:31:11

mieux vous pouvez utiliser gradle (qui rattrape Maven). Utilisez cette dépendance dans build.dossier gradle.

//dépendance Requise pour les JSP

providedRuntime 'org.apache.tomcat.embed:tomcat-embed-jasper'
9
répondu Aravind Cheekkallur 2014-10-29 08:48:06

je pense que vous avez manqué une configuration parce qu'il est facile d'intégrer JSP il suffit de suivre les étapes ci-dessous

1 - tomcat-embad-jasper dépendance

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

2 - Ajouter ci-dessous la configuration est d'application.propriétés

spring.mvc.view.prefix: /
spring.mvc.view.suffix: .jsp

Qu'est-il encore avoir un doute alors check it out ci-dessous le lien

Printemps de Démarrage et JSP Intégration

3
répondu jeet singh parmar 2017-12-21 06:12:32

j'ai résolu mon problème lorsque, en plus de Décrit avant:

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

added ViewResolver:

@Configuration
@ComponentScan
@EnableWebMvc
public class SpringServletConfig {
    @Bean
    public InternalResourceViewResolver resolver() {
        InternalResourceViewResolver vr = new InternalResourceViewResolver();
        vr.setPrefix("/WEB-INF/jsps/");
        vr.setSuffix(".jsp");
        return vr;
    }
}

de: Pourquoi Spring MVC répondre avec une erreur 404 et rapport "Aucune correspondance trouvée pour la requête HTTP avec l'URI [...] in DispatcherServlet"?

1
répondu Crimean.us 2017-05-23 12:34:44

il suffit de changer la dépendance

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

à

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

    </dependency>
1
répondu Niamat Zawad 2017-04-30 10:18:59

j'ai fait face à la question comme imprimé le nom de fichier jsp dans le navigateur au lieu de son contenu.

en ajoutant l'extrait ci-dessous pour le rendu de page jsp dans pom.xml, il rend correctement.

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>
0
répondu VNT 2017-04-21 10:15:01

installation complète de gradle pour le démarrage à ressort avec Spring-MVC et avec le serveur Tomcat intégré:

"151920920 de construire".Grad

buildscript {
    ext {
        springBootVersion = '1.5.8.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}


apply plugin: 'java'
apply plugin: 'org.springframework.boot'


//WEB-MVC
compile 'org.springframework.boot:spring-boot-starter-web:1.5.8.RELEASE'
compile 'org.apache.tomcat.embed:tomcat-embed-jasper:9.0.1'
compile 'javax.servlet:jstl:1.2'

App.classe

@SpringBootApplication
public final class App {

    public static void main(final String[] args) {
        new SpringApplicationBuilder(App.class)
                .build(args)
                .run();
    }
    @Bean
    public ViewResolver viewResolver() {
         final InternalResourceViewResolver r = new InternalResourceViewResolver();
         r.setPrefix("/WEB-INF/jsp/");
         r.setSuffix(".jsp");
         return r;
    }

}
0
répondu John Tribe 2017-11-18 22:48:18

Parfois, tomcat-embed-jaspe pas disponible si besoin de supprimer la condition de la dépendance maven de tomcat-embed-jasper.

par exemple.

<dependency>
   <groupId>org.apache.tomcat.embed</groupId>
   <artifactId>tomcat-embed-jasper</artifactId>
   <!--scope>provided</scope-->
</dependency>
0
répondu Sandeep Kumar 2017-11-20 07:39:58

si vous voulez utiliser 1.5.8.RELEASE ou similaire, alors, l'exemple runable et son explication est ici https://www.surasint.com/spring-boot-jsp /

vous avez juste besoin de ça à pom.xml

http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 org.springframework.démarrage démarrage à ressort-parent 1.5.8.PUBLIER

<groupId>com.surasint.example</groupId>
<artifactId>spring-boot-02</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.source>1.8</maven.compiler.source>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- JSP -->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
    <!-- jstl for jsp -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

et cette application.propriétés

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

puis vous gardez votre jsp dans le répertoire /WEB-INF/jsp/.

ici le contrôleur.

package com.surasint.example.web.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.Date;
import java.util.Map;

@Controller
public class TestController {

    @GetMapping("/testjsp")
    public String list(Map<String, Object> model) {
        model.put("this_time",new Date().toString());
        return "testjsp-view";
    }
}
0
répondu Surasin Tancharoen 2017-12-13 20:26:47
<servlet>
  <servlet-name>appServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherSe rvlet</servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
  <servlet-name>appServlet</servlet-name>
  <url-pattern>/*</url-pattern>
</servlet-mapping>

  I took the * off so it was just  from web.xml


<servlet>
  <servlet-name>appServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherSe rvlet</servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
  <servlet-name>appServlet</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>
0
répondu Devendra Singraul 2018-03-28 11:00:16