-1

Spring でログインといくつかのデータベース操作 (挿入、削除) を実行しようとしましたが、jsp も手伝いました。 xml。したがって、私の dvd_servlet.xml ファイルは次のようになります

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

<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/DVD"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
</bean>

<bean name="DvdController" class="DvdController" >
    <property name="dataSource" ref="dataSource"/>
</bean>
<bean name="LoginController" class="LoginController" >
    <property name="dataSource" ref="dataSource"/>
</bean>
<bean name="AccountCreationController" class="AccountCreationController" >
    <property name="dataSource" ref="dataSource"/>
</bean>
</beans>

私のLoginControllerは似ています

public class LoginController implements Controller   {

     int check;
    private DataSource dataSource;
     public void setDataSource(DataSource dataSource) {
    this.dataSource=dataSource;
    }
    public DataSource getDataSource() {
    return dataSource;
    }

    JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
    @RequestMapping(value="/Login",method=RequestMethod.POST)
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {                       
                String userName = request.getParameter("userName");
            String password=request.getParameter("password");
            try {
            String selectQuery=("SELECT * FROM USERDETAILS WHERE NAME='"+userName+"'AND PASSWORD='"+password+"'");
                check=jdbcTemplate.update(selectQuery,new Object[]{});  
                System.out.println(check);
                if(check!=0) {
                response.sendRedirect("DvdController");

                }
            }

            catch(IOException e) {
            e.printStackTrace();            
            }

            return new ModelAndView("failure"); 
    }

私のエラーは以下のようなものです:

org.springframework.beans.factory.BeanCreationException: ServletContext リソース [/WEB-INF/dvd-servlet.xml] で定義された 'LoginController' という名前の Bean の作成中にエラーが発生しました: Bean のインスタンス化に失敗しました。ネストされた例外は org.springframework.beans.BeanInstantiationException: Bean クラスをインスタンス化できませんでした [LoginController]: コンストラクターが例外をスローしました。ネストされた例外は java.lang.IllegalArgumentException: プロパティ 'dataSource' が必要ですcreateBeanInstance(support:AbstractAutowireCapableBeanFactory.java):911) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.

根本的な原因

org.springframework.beans.BeanInstantiationException: Bean クラスをインスタンス化できませんでした [LoginController]: コンストラクターが例外をスローしました。ネストされた例外は java.lang.IllegalArgumentException: プロパティ 'dataSource' が必要ですSimpleInstantiationStrategy.java):74) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(support:AbstractAutowireCapableBeanFactory.java):958) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(support:AbstractAutowireCapableBeanFactory.java) :911) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(サポート:

根本的な原因

java.lang.IllegalArgumentException: プロパティ 'dataSource' が必要です:164) LoginController.(LoginController.java:29) sun.reflect.NativeConstructorAccessorImpl.newInstance0(ネイティブ メソッド) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) ) java.lang.reflect.Constructor.newInstance(Constructor.java:513) org.springframework.beans.BeanUtils.instantiateClass(beans:BeanUtils.java):126) org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(サポート:SimpleInstantiationStrategy.java):74) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(support:AbstractAutowireCapableBeanFactory.java):958) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(support:AbstractAutowireCapableBeanFactory.java):911) org. springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(support:AbstractAutowireCapableBeanFactory.java):485) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(support:AbstractAutowireCapableBeanFactory.java):456) org.springframework.beans. factory.support.AbstractBeanFactory$1.getObject(support:AbstractBeanFactory.java):291) org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(support:DefaultSingletonBeanRegistry.java):222) org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(support:AbstractBeanFactory.java):288) org.springframework.beans.factory.support.AbstractBeanFactory.getBean(support:AbstractBeanFactory.java):190) org. springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(support:DefaultListableBeanFactory.java):580) org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:425) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:442) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:458) org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:339)

これをクリアするのを手伝ってください!!!

4

1 に答える 1

1

ここに2つの問題があります。

<bean name="LoginController" class="LoginController" >
    <property name="dataSource" ref="dataSource"/>
</bean>

LoginControllerは本当に完全修飾クラス名ですか?com.cy.LoginControllerのようなものにする必要があります

次に、Springは、LoginControllerのコンストラクターにはプロパティdataSourceが必要であると述べています。LoginControllerにはdataSourceのコンストラクターインジェクションが必要なようです。実行しているのはセッターインジェクションなので、これを試してください。

の代わりに<property name="dataSource" ref="dataSource/>、次のように記述します。 <constructor-arg ref="dataSource"/>

于 2012-11-30T10:15:42.597 に答える