#spring-boot
Вопрос:
я новичок в spring framework. я начал изучать Spring Boot,В приложении Spring Tool Suite-4 Spring boot, home.jsp или любом файле .jsp, я не могу отобразить в браузере, скорее имя файла отображается в виде строки в браузере. я использовал все необходимые зависимости в pom.xml файл
1.Класс Контроллера
package com.telusko.demo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@Controller
public class HomeController
{
@RequestMapping("home")
@ResponseBody
public String home()
{
System.out.println("Hi..");
return "home.jsp";
}
2.Главная страница.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
I love java
</body>
</html>
3.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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.telusko</groupId>
<artifactId>MyWebApp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>MyWebApp</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-core -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>9.0.46</version>
</dependency>
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-json -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
<version>2.1.9.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.11.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.11.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.datatype/jackson-datatype-jsr310 -->
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.11.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.module/jackson-module-parameter-names -->
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-parameter-names</artifactId>
<version>2.11.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-tomcat -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>2.2.11.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-core -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>9.0.46</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-el -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
<version>9.0.46</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-jasper -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>9.0.46</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-websocket -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
<version>9.0.46</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator -->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.2.0.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.jboss.logging/jboss-logging -->
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.3.2.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml/classmate -->
<dependency>
<groupId>com.fasterxml</groupId>
<artifactId>classmate</artifactId>
<version>1.3.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.4.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
4.In Вывод браузера
home.jsp
5.применение.свойства
spring.mvc.view.prefix=/pages/
spring.mvc.view.suffix=.jsp
spring.profiles.active=@spring.profiles.active@
6.In Консоль
2021-05-29 10:13:35.322[0;39m [32m INFO[0;39m [35m12916[0;39m [2m---[0;39m [2m[ main][0;39m [36mcom.telusko.demo.MyWebAppApplication [0;39m [2m:[0;39m Starting MyWebAppApplication using Java 15.0.2 on DESKTOP-JF5BSMC with PID 12916 (C:UsersLakshmana SaiSpringWorkspaceMyWebApptargetclasses started by Lakshmana Sai in C:UsersLakshmana SaiSpringWorkspaceMyWebApp)
[2m2021-05-29 10:13:35.326[0;39m [32m INFO[0;39m [35m12916[0;39m [2m---[0;39m [2m[ main][0;39m [36mcom.telusko.demo.MyWebAppApplication [0;39m [2m:[0;39m The following profiles are active: @spring.profiles.active@
[2m2021-05-29 10:13:36.898[0;39m [32m INFO[0;39m [35m12916[0;39m [2m---[0;39m [2m[ main][0;39m [36mo.s.b.w.embedded.tomcat.TomcatWebServer [0;39m [2m:[0;39m Tomcat initialized with port(s): 8080 (http)
[2m2021-05-29 10:13:36.912[0;39m [32m INFO[0;39m [35m12916[0;39m [2m---[0;39m [2m[ main][0;39m [36mo.apache.catalina.core.StandardService [0;39m [2m:[0;39m Starting service [Tomcat]
[2m2021-05-29 10:13:36.912[0;39m [32m INFO[0;39m [35m12916[0;39m [2m---[0;39m [2m[ main][0;39m [36morg.apache.catalina.core.StandardEngine [0;39m [2m:[0;39m Starting Servlet engine: [Apache Tomcat/9.0.46]
[2m2021-05-29 10:13:37.306[0;39m [32m INFO[0;39m [35m12916[0;39m [2m---[0;39m [2m[ main][0;39m [36morg.apache.jasper.servlet.TldScanner [0;39m [2m:[0;39m At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
[2m2021-05-29 10:13:37.324[0;39m [32m INFO[0;39m [35m12916[0;39m [2m---[0;39m [2m[ main][0;39m [36mo.a.c.c.C.[Tomcat].[localhost].[/] [0;39m [2m:[0;39m Initializing Spring embedded WebApplicationContext
[2m2021-05-29 10:13:37.325[0;39m [32m INFO[0;39m [35m12916[0;39m [2m---[0;39m [2m[ main][0;39m [36mw.s.c.ServletWebServerApplicationContext[0;39m [2m:[0;39m Root WebApplicationContext: initialization completed in 1914 ms
[2m2021-05-29 10:13:37.961[0;39m [32m INFO[0;39m [35m12916[0;39m [2m---[0;39m [2m[ main][0;39m [36mo.s.b.w.embedded.tomcat.TomcatWebServer [0;39m [2m:[0;39m Tomcat started on port(s): 8080 (http) with context path ''
[2m2021-05-29 10:13:37.975[0;39m [32m INFO[0;39m [35m12916[0;39m [2m---[0;39m [2m[ main][0;39m [36mcom.telusko.demo.MyWebAppApplication [0;39m [2m:[0;39m Started MyWebAppApplication in 3.253 seconds (JVM running for 4.319)
[2m2021-05-29 10:13:37.977[0;39m [32m INFO[0;39m [35m12916[0;39m [2m---[0;39m [2m[ main][0;39m [36mo.s.b.a.ApplicationAvailabilityBean [0;39m [2m:[0;39m Application availability state LivenessState changed to CORRECT
[2m2021-05-29 10:13:37.979[0;39m [32m INFO[0;39m [35m12916[0;39m [2m---[0;39m [2m[ main][0;39m [36mo.s.b.a.ApplicationAvailabilityBean [0;39m [2m:[0;39m Application availability state ReadinessState changed to ACCEPTING_TRAFFIC
Ответ №1:
Вы должны удалить @ResponseBody
аннотацию. Это указывает на то, что то, что возвращается из метода, должно использоваться в качестве тела ответа, а это не то, что вы хотите.
Вы также должны изменить строку, которая возвращается из "home.jsp"
в "home"
. .jsp
Суффикс не нужен.
Наконец, добавьте <packaging>war</packaging>
, поскольку JSP не поддерживаются в упаковке jar.
Комментарии:
1. я пытался, как вы сказали, но это не работает..я получил ошибку в браузере
2. Не зная, в чем заключалась ошибка, будет трудно помочь вам в дальнейшем. Возможно, вы можете обновить свой вопрос более подробной информацией или задать новый вопрос теперь, когда вы, надеюсь, преодолели
@ResponseBody
проблему.3. когда я удалил @ResponseBody, в браузере появилось сообщение…. Ошибка белой метки В этом приложении нет явного сопоставления для /ошибки, поэтому вы рассматриваете это как запасной вариант.
4. После добавления зависимости spring-boot-starter-thymeleaf в мой pom.xml и добавление spring.thymeleaf.check-template=true spring.thymeleaf.проверка расположения шаблона=true spring.thymeleaf.включено=true spring.thymeleaf.префикс=путь к классу:/шаблоны/ spring.thymeleaf.суффикс=.jsp Моя проблема решена. Спасибо Тебе, Энди Уилкинсон, за то, что ответил мне,