Spring MVC Картографирование в сервлете диспетчера не найдено - PullRequest
1 голос
/ 13 ноября 2011

Я только начинаю изучать Spring MVC. Я просмотрел много похожих вопросов об одной и той же проблеме, но все еще не смог решить эту ошибку. Может кто-нибудь, пожалуйста, посмотрите на мой код и дайте мне знать, что мне не хватает?

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
  <servlet>
    <servlet-name>myphotosharingapp</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>myphotosharingapp</servlet-name>
    <url-pattern>*.htm</url-pattern>
  </servlet-mapping>

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

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/myphotosharingapp-service.xml</param-value>
  </context-param>

  <welcome-file-list>
    <welcome-file>
      jsp/index.jsp
    </welcome-file>
  </welcome-file-list>
</web-app>

myphotosharingapp-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"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- mapping -->
    <bean id="urlMapping"
        class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="browsefiles.htm">browseFilesController</prop>
            </props>
        </property>
    </bean>

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

    <bean id="browseFilesController" class="springmvc.controller.BrowseFilesController">
        <property name="browseAlbumsService" ref="browseAlbumsService"></property>
        <property name="methodNameResolver">
            <bean
                class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
                <property name="mappings">
                    <props>
                        <prop key="/browsefiles.htm">browse</prop>
                    </props>
                </property>
            </bean>
        </property>
    </bean>

</beans>

myphotosharingapp-service.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"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean name="browseAlbumsService" class="springmvc.service.BrowseAlbumsService">
    </bean>
</beans>

home.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Share Photos</title>
</head>
<%-- <% 
        String sourcePath = ("${sourceAlbumPath}" == null)? "" : "${sourceAlbumPath}"; 
%> --%>

<body>
    <h1>
        Welcome         
    </h1>
    <form name="frmHome" method="Post" action="browsefiles.htm">
        <a href=".">View Albums</a>
        <br>
        <br>
        <input type="text" name="sourceAlbumPath" value="">
        </input>
        <button name="Browse" >
            Browse      
        </button>           
    </form>
</body>
</html>

index.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Share Photos</title>
</head>
<body>
    <h1>
        Welcome!!           
        <a href="jsp/home.jsp">home</a> 
    </h1>

</body>
</html>

Страница индекса загружается нормально, а также домашняя страница. Но при нажатии кнопки «Обзор» на home.jsp я просто получаю ошибку «HTTP STATUS 404».

Tomcat говорит: «Нет сопоставления для [/springmvc/jsp/browsefiles.htm] в Сервлете диспетчера с именем myphotosharingapp»

Может кто-нибудь, пожалуйста, помогите ??

Ответы [ 2 ]

1 голос
/ 13 ноября 2011

Ваша конфигурация для сопоставления /browsefiles.htm, но вы пытаетесь получить к нему доступ через /springmvc/jsp/browsefiles.htm

Вам действительно нужно использовать SimpleUrlHandlerMapping?Если нет, попробуйте Spring MVC и сопоставление по аннотации.Это намного проще.Вам нужно только два компонента XML для настройки базового приложения.Вот лучший учебник:

http://blog.springsource.org/2011/01/04/green-beans-getting-started-with-spring-mvc/

Я понимаю, что это не ответ, но я думаю, что лучше узнать, как использовать аннотацию Spring.Поскольку вы новичок, я думаю, что лучше всего дать вам этот совет, если вы не знаете.

1 голос
/ 13 ноября 2011

Путь на домашней странице является относительным и указывает на /jsp/browsefiles.htm, в то время как отображение в xml предназначено для /browsefiles.htm.

Решением было бы сделать URL-адрес относительно базы, используя request.getContextPath() в JSP или <spring:url> JSP-тег Spring MVC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...