이름이 있는 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.ControllerClassNameHandlerMapping
myController 클래스의 각 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 으로 합니다.DefaultServletHandlerConfigurer
WebMvcConfigurerAdapter
물건.
@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에서 아래 두개의 명령을 실행했습니다.
- mvn클린설치
- 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
'programing' 카테고리의 다른 글
스피치 라이브러리에 오픈 소스 텍스트 (0) | 2023.10.12 |
---|---|
maxscale을 통해 mariadb에 데이터베이스를 만들 수 있는 재생책 (0) | 2023.10.07 |
mySQL 피벗/두 개의 열 ID를 기준으로 행 병합/열로 병합/이동 (0) | 2023.10.07 |
C/C++에 기능이 있는지 확인하는 방법은? (0) | 2023.10.07 |
혼합된 컨텐츠가 있는 보안 연결을 통해 지리적 위치에 대한 액세스가 차단되었습니다. (0) | 2023.10.07 |