我正在尝试使用Spring 6(没有Spring Boot)制作Web应用程序,其中主要是XML配置。我正在尝试学习这一点,以维护现有的旧应用程序,该应用程序使用XML配置使用Plain Spring。因此,“只需使用Spring Boot”或“只使用XYZ注释”是不可接受的答案。

问题描述 投票:0回答:1

通知路径是如何的
No endpoint GET /jsp-example/WEB-INF/pages/index.jsp.
-这指示视图解析器正确识别JSP,但实际使用JSP失败的情况。如果我去另一条路线,那就告诉我路线本身不存在:

enter image description here

,但是,

/WEB-INF/pages/index.jsp
记录了我在搜索栏中键入的普通路径,而不是已解决的JSP。也许这意味着我关于正确工作的视图解析器的假设毕竟是错误的。 (第一个条目是说

localhost-access-[date].log

): enter image description hereNo endpoint GET /jsp-example/WEB-INF/pages/index.jsp 我使用tomcat 10.1.34与Amazon Corretto JDK 17.0.8_8在Windows 11上使用,并使用Maven 3.9.2使用

127.0.0.1 - - [18/Mar/2025:14:19:19 +0100] "GET /jsp-example/ HTTP/1.1" 404 774 127.0.0.1 - - [18/Mar/2025:14:19:19 +0100] "GET /favicon.ico HTTP/1.1" 200 21630 127.0.0.1 - - [18/Mar/2025:14:29:18 +0100] "GET /jsp-example/home HTTP/1.1" 404 747

我尝试了什么
如果我添加了一个处理程序映射,组件扫描和
mvn clean package

mvc:annotation-driven
并创建一个控制器类,我可以访问该控制器。这表明基本的Web应用程序设置和调度程序servlet正在工作。
如果我尝试在Web -Inf之外移动JSP并适应ViewResolver的前缀(根据

HTTP404问题,JSP在Web

中看不到JSP,尽管它与我的用例有所不同),它发生了完全相同的事情 - 它会打印出已解决的JSP路径,但说它找不到它。
I尝试添加

context.xml

jakarta.servlet.jsp.jstl-api

的依赖项,并将

jakarta.servlet.jsp-api
添加到解析器,例如
Https://www.baeldung.com/spring-mvc-view-view-view-resolver-tutorial
确实如此。没有更改 我尝试从

<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />

中删除所有非HTML元素,以防其语法有些错误,没有更改。我还尝试用index.jsp替换并相应地调整解析器的后缀。

我找到了两个类似的帖子,分别是

Herey和

Herey。前者只有一个答案几乎是胡言乱语,而对于后者来说,问题显然只是……消失了吗?基于此,我尝试制作一个新的空白应用程序并重新启动tomcat。我不确定我可以尝试哪些其他类型的“再次将其关闭”。有什么想法吗?
我已经检查了所有的tomcat日志,什么也没有。有关如何获取有关发生的事情的更多信息的一些提示也将有所帮助。
full项目代码/配置
index.html
pom.xml

<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>
  <groupId>com.example</groupId>
  <artifactId>jsp-example</artifactId>
  <version>1.0.0</version>
  <packaging>war</packaging>

  <dependencies>
    <dependency>
      <groupId>jakarta.servlet</groupId>
      <artifactId>jakarta.servlet-api</artifactId>
      <version>6.1.0</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>6.2.3</version>
    </dependency>
  </dependencies>

  <build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
      <plugin>
        <artifactId>maven-clean-plugin</artifactId>
        <version>3.4.0</version>
      </plugin>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.3.1</version>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.13.0</version>
      </plugin>
      <plugin>
      <artifactId>maven-surefire-plugin</artifactId>
        <version>3.3.0</version>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.4.0</version>
      </plugin>
      <plugin>
        <artifactId>maven-install-plugin</artifactId>
        <version>3.1.2</version>
      </plugin>
      <plugin>
        <artifactId>maven-deploy-plugin</artifactId>
        <version>3.1.2</version>
      </plugin>
    </plugins>
  </build>
</project>
src/main/webapp/WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd" version="6.0"> <display-name>jsp-example</display-name> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/context.xml</param-value> </context-param> <servlet> <servlet-name>dispatcher-servlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value></param-value> <!-- inherit context.xml --> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher-servlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app> src/main/webapp/WEB-INF/context.xml

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd"> <mvc:annotation-driven/> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"/> <property name="suffix" value=".jsp"/> </bean> <mvc:view-controller path="/" view-name="index" /> </beans>

src/main/webapp/WEB-INF/pages/index.jsp

Edit:嗯,这是一个线索,我想:如果我将

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Hello</title> </head> <body> </body> </html>
的tropert更改为
viewResolver

(即废话),我会遇到完全相同的错误“无端点get/jsp-example/web-inf/pagezzz/index.jsp。”。这表明在找到JSP文件的情况下存在问题。不过,我已经检查了一千次。我所有的领导和落后斜线也与所有示例中的斜坡匹配 - 包括确实有效的那个旧应用程序。

	

项目目录
prefix

POM.xml

/WEB-INF/pagezzz/
Homecontroller.java

jsp-example
├── pom.xml
└── src
    └── main
        ├── java
        │   └── com
        │       └── example
        │           └── controller
        │               └── HomeController.java
        └── webapp
            └── WEB-INF
                ├── context.xml
                ├── pages
                │   └── index.jsp
                ├── spring-mvc.xml
                └── web.xml
web.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/POM/4.0.0"
         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>
    <groupId>com.example</groupId>
    <artifactId>jsp-example</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>jsp-example</name>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring.version>6.2.3</spring.version>        
    </properties>

    <dependencies>
    
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>    

    <dependency>
      <groupId>jakarta.servlet.jsp.jstl</groupId>
      <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
      <version>3.0.1</version>
    </dependency>
    
    <dependency>
      <groupId>org.glassfish.web</groupId>
      <artifactId>jakarta.servlet.jsp.jstl</artifactId>
      <version>3.0.1</version>
    </dependency>

    <dependency>
      <groupId>jakarta.servlet</groupId>
      <artifactId>jakarta.servlet-api</artifactId>
      <version>6.0.0</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>jakarta.servlet.jsp</groupId>
      <artifactId>jakarta.servlet.jsp-api</artifactId>
      <version>3.1.1</version>
      <scope>provided</scope>
    </dependency>
        
    </dependencies>

    <build>
        <finalName>jsp-example</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.4.0</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

package com.example.controller;

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

@Controller
public class HomeController {

    @GetMapping("/")
    public String home(Model model) {
        model.addAttribute("message", "Hello, Spring MVC with Tomcat 10.1!");
        return "index";
    }
}
,不是
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" version="6.0"> <display-name>jsp-example</display-name> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/context.xml</param-value> </context-param> <servlet> <servlet-name>dispatcher-servlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher-servlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>

java spring spring-mvc jsp
1个回答
0
投票
添加

/*


context.xml

<init-param>

Spring-mvc.xml

<param-value>/WEB-INF/spring-mvc.xml</param-value>

Index.jsp

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
           http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="com.example"/>
</beans>
    build
  • <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xsi:schemaLocation="
               http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
               http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd
               http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
        <mvc:annotation-driven/>
    
        <context:component-scan base-package="com.example.controller"/>
    
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/pages/"/>
            <property name="suffix" value=".jsp"/>
        </bean>
    
        <mvc:resources mapping="/resources/**" location="/resources/"/>   
    </beans>
    
    jp-example.war到apache-tomcat-10.1.34/webapps/
  • -Test
  • Http:// localhost:8080/jsp-example/


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.