URI [/WEB-INF/pages/apiForm.jsp]를 사용한 HTTP 요청에 대한 매핑을 찾을 수 없습니다.
핸들러가 내부 리소스 뷰 'apiForm'으로 전송되지만 오류 404가 표시됨 요청URI=/WEB-INF/pages/apiForm.jsp.apiForm.jsp는 틀림없이 /WEB-INF/pages/에 있습니다.
13:45:02,034 DEBUG [또는 스프링 프레임]web.servlet.view 를 참조해 주세요.JstlView] - InternalResourceView 'apiForm' 리소스 [/WEB-INF/pages/apiForm.jsp]로 전송 중
13:45:02,035 DEBUG [또는 스프링 프레임]web.servlet.Dispatcher Servlet] - [/WEB-INF/pages/apiForm.jsp]의 최종 수정값을 결정하는 이름이 'testapp2'인 Dispatcher Servlet
13:45:02,038 DEBUG [또는 스프링 프레임]web.servlet.Dispatcher Servlet] - getLastModified에서 핸들러를 찾을 수 없습니다.
13:45:02,038 DEBUG [또는 스프링 프레임]web.servlet.Dispatcher Servlet] - [/WEB-INF/pages/apiForm.jsp]의 요청을 처리하는 'testapp2' 이름의 Dispatcher Servlet
13:45:02,038 경고 [또는 스프링 프레임]web.servlet.PageNotFound] - 이름이 'testapp2'인 DispatcherServlet에서 URI[/WEB-INF/pages/apiForm.jsp]와의 HTTP 요청에 대한 매핑을 찾을 수 없습니다.
13:45:02,045 DEBUG [또는 스프링 프레임]web.servlet.Dispatcher Servlet] - 요청이 정상적으로 완료되었습니다.
13:45:02,048 DEBUG [또는 스프링 프레임]web.servlet.Dispatcher Servlet] - 요청이 정상적으로 완료되었습니다.
dispatcher.xml은 이렇게 생겼는데..
<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/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
Dispatcher Servlet이 apiForm.jsp 요청을 처리하려고 하는 것 같습니다.이것은 web.xml 서블릿 매핑이 해당 공간에 대한 요청을 Dispatcher Servlet으로 전송하고 있음을 시사합니다.
이런 거 있어요?
<servlet-mapping>
<servlet>dispatcher</servlet>
<url-pattern>/*</url-pattern>
</servlet-mapping>
다른 내선번호(.do 등)로 컨트롤러를 호출하여 필요에 따라 서블릿 매핑을 갱신합니다.
<servlet-mapping>
<servlet>dispatcher</servlet>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
네, 이 파티에 늦은 건 알지만 다른 사람들에게 도움이 될 수도 있어요.
서블릿 컨테이너는 일치하는 가장 긴 경로를 기준으로 매핑을 선택합니다.이 매핑은 JSP에 넣을 수 있으며 /* 매핑보다 선택됩니다.
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>/WEB-INF/pages/*</url-pattern>
</servlet-mapping>
실제로 Tomcat의 경우 jsp는 기본 제공되는 서블릿이기 때문에 이것만 있으면 됩니다.다른 컨테이너의 경우 JSP 서블릿의 이름을 검색하거나 다음과 같은 서블릿 정의를 추가해야 합니다.
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
</servlet>
더하면 돼요.<mvc:default-servlet-handler />
디스패처 서블릿!
에러가 발생합니다.
잘못된 패키지를 스캔한 경우
예를 들어, 컨트롤러가 my.discloss.discloss에 있는데 잘못 입력했습니다.
<context:component-scan base-package="my.package.efg*" />
또는
@ComponentScan("my.package.efg*")
즉, 요청이 URL뿐만 아니라 클래스 전체를 찾을 수 없는 경우 컨트롤러가 웹 애플리케이션 컨텍스트에 스캔되지 않습니다.
이 된 은 지도를 만들지 DispatcherServlet
로로 합니다./*
「」에 맵 ./
최종 설정은 다음과 같습니다.
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
...
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
인터넷 전체를 읽고 sitemesh가 확장자 없이 html 경로 + API 경로를 처리하는 방법을 알아냈다고 생각합니다.나는 이것을 깨닫기 위해 일자 재킷에 싸여 있었고, 모든 회전마다 다른 무언가가 부서지는 것 같았다.그러다가 드디어 이 직책을 맡게 되었습니다.
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>/WEB-INF/views/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>/WEB-INF/decorators/*</url-pattern>
</servlet-mapping>
dispatcher-servlet.xml에 입력합니다.
<mvc:default-servlet-handler/>
간단한 확인이 가능합니다.저는 현재 하이버네이트와 함께 봄 MVC 아키텍처를 사용하고 있습니다.클래스 이름 바로 위에 @Controller 주석을 쓰지 못했습니다.이것이 나에게 문제의 원인이었다.
@Controller
public class MyClass{
...
}
이 간단한 수표로 당신의 문제가 해결되길 바랍니다.
Spring 3.1 및 Tomcat 7에서 다음 오류가 발생하였습니다.
org. springframework.web.servlet.DispatcherServlet noHandlerFound 이름이 'appServlet'인 DispatcherServlet에서 URI [/baremvc/]인 HTTP 요청에 대한 매핑을 찾을 수 없습니다.
그리고 web.xml에 다음 설정을 추가해야 했습니다.
<welcome-file-list>
<welcome-file/>
</welcome-file-list>
그리고 애플리케이션이 작동했습니다!
저도 같은 문제가 있었어요 물론 조금 달랐죠아래 행을 삭제했을 때 다음과 같은 내용이 다음과 같습니다.
<mvc:resources mapping="/resources/**" location="classpath:/resources/" />
모든 것이 정상이었지만, 그 라인에서는 같은 에러가 발생합니다.
시행착오를 겪은 후 스프링 애플리케이션 컨텍스트 파일에 다음 행을 추가해야 합니다.
<mvc:annotation-driven />
도움이 됐으면 좋겠다!
브래드 파크스와 같은 대답이야더 많은 텍스트
저는 똑같은 문제를 겪었고 다른 많은 해결책들과 함께 위의 해결책을 시도했지만 모두 부정적인 결과를 얻었습니다.새로운 Dev env로 시작해서 spring-mvc-template를 설치하고 설치 후 바로 실행하려고 했습니다(동작해야 하는데 실패하였습니다).
문제는 프로젝트에서 jdk1.6을 사용 중이었는데, 이클립스에서 선택한 실행 환경은 jdk1.7이었습니다.해결 방법은 프로젝트별 실행 환경 설정을 변경하여 이 프로젝트를 jdk1.6으로 설정하는 것이었습니다. project --> Properties --> Java 컴파일러 --> [ Enable project specific settings ](프로젝트 고유의 설정을 유효하게 한다)를 오른쪽 클릭합니다.체크박스가 아직 켜져 있지 않은 경우는, 적절한 jdk 를 선택합니다(또는 인스톨 되어 있지 않은 경우는 추가합니다).
저는 지난 며칠 동안 인터넷 구석구석을 찾아다녔기 때문에 이것이 누군가에게 도움이 되고 그 사람의 시간을 절약할 수 있기를 바랍니다.(내 뇌에 따르면) 그것이 발견될 가능성이 낮은 곳에서 해결책을 찾기 시작했을 때, 나는 우연히 그것을 발견하게 되었다.=)
내 2센트.감사합니다!
편집 1: 프로젝트 고유의 설정 사용
편집 2: Brad Parks가 이미 이 문제에 답한 것을 깨달았습니다.음, 적어도 이번 건은 "편집자" 배지가 나왔네 =D
이는 앱이 실제로 컴파일되지 않고 Tomcat에서 아직 실행 중인 경우에도 발생할 수 있습니다.프로젝트에는 "프로젝트 고유의" JDK가 지정되어 있어 컴파일이 되지 않았고 코드는 특정 JDK가 없는 머신에서 체크 아웃되어 있었습니다.Eclipse는 JDK가 아닌 JRE로 기본 설정되었고 그 후 앱은 컴파일되지 않았습니다.
이 문제를 해결하기 위해 여기서는 "프로젝트 고유 설정"을 해제했습니다.
"프로젝트 | 속성 | Java 컴파일러"
자세한 방법에 대해서는, https://stackoverflow.com/a/2540730/26510 를 참조해 주세요.
안타깝게도 이것은 다소 광범위한 클래스 오류 메시지입니다.그러나 다른 문제일 수 있는 것은 당신이 수업이나 수업에 빠져있는 경우입니다.예를 들어 spring-expression jar 파일이 없는 경우 아무리 열심히 설정해도 dispatch-servlet은 컨트롤러를 찾을 수 없습니다.
저는 이클립스 루나 EE에서 이 문제를 겪었습니다.내 해결책은 간단히 다시 시작하는 일식이었고 마법처럼 서블릿을 제대로 로드하기 시작했다.
필요한 것은 먼저 URL에 응답하고 다음으로 jsp를 렌더링하는 컨트롤러입니다.솔루션에 대해서는, 이 링크를 참조해 주세요.
"/openStudentPage"는 먼저 열고 싶은 페이지입니다.
@RequestMapping(value = "/", method = RequestMethod.GET)
public String index(Model model) {
return "redirect:/openStudentPage";
}
@RequestMapping(value = "/openStudentPage", method = RequestMethod.GET)
public String listStudents(Model model) {
model.addAttribute("student", new Student());
model.addAttribute("listStudents", this.StudentService.listStudents());
return "index";
}
spring3, spring4 버전의 경우 디스패처는 미리 정의된 이름이므로 servlet 이름 디스패처를 다른 이름으로 변경합니다.
<servlet>
<servlet-name>ahok</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ashok</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
언급URL : https://stackoverflow.com/questions/1266303/no-mapping-found-for-http-request-with-uri-web-inf-pages-apiform-jsp
'programing' 카테고리의 다른 글
jq에서 문자열을 json으로 변환 (0) | 2023.03.02 |
---|---|
Postgres의 JSON 필드에 인덱스를 작성하는 방법 (0) | 2023.03.02 |
각도 테스트셀레늄이 있는 JS (0) | 2023.03.02 |
WordPress + 멀티사이트:Network Admin에서 Add New Site 양식에 커스텀 블로그 옵션을 추가하는 방법 (0) | 2023.03.02 |
Django REST Framework 업로드 이미지: "제출된 데이터가 파일이 아닙니다." (0) | 2023.03.02 |