복붙노트

[SPRING] Spring 서블릿을 설정할 때 "WARN org.springframework.web.servlet.PageNotFound - URI가있는 HTTP 요청에 대한 매핑이 없습니다 ..."를 가져 오는 중

SPRING

Spring 서블릿을 설정할 때 "WARN org.springframework.web.servlet.PageNotFound - URI가있는 HTTP 요청에 대한 매핑이 없습니다 ..."를 가져 오는 중

Spring MVC 프로젝트를 설정하려고합니다. 디스패처 서블릿 인 jsp와 setup을 web.xml 파일에 추가했습니다. 하지만 계속해서

내 web.xml은 다음과 같습니다.

...
<context-param>
    <description>Vaadin production mode</description>
    <param-name>productionMode</param-name>
    <param-value>true</param-value>
</context-param>

<!-- To load the Spring context -->
<listener>
    <listener-class>org.activiti.explorer.servlet.WebConfigurer</listener-class>
</listener>

<!-- To allow session-scoped beans in Spring -->
<listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>

<filter>
    <filter-name>UIFilter</filter-name>
    <filter-class>org.activiti.explorer.filter.ExplorerFilter</filter-class>
</filter>

<filter>
    <filter-name>JSONPFilter</filter-name>
    <filter-class>org.activiti.explorer.servlet.JsonpCallbackFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>UIFilter</filter-name>
    <url-pattern>/o/*</url-pattern>
</filter-mapping>

<filter-mapping>
    <filter-name>JSONPFilter</filter-name>
    <url-pattern>/service/*</url-pattern>
</filter-mapping>

<servlet>
    <servlet-name>Vaadin Application Servlet</servlet-name>
    <servlet-class>org.activiti.explorer.servlet.ExplorerApplicationServlet</servlet-class>
    <init-param>
        <param-name>widgetset</param-name>
        <param-value>org.activiti.explorer.CustomWidgetset</param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>Vaadin Application Servlet</servlet-name>
    <url-pattern>/ui/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>Vaadin Application Servlet</servlet-name>
    <url-pattern>/VAADIN/*</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>HelloWeb</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>HelloWeb</servlet-name>
    <url-pattern>*.jsp</url-pattern>
</servlet-mapping>

<!-- Session timeout on one day -->
<session-config>
    <session-timeout>480</session-timeout>
</session-config>

다음은 HelloWeb-servlet.xml입니다.

<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="
   http://www.springframework.org/schema/beans     
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
   http://www.springframework.org/schema/context 
   http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<context:component-scan base-package="org.activiti.explorer.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>

내 HelloController

 package org.activiti.explorer.controller;

 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.servlet.ModelAndView;

 /**
  *
  * @author Fionn
  */
 @Controller
 public class HelloController {

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

         String message = "<br><div align='center'>"
                 + "<h3>********** Hello World, Spring MVC Tutorial</h3>This message is comming from CrunchifyHelloWorld.java **********<br><br>";
         return new ModelAndView("hello", "message", message);
     }
}

그리고 내 hello.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"     %>
<%@page trimDirectiveWhitespaces="true" %>
<!DOCTYPE html>
<html>
<head>
<title>Hello Spring MVC</title>
</head>
<body>

나는 이것을 이해할 수 없으므로 어떤 도움을 주시면 감사하겠습니다.

해결법

  1. ==============================

    1.당신은

    당신은

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           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
            http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
        <!-- Enables the Spring MVC @Controller programming model -->
        <mvc:annotation-driven />
    
        <context:component-scan base-package="org.activiti.explorer.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>
    

    xsd 파일에서 버전을 제거했음을 참고하십시오. 이는 jar 파일의 스키마를 사용한다는 것을 의미합니다 (호환되지 않는 경우 유효성 검사 오류가 있음)

    @ Nikolay의 의견을받은 후에도 매핑에 오류가 있음을 확인했습니다. (여전히 주석 기반 요소가 필요함에 유의하십시오.) 컨트롤러의 매핑을

    @RequestMapping("/hello.jsp")
    

    를 통해 액세스하고

    /safesite/hello.jsp
    

    또는보다 일반적으로 서블릿 매핑을 다음과 같이 변경하십시오.

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

    니콜라이가 말한대로 / safesite / hello

  2. ==============================

    2.비슷한 문제가 발생하기 전에 일련의 테스트를 거친 후 DispatcherServlet의 URL 패턴이라는 것을 알게되었습니다. 와일드 카드 매치에 별표를 사용하면 예기치 않은 동작이 발생할 수 있으므로주의해야합니다. 루트 "/"또는 사용자 지정 서블릿 컨텍스트 경로 "/ foo /"에서 시작하는 것이 안전합니다.

    비슷한 문제가 발생하기 전에 일련의 테스트를 거친 후 DispatcherServlet의 URL 패턴이라는 것을 알게되었습니다. 와일드 카드 매치에 별표를 사용하면 예기치 않은 동작이 발생할 수 있으므로주의해야합니다. 루트 "/"또는 사용자 지정 서블릿 컨텍스트 경로 "/ foo /"에서 시작하는 것이 안전합니다.

    다음을 시도하십시오.

       HelloWeb    /

  3. ==============================

    3.스프링 프레임 워크 3.X에서 4.X로 마이그레이션 / 업데이트하고 반환 된 객체로 json (Jackson2를 통해)을 사용하고 위의 오류가 발생하면 오류가 발생합니다.

    스프링 프레임 워크 3.X에서 4.X로 마이그레이션 / 업데이트하고 반환 된 객체로 json (Jackson2를 통해)을 사용하고 위의 오류가 발생하면 오류가 발생합니다.

    이 문제를 해결하려면 다음을 추가해야합니다.

    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                    <property name="supportedMediaTypes" value = "text/plain;charset=UTF-8"/>
                </bean>
            </list>
        </property>
    </bean>
    
    <bean  class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
        <property name="mediaTypes">
            <map>
               <entry key="json" value="application/json"/>
           </map>
        </property>
    </bean>
    
    <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
        <property name="contentType" value="application/json"/>
    </bean>
    

    XXX-servlet.xml 파일로

    그리고 코드에서 반환 값으로 MappingJackson2JsonView를 사용해야합니다. 예 :

    @RequestMapping("/user")
    MappingJackson2JsonView user() {
    MappingJackson2JsonView view = new MappingJackson2JsonView();
    view.setExtractValueFromSingleKeyModel(true);
    view.addStaticAttribute("user", new User("Sébastien", "Deleuze"));
    view.setPrefixJson(true);
    return view;
    }
    

    더 많은 예제는 다음을 참고하십시오 : http://www.programcreek.com/java-api-examples/index.php?api=org.springframework.web.servlet.view.json.MappingJackson2JsonView

  4. from https://stackoverflow.com/questions/28364163/getting-warn-org-springframework-web-servlet-pagenotfound-no-mapping-found-fo by cc-by-sa and MIT license