проблема с самым первым весенним проектом - PullRequest
0 голосов
/ 12 июня 2011

Я только что перешел с Striped на Spring, но у меня проблемы с моим первым проектом, в основном я получаю 404 с сервера.Как ни странно, я прошел один за другим все шаги в моей книге.Я использую Eclipse, Tomcat 6 и Spring 2.5. Структура моего проекта выглядит так: src> controllers (package)> SpringTestController (реализует контроллер) ..... затем ...... веб-контент> jsp (папка)>hello.jsp ..... then .... web-content> web-inf> SpringTest-servlet.xml и web.xml внутри lib У меня есть 9 необходимых банок.

мой контроллер:

public class SpringTestController implements Controller{

public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {




    return new ModelAndView("jsp/hello.jsp");
}

}

my SpringTest-servet.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-2.5.xsd">

<bean name="/hello.htm" class="controllers.SpringTestController"/>

</beans>

my web.xml (без заголовка для экономии места)

<servlet>

        <servlet-name>SpringTest</servlet-name>

        <servlet-class>

          org.springframework.web.servlet.DispatcherServlet

        </servlet-class>

        <load-on-startup>1</load-on-startup>

  </servlet>

  <servlet-mapping>

        <servlet-name>SpringTest</servlet-name>

        <url-pattern>*.htm</url-pattern>

  </servlet-mapping>

Как вы думаете, где может быть проблема?Я пытался просмотреть файлы, но кроме файла web.xml «где я не вижу никаких отклонений», я очень новичок в этой структуре потока, поэтому я действительно не могу понять, в чем проблема.

Спасибо за вашвремя

1 Ответ

0 голосов
/ 12 июня 2011

Я с подозрением отношусь к практике использования атрибута name bean для указания URL-путей - хотя я уверен, что это возможно, мой ответ скажет вам, каксделайте это, используя более традиционные средства.

Прежде всего, вот новый SpringTest-servlet.xml:

<bean id="helloController" class="controllers.SpringTestController" />

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
        <props>
            <prop key="/hello.htm">helloController</prop>
        </props>
    </property>
</bean> 

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

Вы, вероятно, заметите несколько вещей.Я использую атрибут id bean-компонента для определения вашего контроллера, чтобы на него можно было ссылаться в другом месте (в bean-компоненте urlMapping , как вы собираетесь увидеть).

Я определяю urlMapping bean-компонент, который делает именно то, что вы думаете - сопоставляет запросы (например, /hello.htm) с bean-компонентом контроллера.

Я также использовал viewResolver для отображенияпросматривает имена для просмотра файлов, однако это личное предпочтение.Поскольку сейчас я использую средство разрешения представления, ваш контроллер выглядит следующим образом:

public class SpringTestController implements Controller {
    @Override
    public ModelAndView handleRequest(final HttpServletRequest request, final HttpServletResponse response) throws Exception {
        return new ModelAndView("hello");
    }
}

Мне не нужно указывать путь к представлению, потому что viewResolver добавляет его к "/ WEB-INF / jsp/ "и добавляет" .jsp "в конец.Вы можете изменить префикс на то место, где вы храните файлы представлений, или вообще не можете его использовать.Это личное предпочтение, хотя мне нравится его использовать:)

Извините, если этот ответ не соответствует вашему стилю - я пытался заставить его работать по-вашему и не смог, так вот как яобычно настраивают проект Spring (если я не использую аннотации).

Надеюсь, это поможет.

...