programing

URI [/WEB-INF/pages/apiForm.jsp]를 사용한 HTTP 요청에 대한 매핑을 찾을 수 없습니다.

muds 2023. 3. 2. 22:42
반응형

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

반응형