1

私はSpringMVCを初めて使用します。私はアプリケーションを作成していて、xml構成を使用したいのですが(フォローと学習が簡単なため)、使用したいアノテーション構成にはいくつかの利点があります。

xml構成でうまく機能するアプリケーションがあるので、MVCコントローラーをアノテーションに変換し、残りのxml構成を維持したいだけです。SimpleFormControllerは非推奨になっているため、基本的には@Controllerアノテーションを使用する必要があります。このフォーラムの以前のスレッドをフォローしましたが、HTTP404エラーが発生します。誰かがここで私を助けたり、私が間違っていることを教えてもらえますか?

コントローラ

import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.bind.annotation.RequestMethod;

import com.crimetrack.service.CountryManager;

@Controller
@RequestMapping(value="/hello.htm", method = RequestMethod.GET)
public class CountryListController{

    private final Logger logger = Logger.getLogger(getClass());
    private CountryManager countryManager;


    public ModelAndView handleRequest(HttpServletRequest request,
            HttpServletResponse response) throws Exception {

        logger.debug("In Http method for CountryListController");

        Map<String, Object> myModel = new HashMap<String, Object>();
        myModel.put("countryList", this.countryManager.getCountries());

        return new ModelAndView("hello", "model", myModel);
    }


    public void setCountryManager(CountryManager countrymanager){

        this.countryManager = countrymanager;
    }

}

ApplicationContext.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:aop="http://www.springframework.org/schema/aop"
         xmlns:tx="http://www.springframework.org/schema/tx"
         xsi:schemaLocation="http://www.springframework.org/schema/beans 
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/aop 
           http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
           http://www.springframework.org/schema/tx 
           http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">



    <bean id="countryManager" class="com.crimetrack.service.CountryManager">
        <property name="countryDao" ref="countryDao"/>
    </bean>

    <bean id="countryDao" class="com.crimetrack.jdbc.JdbcCountryDAO">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <bean id="authenticationManager" class="com.crimetrack.service.AuthenticationManager">
        <property name="loginDao" ref="loginDao" />
    </bean>

    <bean id="loginDao" class="com.crimetrack.jdbc.JdbcLoginDAO">
        <property name="dataSource" ref="dataSource" />
    </bean>


    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            <property name="driverClassName" value="${jdbc.driverClassName}"/>
            <property name="url" value="${jdbc.url}"/>
            <property name="username" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
    </bean>

    <bean id="propertyConfigurer" 
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:jdbc.properties</value>
            </list>
        </property>
    </bean>

    <bean id="transactionManager" 
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>      

  </beans>

application-servlet.xml

 <?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"
       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
                           http://www.springframework.org/schema/beans/spring-context-3.0.xsd">


    <context:annotation-config/>   

    <context:component-scan base-package="com.crimetrack.web"/>  

    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/> 

    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>   

    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> 


     <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
            <property name="basename" value="messages"/>
     </bean>


      <bean name="/login.htm" class="com.crimetrack.web.AuthenticationController">
        <property name="authenticationManager" ref="authenticationManager"/>
        <property name="login" ref="login"/>

     </bean>

     <bean name="authenticationManager" class="com.crimetrack.service.AuthenticationManager" />

     <bean name="login" class="com.crimetrack.business.Login" />



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

  <!--  <bean name="/login.htm" class="org.springframework.web.servlet.mvc.ParameterizableViewController"> <property name="viewName" value="login"/>    </bean> -->  


</beans>
4

1 に答える 1

1

この注釈を移動してみてください:

@RequestMapping(value="/hello.htm", method = RequestMethod.GET)

あなたの handleRequest() メソッドに。Spring は、リクエストを受け取ったら呼び出す特定のメソッドを知る必要があります。クラスにアノテーションを付けると、メソッドのコレクションを共通のプレフィックスを持つクラスにグループ化できますが、リクエストを処理する各メソッドにアノテーションを付ける必要があると思います。

于 2012-08-13T19:33:20.720 に答える