programing

이름이 있는 DispatcherServlet에서 URI가 있는 HTTP 요청에 대한 매핑을 찾을 수 없습니다.

javamemo 2023. 10. 7. 09:07
반응형

이름이 있는 DispatcherServlet에서 URI가 있는 HTTP 요청에 대한 매핑을 찾을 수 없습니다.

스택 오버플로에 대한 관련 기사를 이미 거의 다 확인했지만 문제를 해결할 수가 없습니다.

코드: web.xml:

   <display-name>Spring3MVC</display-name>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <context-param>
        <param-name>contextConfigLocation</param-name> 
        <param-value>/WEB-INF/spring-servlet.xml</param-value> 
    </context-param> 
    <listener> 
        <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> 
    </listener>
    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>*.html</url-pattern>
        <url-pattern>/</url-pattern>
        <url-pattern>*.htm</url-pattern>
    </servlet-mapping>
</web-app>

spring-servlet.xml:

<context:component-scan base-package="com.mycompany.elso" />
    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>   

    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>

myController:

public class myController {
    @RequestMapping("/hello")
    public ModelAndView helloWorld() {

        String message = "Hello World, Spring 3.0!";
        return new ModelAndView("hello", "message", message); 
    }
}

웹 페이지/index.jsp:

<html>
<head>
    <title>Spring 3.0 MVC Series</title>
</head>
<body>
    <a href="hello.html">Say Hello</a>
</body>
</html>

웹 페이지/WEB-INF/jsp/hello.jsp:

<html>
<head>
    <title>Spring 3.0 MVC Series: Hello World - ViralPatel.net</title>
</head>
<body>
    ${message}
</body>
</html>

따라서 응용 프로그램을 실행하면 index.jsp가 올바르게 로드되지만 href를 클릭하여 hello.jsp로 이동하면 404 오류가 발생하고 서버 로그에 다음과 같이 표시됩니다.

No mapping found for HTTP request with URI [/Elso/hello.html] in DispatcherServlet with name 'spring'

그런 기사를 수십 개나 보았는데 실수를 찾을 수가 없네요, 뭐가 뭔지 아는 사람 있나요?

더하다

  <mvc:default-servlet-handler/>

spring-servlet.xml로

당신이 시도해보고 추가해볼 수 있습니다.@Controller을 달고 myController Class음 url오를 해 보십시오./<webappname>/my/hello.html.org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMappingmyController 클래스의 각 RequestMapping에 /my를 붙입니다.

사용하시는 경우

<mvc:annotation-driven/> 

spring-servlet.xml이 올바른지 확인합니다.

<context:component-scan base-package="com.....controller" /> tag. 

기본적으로 자바 코드에 주석을 사용한 모든 패키지를 포함해야 합니다.

또한 (콩 발견을 위해) component-scan 중복이 없는지 확인 부탁드립니다.구성 XML에 요소가 이미 포함되어 있는 경우 @ComponentScan(basePackages=...)으로 주석이 달린 컨트롤러 클래스가 있습니다.해당 주석을 삭제할 필요가 있습니다.

문제 해결: Java Build Path -> JRE 시스템 라이브러리 -> Edit -> Alternate JRE -> -> Finish

JDK 폴더로 구성되어 있어서 Exception을 부여하고 있었습니다.

꼭!

<mvc:annotation-driven/>
<context:component-scan base-package="com.hireartists.web.controllers"/>

는 컨트롤러가 포함된 적절한 패키지를 가리킵니다.

바랍니다.[PROJECT_NAME]\target\classes디렉터리를 통해 확인할 수 있습니다.myController.class생성 여부.

만약 그렇지 않다면 컴파일 오류가 없는지 자바 소스 코드를 모두 확인해주시기 바랍니다.

Spring MVC 으로 합니다.DefaultServletHandlerConfigurerWebMvcConfigurerAdapter물건.

@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
        configurer.enable();
}

시도:

<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

날 위해 일했다!

빈 xmlns 확인..

저도 비슷한 문제가 있었는데 mvc xmlns를 추가해서 해결했습니다.

<?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:mvc="http://www.springframework.org/schema/mvc" 
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.2.xsd 
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">


    <context:component-scan base-package="net.viralpatel.spring3.controller" />
    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

<mvc:annotation-driven/>나를 위해 일했습니다.합니다.<context:component-scan ............/>

