2013-04-09 44 views
1

我是新來的春天和我在春天經歷的示例程序....我的計劃是如下錯誤的Spring XML文件。需要指導做好與Spring MVC的

User.java

package project2; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 
import javax.persistence.Table; 

@Entity 
@Table(name="user") 
public class User { 

private Long id; 
private String name; 
private String password; 
private String gender; 
private String country; 


@Id 
@GeneratedValue 
@Column(name="USER_ID") 
public Long getId() { 
    return id; 
} 
public void setId(Long id) { 
    this.id = id; 
} 

@Column(name="USER_NAME") 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 

@Column(name="USER_PASSWORD") 
public String getPassword() { 
    return password; 
} 
public void setPassword(String password) { 
    this.password = password; 
} 

@Column(name="USER_GENDER") 
public String getGender() { 
    return gender; 
} 
public void setGender(String gender) { 
    this.gender = gender; 
} 

@Column(name="USER_COUNTRY") 
public String getCountry() { 
    return country; 
} 
public void setCountry(String country) { 
    this.country = country; 
} 


} 

UserDAO.java

package project2; 
import java.util.List; 

public interface UserDAO { 

    public void saveUser(User user) ; 
    public List<User> listUser() ; 
    public void deleteUser(User user) ; 
} 

UserController2.java

package project2; 

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import org.springframework.stereotype.Controller; 
import org.springframework.transaction.annotation.Transactional; 
import org.springframework.ui.ModelMap; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.servlet.ModelAndView; 
import org.springframework.web.servlet.mvc.multiaction.MultiActionController; 


@Controller 
public class UserController2 extends MultiActionController { 

    private UserDAO userDAO; 

    public void setUserDAO(UserDAO userDAO) { 
     this.userDAO = userDAO; 
    } 
    @RequestMapping(params = "add", method = RequestMethod.POST) 
    public ModelAndView add(HttpServletRequest request, 
      HttpServletResponse response, User user) throws Exception { 
     userDAO.saveUser(user); 
     return new ModelAndView("redirect:list.htm"); 
    } 
    @RequestMapping(params = "delete", method = RequestMethod.POST) 
    @Transactional 
    public ModelAndView delete(HttpServletRequest request, 
     HttpServletResponse response, User user) throws Exception { 
     userDAO.deleteUser(user); 
     return new ModelAndView("redirect:list.htm"); 
    } 

    public ModelAndView list(HttpServletRequest request, 
     HttpServletResponse response) throws Exception { 
     ModelMap modelMap = new ModelMap(); 
     modelMap.addAttribute("userList", userDAO.listUser()); 
     modelMap.addAttribute("user", new User()); 
     return new ModelAndView("userForm", modelMap); 
    } 
} 

UserDAOImpl.java

package project2; 

import java.util.List; 
import org.hibernate.SessionFactory; 
import org.springframework.orm.hibernate3.HibernateTemplate; 

public class UserDAOImpl implements UserDAO { 

    private HibernateTemplate hibernateTemplate; 

    public void setSessionFactory(SessionFactory sessionFactory) { 
     this.hibernateTemplate = new HibernateTemplate(sessionFactory); 
    } 

    @Override 
    public void saveUser(User user) { 
     hibernateTemplate.saveOrUpdate(user); 
    } 

    @Override 
    @SuppressWarnings("unchecked") 
    public List<User> listUser() { 
     return hibernateTemplate.find("from User"); 
    } 

    @Override 
    public void deleteUser(User user) { 
     hibernateTemplate.delete(user); 
    } 
} 

和UserController2-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" 
    xmlns:p="http://www.springframework.org/schema/p" 
    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-2.5.xsd 
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd 
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 

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


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

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

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

<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="myDataSource" /> 
    <property name="annotatedClasses"> 
     <list> 
      <value>Spring.project2.User</value> 

     </list> 
    </property> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.hbm2ddl.auto">create</prop> 
     </props> 
    </property> 
</bean> 

<bean id="myUserDAO" class="project2.UserDAOImpl"> 
    <property name="sessionFactory" ref="mySessionFactory"/> 
</bean> 

<bean name="/user/*.htm" class="project2.UserController2" > 
    <property name="userDAO" ref="myUserDAO" /> 
</bean> 


<bean name="indexController" class="org.springframework.web.servlet.mvc.ParameterizableViewController" 
     p:viewName="userForm" /> 

</beans> 

和userForm.jsp文件是如下

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org 
/TR/html4/loose.dtd"> 
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 
<center> WELCOME TO CUSTOMER ACCESS SITE.PLEASE ENTER THE FOLLOWING 
       INFORMATION</center> 
<form:form method="POST" action="add.htm" commandName="user"> 
<table> 
<tr> 
    <td><form:label path="name">Name</form:label></td> 
    <td><form:input path="name" /></td> 
</tr> 

