Новичок весной MVC - PullRequest
       2

Новичок весной MVC

2 голосов
/ 30 августа 2011

Я новичок в весеннем MVC.Мне удалось создать приложение типа helloSpring, но это было основано на аннотациях.Я удалил аннотации, так как я все еще изучаю Spring MVC, поэтому я сначала хотел изучить XML-конфигурацию, но по какой-то причине мой jsp не рендерится после удаления части аннотаций.Я думаю, что все конфиги установлены правильно.Как ни странно, моя модификация JSP даже не отображается на странице, когда она появляется, поэтому я нажимаю клавишу ввода в адресной строке, чтобы убедиться, что Tomcat не отображает кэшированные настройки, и происходит сбой с 404. Я использую STS в качестве своей IDE.

web.xml

<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>

<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- Processes application requests -->
<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.htm</url-pattern>
</servlet-mapping>
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

servlet-config.xml

<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->

<!-- Enables the Spring MVC @Controller programming model -->
<!--  annotation-driven /-->

<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />

<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <beans:property name="prefix" value="/WEB-INF/jsp/" />
    <beans:property name="suffix" value=".jsp" />
</beans:bean>
<beans:bean name="/*.htm" class="com.test.project.HomeController" ></beans:bean>
<context:component-scan base-package="com.test.project" />

Homecontroller

    protected ModelAndView handleRequestInternal(HttpServletRequest arg0,
            HttpServletResponse arg1) throws Exception {
        // TODO Auto-generated method stub
        //logger.info("Welcome home! the client locale is "+ locale.toString());

        java.util.Date today = Calendar.getInstance().getTime();
        ModelAndView mv = new ModelAndView("home");
         mv.setViewName("home");
        mv.addObject("today", today);
        return mv;  }

}

home.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
    <title>Home- My version</title>
</head>
<body>
<h1>
    Hello world!<b> Myversion- version-1</b>  
</h1>

<P>  The time on the server is ${serverTime2}. </P>
</body>
</html>

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
    <c:redirect url="/home.htm" />

Ошибка в консоли Tomcat.

Aug 28, 2011 9:44:57 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.6.0_24\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files\Java\jdk1.6.0_24\jre\bin;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\EgisTec MyWinLocker\x86;C:\Program Files (x86)\EgisTec MyWinLocker\x64;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\GTK2-Runtime\bin
Aug 28, 2011 9:44:57 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:TestSpring' did not find a matching property.
Aug 28, 2011 9:44:58 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Aug 28, 2011 9:44:58 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Aug 28, 2011 9:44:58 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 939 ms
Aug 28, 2011 9:44:58 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Aug 28, 2011 9:44:58 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.16
Aug 28, 2011 9:45:00 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Aug 28, 2011 9:45:00 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Aug 28, 2011 9:45:00 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 2074 ms

Я также только что изменил код контроллера на ..

     mv.setViewName("home");
    mv.addObject("serverTime2", today);

Спасибо Dhiren

Ответы [ 2 ]

1 голос
/ 30 августа 2011

Кажется, что нет никакой ошибки, только то, что ни один контроллер и действие не сопоставляются с этим URL. Исходя из того, что вы опубликовали, маршруты не определены, поэтому Spring MVC не знает, что делать.

Я бы посоветовал вам включить ведение журнала, чтобы точно узнать, что делает пружина, что даст вам гораздо лучшее представление о том, где в конвейере происходит сбой.

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

Если вы обеспокоены тем, что использование аннотаций связывает ваши контроллеры с Spring, существует так много других компонентов Spring, которые необходимы в реальных контроллерах, что вы не сможете избежать этого в любом случае без значительных усилий. Так как контроллеры в любом случае должны быть тонкими, просто позвольте вашим контроллерам (и, по сути, переднему концу) быть привязанными к пружине, и тогда вы сможете сохранить свой конец таким же отсоединенным, как вам нравится.

0 голосов
/ 30 августа 2011

Я не уверен, что вы можете указать подстановочный знак в имени контроллера во время определения компонента:

<beans:bean name="/*.htm" class="com.test.project.HomeController" ></beans:bean>

Вы можете переместить отображение в org.springframework.web.servlet.handler.Экземпляр SimpleUrlHandlerMapping.

В целом, хотя, как говорит @cdeszaq, аннотации Spring 3.0 являются предпочтительным средством создания объектов MVC.

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