2015-10-11 2 views
0

Имея проблемы с DispatcherServlet, я действительно верю, что проблема находится в одном из xmls, но была новой в Spring. Я не могу ее идентифицировать.PageNotFound: сопоставления не найдено для HTTP-запроса с URI в DispatcherServlet

HotelController.java (SRC \ главной \ Java \ hotelbooking \ контроллер)

@Transactional 
@Controller 
public class HotelController { 

    @Autowired 
    HotelService hotels; 

    @RequestMapping(value="/hotels", method=RequestMethod.GET) 
    public String index(Model model) { 
     System.out.println("test"); 
     model.addAttribute("hotels", hotels.findAllHotels()); 
     return "allhotels"; 
    } 
} 

web.xml (SRC \ Основной \ \ WebApp WEB-INF)

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring/root-context.xml</param-value> 
    </context-param> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

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

    <servlet-mapping> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 
</web-app> 

pom.xml()

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
    http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<name>hotelbookings</name> 
<groupId>CIAI_T1</groupId> 
<artifactId>hotelbookings</artifactId> 
<version>0.1.0</version> 

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.3.0.M5</version> 
</parent> 

<properties> 
    <hibernate.version>4.3.6.Final</hibernate.version> 
    <mysql.connector.version>5.1.31</mysql.connector.version> 
    <joda-time.version>2.3</joda-time.version> 
    <testng.version>6.9.4</testng.version> 
    <mockito.version>1.10.19</mockito.version> 
    <h2.version>1.4.187</h2.version> 
    <dbunit.version>2.2</dbunit.version> 
    <java.version>1.8</java.version> 
</properties> 

<dependencies> 
<!-- Spring --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
    </dependency> 
      <dependency> 
     <groupId>org.apache.tomcat.embed</groupId> 
     <artifactId>tomcat-embed-jasper</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
    </dependency> 

    <!-- Hibernate --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 

    </dependency> 

    <!-- jsr303 validation --> 
    <dependency> 
     <groupId>javax.validation</groupId> 
     <artifactId>validation-api</artifactId> 
     <version>1.1.0.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
    </dependency> 

    <!-- MySQL --> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
    </dependency> 

    <!-- Joda-Time -->  
    <dependency> 
     <groupId>joda-time</groupId> 
     <artifactId>joda-time</artifactId> 
    </dependency> 

    <!-- To map JodaTime with database type -->  
    <dependency> 
     <groupId>org.jadira.usertype</groupId> 
     <artifactId>usertype.core</artifactId> 
     <version>3.0.0.CR1</version> 
    </dependency> 

    <!-- Servlet+JSP+JSTL --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId>   
    </dependency> 
    <dependency> 
     <groupId>javax.servlet.jsp</groupId> 
     <artifactId>javax.servlet.jsp-api</artifactId> 
     <version>2.3.1</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
    </dependency> 


    <!-- Testing dependencies --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.testng</groupId> 
     <artifactId>testng</artifactId> 
     <version>${testng.version}</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.mockito</groupId> 
     <artifactId>mockito-all</artifactId> 
     <version>${mockito.version}</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.h2database</groupId> 
     <artifactId>h2</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>dbunit</groupId> 
     <artifactId>dbunit</artifactId> 
     <version>${dbunit.version}</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-thymeleaf</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-devtools</artifactId> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <dependencies> 
       <dependency> 
        <groupId>org.springframework</groupId> 
        <artifactId>springloaded</artifactId> 
        <version>1.2.4.RELEASE</version> 
       </dependency> 
      </dependencies> 
     </plugin> 
     <plugin> <!-- enable java 1.7 --> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId>   
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

<repositories> 
    <repository> 
     <id>spring-releases</id> 
     <name>Spring Releases</name> 
     <url>https://repo.spring.io/libs-release</url> 
    </repository> 
    <repository> 
     <id>org.jboss.repository.releases</id> 
     <name>JBoss Maven Release Repository</name> 
     <url>https://repository.jboss.org/nexus/content/repositories/releases</url> 
    </repository> 
    <repository> 
     <id>spring-milestone</id> 
     <url>https://repo.spring.io/libs-release</url> 
    </repository> 
</repositories> 

<pluginRepositories> 
    <pluginRepository> 
     <id>spring-releases</id> 
     <url>https://repo.spring.io/libs-release</url> 
    </pluginRepository> 
    <pluginRepository> 
     <id>spring-milestone</id> 
     <url>https://repo.spring.io/libs-release</url> 
    </pluginRepository> 
</pluginRepositories> 

MVC-диспетчерская-servlet.xml (ЦСИ \ главная \ WebApp \ WEB-INF)

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

<context:component-scan base-package="hotelbooking.controller"/> 
<mvc:annotation-driven /> 

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

</beans> 

У меня есть мнение в: «\ Src \ главная \ WebApp \ WEB-INF \ views ", и там у меня есть файл под названием« allhotels.jsp », я пытаюсь открыть страницу с« http://localhost:8080/hotels »(хотя я не уверен, что это правильно).

Перед именами файлов выше их относительный путь.

Я использую весенний ботинок с Maven. Если вам нужно, чтобы я опубликовал что-нибудь еще, сообщите мне.

+0

Если https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-web-jsp/src/main/webapp/WEB-INF/jsp прав, возможно, поместить его в '\ jsp' вместо' \ views'? – zapl

+0

@zapl Извините, что я забыл включить mvc-dispatcher-servlet.xml. Я попытался изменить имя папки и xmp на jsp, но это не сработало. – Aterin

ответ

1

я мог видеть, как вы использовали два разных названия для DispatcherServlet при настройке его в web.xml

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

<servlet-mapping> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
</servlet-mapping> 

Выполните следующие изменения в вашем MVC-диспетчерский-servlet.xml

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

<context:component-scan base-package="hotelbooking.controller"/> 
<mvc:annotation-driven /> 

</beans> 

I чувствуйте, что это больше о проблемах с web.xml и пружиной конфигурации, попробуйте использовать вышеописанный вариант и попробуйте один раз.

Узор Url должен быть, как показано ниже

http://hostname:port/<webapplication-name>/<controller-path> http://localhost:8080/hotelbookings/hotels (В вашем случае попробовать это в предположении «hotelbookings» в качестве имени веб-приложения.)

+0

Спасибо за ваш ответ, но все тот же. Просто чтобы убедиться, что имя веб-приложения является artifactid/name на pom.xml? – Aterin

+0

Ах, правда, это действительно гостиницы. – Aterin

+0

Действительно, я, в частности, ошибка: 'Нет сопоставления для HTTP-запроса с URI [/ hotelbookings/hotels] в DispatcherServlet с именем 'dispatcherServlet'.' – Aterin

1

вы можете упустить эту часть в вашем MVC-диспетчерская-servlet.xml файл

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

Я думаю, что вижу проблему. Вы использовали значение вместо пути. Попробуйте использовать это:

@RequestMapping(path="/hotels", method=RequestMethod.GET) 
+0

Спасибо за ваш ответ, но я добавил строку, и это не помогло, я думаю, если бы это была проблема, приложение не запускалось из-за проблем с зависимостями. Я решил оставить '' Для будущей проверки. – Aterin

+0

Только что заметил ваше редактирование. В примерах я нашел все используемые 'value', независимо, я пробовал с« path », но он все еще не работает. – Aterin

Смежные вопросы