2012-12-18 70 views
0

我是新來的春天,正在一個例子。這個例子演示瞭如何使用hibernate將數據添加到表中,並列出它,我試圖添加額外的刪除選項,但它的更新記錄,而不是。我將在下面發佈完整的代碼。 (2)我使用jsp和servlet以及大量jquery ajax開發簡單的web應用程序,我也希望在spring中使用ajax,我能夠以相同方式編寫代碼,還是能夠編寫與我必須學習的內容不同的代碼。坦率地說,我看到春天模式後很害怕.. :)。新的春天,無法刪除用戶使用休眠

調度-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"/> 

    <!-- 
    Most controllers will use the ControllerClassNameHandlerMapping above, but 
    for the index controller we are using ParameterizableViewController, so we must 
    define an explicit mapping for it. 
    --> 
    <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/production"/> 
     <property name="username" value="tpsl_admin"/> 
     <property name="password" value="admin"/> 
    </bean> 

    <bean id="mySessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
     <property name="dataSource" ref="myDataSource" /> 
     <property name="annotatedClasses"> 
      <list> 
       <value>com.org.domain.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="com.org.dao.UserDAOImpl"> 
     <property name="sessionFactory" ref="mySessionFactory"/> 
    </bean> 

    <bean name="/user/*.htm" class="com.org.web.UserController" > 
     <property name="userDAO" ref="myUserDAO" /> 
    </bean> 

    <!-- 
    The index controller. 
    --> 
    <bean name="indexController" class="org.springframework.web.servlet.mvc.ParameterizableViewController" 
      p:viewName="index" /> 

</beans> 

的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/applicationContext.xml</param-value> 
    </context-param> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
    <servlet> 
     <servlet-name>dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>2</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>*.htm</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>redirect.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 

UserDAO.java

package com.org.dao; 
import com.org.domain.User; 
import java.util.List; 

public interface UserDAO { 

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

UserDAOImpl.java

package com.org.dao; 
import com.org.domain.User; 
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); 
    } 
} 

User.java

package com.org.domain; 

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; 
    private String aboutYou; 
    private String[] community; 
    private Boolean mailingList; 

    @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; 
    } 

    @Column(name="USER_ABOUT_YOU") 
    public String getAboutYou() { 
     return aboutYou; 
    } 
    public void setAboutYou(String aboutYou) { 
     this.aboutYou = aboutYou; 
    } 

    @Column(name="USER_COMMUNITY") 
    public String[] getCommunity() { 
     return community; 
    } 
    public void setCommunity(String[] community) { 
     this.community = community; 
    } 

    @Column(name="USER_MAILING_LIST") 
    public Boolean getMailingList() { 
     return mailingList; 
    } 
    public void setMailingList(Boolean mailingList) { 
     this.mailingList = mailingList; 
    } 

} 

UserController.java

package com.org.web; 
import com.org.dao.UserDAO; 
import com.org.domain.User; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
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; 

public class UserController 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); 
    } 
} 

確定這就是所有的代碼,我現在用的IDE是NetBeans中,sprinf ver是3.1.1。 Hibernate 3.0。有些人請告訴我我需要改變的地方我在2天內嘗試失敗。如果可能,還請解釋我自己的代碼,我有許多疑問。

三江源

userForm.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<style type="text/css"> 
.even { 
    background-color: silver; 
} 
</style> 
<title>Registration Page</title> 
</head> 
<body> 

    <form:form action="add.htm" commandName="user" method="post"> 
    <table> 

     <tr> 
      <td>User Name :</td> 
      <td><form:input path="name" /></td> 
     </tr> 
     <tr> 
      <td>Password :</td> 
      <td><form:password path="password" /></td> 
     </tr> 
     <tr> 
      <td>Gender :</td> 
      <td><form:radiobutton path="gender" value="M" label="M" /> 
          <form:radiobutton path="gender" value="F" label="F" /></td> 
     </tr> 
     <tr> 
      <td>Country :</td> 
      <td><form:select path="country"> 
       <form:option value="0" label="Select" /> 
       <form:option value="India" label="India" /> 
       <form:option value="USA" label="USA" /> 
       <form:option value="UK" label="UK" /> 
      </form:select></td> 
     </tr> 
     <tr> 
      <td>About you :</td> 
      <td><form:textarea path="aboutYou" /></td> 
     </tr> 
     <tr> 
      <td>Community :</td> 
      <td><form:checkbox path="community" value="Spring" label="Spring" /> 
          <form:checkbox path="community" value="Hibernate" label="Hibernate" /> 
          <form:checkbox path="community" value="Struts" label="Struts" /> 
         </td> 
     </tr> 
     <tr> 
      <td></td> 
      <td><form:checkbox path="mailingList" label="Would you like to join our mailinglist?" /></td> 
     </tr> 
     <tr> 
      <td colspan="2"><input type="submit" name="add" value="Register"></td> 
         <td colspan="2"><input type="button" name="delete" value="Delete"></td> 
     </tr> 
    </table> 
</form:form> 
<c:if test="${fn:length(userList) > 0}"> 
    <table cellpadding="5"> 
     <tr class="even"> 
         <th>ID</th> 
      <th>Name</th> 
      <th>Gender</th> 
      <th>Country</th> 
      <th>About You</th> 
         <th>Mailing List</th> 
         <th>Community</th> 
     </tr> 
     <c:forEach items="${userList}" var="user" varStatus="status"> 
      <tr class="<c:if test="${status.count % 2 == 0}">even</c:if>"> 
           <td>${user.id}</td> 
       <td>${user.name}</td> 
       <td>${user.gender}</td> 
       <td>${user.country}</td> 
       <td>${user.aboutYou}</td> 
           <td>${user.mailingList}</td> 
           <td>${user.community}</td> 
      </tr> 
     </c:forEach> 
    </table> 
</c:if> 
</body> 
</html> 
+2

你得到的錯誤是什麼? –

+1

顯示**錯誤**和'userForm.jsp',可能是您的URL映射錯誤 – tesla1984

+0

添加您的打印股權跟蹤,以便獲取錯誤類型和行號 –

回答

0

在你的dispatcherServlet.xml請評論下面的線

因爲每次當您重新啓動服務器
<prop key="hibernate.hbm2ddl.auto">create</prop> 

,它會自動創建表服務器啓動時。請檢查映射正確刪除用戶和打印或斷點和調試問題,看到您的代碼hibernateTemplate.delete(用戶)應該正常工作。