이 .html 를 <mvc:default-servlet-handler />.spring config에서 .html입니다 입니다.이것이 누군가에게 도움이 되길 바랍니다.

컨트롤러를 찾는 것이 아니라 기본적인 문제입니다.다음과 같은 이유 때문일 수 있습니다.

A. WEB-INF 폴더 안에 dispatcherServlet을 가리키는 web.xml 파일이 있습니다.여기 있습니다. 이 경우는 mvc-config.xml입니다.

<servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/mvc-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

B. 이 mvc-config.xml 파일에는 네임스페이스가 있으며 컨트롤러를 검색해야 합니다.

<context:component-scan base-package="org.vimal.spring.controllers" />
<mvc:annotation-driven />

C. 컨트롤러가 있는 패키지 이름의 정확성을 확인합니다.그건 작동할 거야.

All Controllers must be Annotated with @Controller.

정확히 같은 오류가 있었고 그것을 이해하는 데 오랜 시간이 걸렸습니다.컴파일 오류로 인해 자바 클래스가 서블릿에 게시되지 않았을 가능성이 높습니다.사용중인 서버에 들어가셔서 확인해주세요\tmp1\wtpwebapps[PROJECT_NAME]\WEB-INF\classes\와 컨트롤러 클래스를 찾아 게시되었는지 여부를 확인합니다.그렇지 않다면 컴파일 오류의 진상을 파악해야 합니다.

프로젝트의 빌드 도구로 메이븐을 사용하는 경우 프로젝트를 제대로 빌드하면 컴파일 후 코드 및 xml 파일의 변경 사항이 반영되지 않습니다.

Spring Social에 의존하는 경우 웹 컨트롤러 빈을 구성했는지 확인합니다.

import org.springframework.context.annotation.Bean;
import org.springframework.social.connect.web.ConnectController;
import org.springframework.social.connect.ConnectionFactoryLocator;
import org.springframework.social.connect.ConnectionRepository;

...

@Bean
public ConnectController connectController(ConnectionFactoryLocator connectionFactoryLocator, ConnectionRepository connectionRepository) {
    return new ConnectController(connectionFactoryLocator, connectionRepository);
}

maven을 사용하는 경우 서버에서 웹 앱을 실행하기 전에 maven install 명령을 실행하십시오. 왜냐하면 그것은 당신의 컨트롤러를 위한 클래스 파일을 생성할 것이고, 내 경험으로는 당신의 애플리케이션이 누락된 것입니다.

저는 같은 문제가 있었고 많은 재조사 끝에 클래스가 대상 폴더에 게시되지 않는다는 것을 알게 되었습니다.그래서 나는 cmd에서 아래 두개의 명령을 실행했습니다.

  1. mvn클린설치
  2. mvn패키지

놀랍게도 페이지에 접속할 수 있게 되어 오류가 사라졌습니다.이전에 누락된 준수된 클래스를 찾을 수 있는 대상 폴더에서도 동일한 내용을 확인할 수 있습니다.

더하다@Controller 곳에 할 수 있습니다.@RequestMapping당신을 위해 J.J.

이것은 저에게 비슷한 애플리케이션을 배포하는 동안 효과가 있었습니다.

메이븐을 사용하는 경우 pom.xml에 추가합니다.

<dependency>
<groupid>javax.servlet</groupid>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>runtime</scope>

<dependency>
<groupid>taglibs</groupid>
<artifactId>standard</artifactId>
<version>1.1.2</version>
<scope>runtime</scope>

저도 같은 문제에 직면했지만, 아래 네임스페이스를 배치한 후에는 잘 작동합니다.

xmlns:mvc="http://www.springframework.org/schema/mvc" 

이클립스에서 Tomcat Server를 제거하고 새로운 Tomcat 구성을 추가하여 문제가 해결되었습니다.

pom.xml에서 패키징이 다음으로 설정되었는지 확인합니다.war맘에 들다<packaging>war</packaging>병이나 그 밖의 어떤 것도 하지 않습니다.

/엘소란?

시도:

@RequestMapping("/Elso")
public class myController {

    @RequestMapping("/hello")
    public ModelAndView helloWorld() {

        String message = "Hello World, Spring 3.0!";
        return new ModelAndView("hello", "message", message); 
    }
}

언급URL : https://stackoverflow.com/questions/18683847/no-mapping-found-for-http-request-with-uri-in-dispatcherservlet-with-name

반응형