<tr> 
    <td><form:label path="id">id</form:label></td> 
    <td><form:input path="id" /></td> 
</tr> 


<tr> 
    <td><form:label path="password">Name</form:label></td> 
    <td><form:input path="password" /></td> 
</tr> 

<tr> 
    <td><form:label path="gender">Name</form:label></td> 
    <td><form:input path="gender" /></td> 
</tr> 

<tr> 
    <td><form:label path="gender">Name</form:label></td> 
    <td><form:input path="gender" /></td> 
</tr> 

<tr> 
    <td><form:label path="country">Name</form:label></td> 
    <td><form:input path="country" /></td> 
</tr> 

<tr> 
    <td colspan="2"> 
     <input type="submit" value="Submit"/> 
    </td> 
</tr> 
</table> 
</form:form> 

</body> 
</html> 

和網絡。 xml文件如下...

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 
<servlet> 
    <servlet-name>UserController2</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>2</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>UserController2</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
</servlet-mapping> 
<session-config> 
    <session-timeout> 
     30 
    </session-timeout> 
</session-config> 

現在,當我運行這個程序,我得到我的UserController2-servlet.xml文件嵌套異常如下

SEVERE: Exception sending context initialized event to listener instance of class 
org.springframework.web.context.ContextLoaderListener 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 
'org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping#0' 
defined in ServletContext resource [/WEB-INF/UserController2-servlet.xml]: 
Initialization of bean failed; nested exception is 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 
'/user/*.htm' defined in ServletContext resource [/WEB-INF/UserController2- 
servlet.xml]: Cannot resolve reference to bean 'myUserDAO' while setting bean property 
'userDAO'; nested exception is 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 
'myUserDAO' defined in ServletContext resource [/WEB-INF/UserController2- 
servlet.xml]: Cannot resolve reference to bean 'mySessionFactory' while setting bean 
property 'sessionFactory'; nested exception is 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 
'mySessionFactory' defined in ServletContext resource [/WEB-INF/UserController2- 
servlet.xml]: Initialization of bean failed; nested exception is 
org.springframework.beans.TypeMismatchException: Failed to convert property value of 
type 'java.util.ArrayList' to required type 'java.lang.Class[]' for property 
'annotatedClasses'; nested exception is java.lang.IllegalArgumentException: Cannot 
find class [Spring.project2.User] 

Caused by: java.lang.ClassNotFoundException: Spring.project2.User 
    at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1360) 
at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1206) 
at org.springframework.util.ClassUtils.forName(ClassUtils.java:257) 
at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:290) 

我在SRC保存的文件夾下的項目2這些文件和項目名稱Spring.I已經囊括了所有在lib中的jar文件和所有的瓶子都是相同version.I的不知道我要去的地方wrong.can有人幫助,請...

回答

1

UserController2-servlet.xml看到這個聲明,改變Spring.project2.Userproject2.User

<bean id="mySessionFactory"  
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="myDataSource" /> 
    <property name="annotatedClasses"> 
     <list> 
      <value>Spring.project2.User</value> 
      .... 
+0

我都嘗試,但它不工作 – Ezhil 2013-04-09 06:04:56

+0

它應該是' project2.User'和'不 Spring.project2.User ' - 這不起作用? – devang 2013-04-09 06:09:12

+0

是的,我顯示相同的錯誤爲「嵌套異常是java.lang.IllegalArgumentException:不能 找到類[project2.User]」 – Ezhil 2013-04-09 06:10:16

0

看到這裏

nested exception is java.lang.IllegalArgumentException: Cannot 
find class [Spring.project2.User] 

變化Spring.project2.Userproject2.User

+0

我THT嘗試過,但出現同樣的錯誤 – Ezhil 2013-04-09 06:08:07

0

拆除彈簧字符串,如下面的它會正常工作

<property name="annotatedClasses"> 
    <list> 
    <value>project2.User</value> 
    </list> 
</property> 

祝你好運:)

+0

然後我應該在哪裏指定我正在使用註釋類 – Ezhil 2013-04-09 06:08:50

+0

另一種方式,您可以使用hibernate中的掃描器來指定實體的目錄。看到我的答案:) – 2013-04-09 06:12:22

1

使用掃描儀找實體:

<bean id="sessionFactory" 
      class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
     <property name="packagesToScan"> 
      <list> 
       <value>project2.*</value> 
      </list> 
     </property> 
     <property name="hibernateProperties"> 
      <props> 

      </props> 
     </property> 
     <property name="dataSource"> 
      <ref bean="dataSource" /> 
     </property> 
    </bean> 

希望能幫助你:)

+0

非常感謝...錯誤解決 – Ezhil 2013-04-09 06:18:58

+0

你能發佈錯誤信息嗎? – 2013-04-09 06:20:16

+0

我想你是問錯誤堆棧跟蹤...我發佈它與上述問題 – Ezhil 2013-04-09 06:24:04