springMVC系列之(四) spring+springMVC+hibernate 三大框架整合



springMVC系列之(四) spring+springMVC+hibernate 三大框架整合

994人阅读 评论(28) 收藏 举报

         首先我们要知道Hibernate五大对象:,本实例通过深入的使用这五大对象和spring+springMVC相互结合,体会到框架的好处,提高我们的开发效率

         Hibernate有五大核心接口,分别是:Session Transaction Query SessionFactoryConfiguration 。这五个接口构成了Hibernate运行的基本要素,可以执行存取,持久化,事务管理等操作。这五个接口可以位于系统的业务逻辑层和持久化层。下面是一张Hibernate的关系图:



Session接口:

       Session接口 Session 接口对于Hibernate 开发人员来说是一个最重要的接口。然而在Hibernate中,实例化的Session是一个轻量级的类,创建和销毁它都不会占用很多资源。这在实际项目中确实很重要,因为在客户程序中,可能会不断地创建以及销毁Session对象,如果Session 的开销太大,会给系统带来不良影响。但是Session对象是非线程安全的,因此在你的设计中,最好是一个线程只创建一个Session对象。 session可以看作介于数据连接与事务管理一种中间接口。我们可以将session想象成一个持久对象的缓冲区,Hibernate能检测到这些持久对象的改变,并及时刷新数据库。我们有时也称Session是一个持久层管理器,因为它包含这一些持久层相关的操作, 诸如存储持久对象至数据库,以及从数据库从获得它们。需要注意的是,Hibernate的session不同于JSP 应用中的HttpSession。当我们使用session这个术语时,我们指的Hibernate 中的session,而我们以后会将HttpSesion 对象称为用户session。

 

SessionFactory接口:

       SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。

 

Transaction接口

        Transaction接口负责事务相关的操作,一般在Hibernate的增删改中出现,但是使用Hibernate的人一般使用Spring去管理事务。

 

Query接口

Query负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。它的返回值一般是List。需要自己转换。

 

Configuration接口:

       Configuration对象用于配置并根启动HibernateHibernate应用通过Configuration实例来指定对象关系映射文件的位置或者动态配置Hibernate的属性,然后创建SessionFactory实例。我们可以查看Configuration的源代码,它的configure()方法是这样实现的:



了解了这五大对象之后,,以上博客我们配置好了spring+springMVC的环境,现在我们继续集成hibernate的相关配置,框架图如下:



第一步:引入相关的包

            (对于每个包,我们要有意识的去了解其功能,这样今后的时候项目中报错之后我们也可以及时知道错误出在哪里?)





第二:   继续配置hibernatexml文件( springAnnotation-hibernate.xml)


  1. <span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd" [  
  3. <!ENTITY contextInclude SYSTEM "org/springframework/web/context/WEB-INF/contextInclude.xml">  
  4. ]>  
  5.   
  6. <beans>  
  7. <!-- 配置hibernate相关数据库的操作 -->  
  8.     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
  9.     <!-- 数据库的驱动 -->  
  10.         <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>  
  11.         <!-- 数据库的Id,用户名与密码 -->  
  12.         <property name="url" value="jdbc:oracle:thin:@192.168.24.248:1521:ORCL"/>  
  13.         <property name="username" value="lishehe"/>  
  14.         <property name="password" value="lishehe"/>  
  15.     </bean>  
  16.       
  17.     <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">  
  18.         <property name="dataSource" ref="dataSource"/>  
  19.         <property name="hibernateProperties">  
  20.             <props>  
  21.             <!-- 配置不同数据库的方言 -->  
  22.                 <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>  
  23.                 <!-- 其实这个参数的作用主要用于:自动创建|更新|验证数据库表结构。如果不是此方面的需求建议set value="none".  
  24. 其它几个参数的意思,我解释一下:  
  25.  validate               加载hibernate时,验证创建数据库表结构  
  26.  create                  每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。  
  27.  create-drop        加载hibernate时创建,退出是删除表结构  
  28.  update                 加载hibernate自动更新数据库结构 -->  
  29.                 <prop key="hibernate.hbm2ddl.auto">update</prop>   
  30.                 <!-- 是否显示sql语句 -->  
  31.                 <prop key="hibernate.show_sql">true</prop>  
  32.                 <prop key="hiberante.format_sql">true</prop>  
  33.             </props>  
  34.         </property>  
  35.         <property name="configLocations">  
  36.             <list>  
  37.                 <value>  
  38.                 <!-- 读取和实体相关的xml -->  
  39.                     classpath*:com/tgb/web/controller/hibernate/hibernate.cfg.test.xml  
  40.                 </value>  
  41.             </list>  
  42.         </property>  
  43.     </bean>  
  44.      <!-- 定义事务管理器(声明式的事务) -->    
  45.     <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">  
  46.         <property name="sessionFactory" ref="sessionFactory"></property>  
  47.     </bean>  
  48.       
  49.     <bean id="transactionBese" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" lazy-init="true" abstract="true">  
  50.          <!-- 配置事务管理器 -->    
  51.         <property name="transactionManager" ref="transactionManager"></property>  
  52.          <!-- 配置事务管理器 -->    
  53.         <property name="transactionAttributes">  
  54.             <props>  
  55.               
  56.               
  57.     <!-- 下面就开始配置各个模块所必须的部分,在各自的applicationContext-XXX-beans.xml配置的对于事务管理的详细信息。  
  58.   
  59. 首先就是配置事务的传播特性,如下: -->  
  60.   
  61. <!--  配置事务传播特性 -->  
  62.               
  63.                 <prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>  
  64.                 <prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>  
  65.                 <prop key="insert*">PROPAGATION_REQUIRED,-Exception</prop>  
  66.                 <prop key="modify*">PROPAGATION_REQUIRED,-Exception</prop>  
  67.                 <prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop>  
  68.                 <prop key="get*">PROPAGATION_NEVER</prop>  
  69.             </props>  
  70.         </property>  
  71.     </bean>  
  72.       
  73.       
  74. </beans>  
  75. </span></span></span>  
<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd" [
<!ENTITY contextInclude SYSTEM "org/springframework/web/context/WEB-INF/contextInclude.xml">
]>

<beans>
<!-- 配置hibernate相关数据库的操作 -->
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
	<!-- 数据库的驱动 -->
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
		<!-- 数据库的Id,用户名与密码 -->
		<property name="url" value="jdbc:oracle:thin:@192.168.24.248:1521:ORCL"/>
		<property name="username" value="lishehe"/>
		<property name="password" value="lishehe"/>
	</bean>
	
	<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<property name="hibernateProperties">
			<props>
			<!-- 配置不同数据库的方言 -->
				<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
				<!-- 其实这个参数的作用主要用于:自动创建|更新|验证数据库表结构。如果不是此方面的需求建议set value="none".
其它几个参数的意思,我解释一下:
 validate               加载hibernate时,验证创建数据库表结构
 create                  每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。
 create-drop        加载hibernate时创建,退出是删除表结构
 update                 加载hibernate自动更新数据库结构 -->
				<prop key="hibernate.hbm2ddl.auto">update</prop> 
				<!-- 是否显示sql语句 -->
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hiberante.format_sql">true</prop>
			</props>
		</property>
		<property name="configLocations">
			<list>
				<value>
				<!-- 读取和实体相关的xml -->
					classpath*:com/tgb/web/controller/hibernate/hibernate.cfg.test.xml
				</value>
			</list>
		</property>
	</bean>
	 <!-- 定义事务管理器(声明式的事务) -->  
	<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	
	<bean id="transactionBese" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" lazy-init="true" abstract="true">
		 <!-- 配置事务管理器 -->  
		<property name="transactionManager" ref="transactionManager"></property>
		 <!-- 配置事务管理器 -->  
		<property name="transactionAttributes">
			<props>
			
			
    <!-- 下面就开始配置各个模块所必须的部分,在各自的applicationContext-XXX-beans.xml配置的对于事务管理的详细信息。

首先就是配置事务的传播特性,如下: -->

<!--  配置事务传播特性 -->
			
				<prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="insert*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="modify*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="get*">PROPAGATION_NEVER</prop>
			</props>
		</property>
	</bean>
	
	
</beans>
</span></span></span>


第三:   新建IUserDAO

  1. <span style="font-size:18px;"><span style="font-size:18px;">package com.tgb.web.controller.dao;  
  2.   
  3. import java.util.List;  
  4.   
  5. import com.tgb.web.controller.entity.User;  
  6.   
  7. public interface IUserDAO {  
  8.   
  9.     public void addUser(User user);  
  10.       
  11.     public List<User> getAllUser();  
  12.       
  13.     public boolean delUser(String id);  
  14.       
  15.     public User getUser(String id);  
  16.       
  17.     public boolean updateUser(User user);  
  18. }  
  19. </span></span>  
<span style="font-size:18px;"><span style="font-size:18px;">package com.tgb.web.controller.dao;

import java.util.List;

import com.tgb.web.controller.entity.User;

public interface IUserDAO {

	public void addUser(User user);
	
	public List<User> getAllUser();
	
	public boolean delUser(String id);
	
	public User getUser(String id);
	
	public boolean updateUser(User user);
}
</span></span>

                  实现类UserDAo
  1. <span style="font-size:18px;"><span style="font-size:18px;">package com.tgb.web.controller.dao;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.hibernate.Query;  
  6. import org.hibernate.SessionFactory;  
  7.   
  8. import com.tgb.web.controller.entity.User;  
  9.   
  10. public class UserDAO implements IUserDAO  {  
  11.   
  12.     private SessionFactory sessionFactory;  
  13.       
  14.     public void setSessionFactory(SessionFactory sessionFactory) {  
  15.         this.sessionFactory = sessionFactory;  
  16.     }  
  17.   
  18.     @Override  
  19.       
  20.     public void addUser(User user) {//添加用户  
  21.         sessionFactory.getCurrentSession().save(user);  
  22.     }  
  23.   
  24.     @Override  
  25.         public List<User> getAllUser() {//查找所有用户信息  
  26.         String hql = "from User";  
  27.         Query query = sessionFactory.getCurrentSession().createQuery(hql);  
  28.           
  29.         return query.list();  
  30.     }  
  31.   
  32.     @Override  
  33.     public boolean delUser(String id) {//删除用户  
  34.         String hql = "delete User u where u.id=?";  
  35.         Query query = sessionFactory.getCurrentSession().createQuery(hql);  
  36.         query.setString(0, id);  
  37.           
  38.         return (query.executeUpdate() > 0);  
  39.     }  
  40.   
  41.     @Override  
  42.     public User getUser(String id) {//根据id得到单个用户  
  43.         String hql = "from User u where u.id=?";  
  44.         Query query = sessionFactory.getCurrentSession().createQuery(hql);//此时使用的是hql语句  
  45.         query.setString(0, id);  
  46.           
  47.         return (User) query.uniqueResult();  
  48.     }  
  49.   
  50.     @Override  
  51.     public boolean updateUser(User user) {//修改用户信息,hql语句  
  52.         String hql = "update User u set u.userName=?,u.age=? where u.id=?";  
  53.         Query query = sessionFactory.getCurrentSession().createQuery(hql);  
  54.         query.setString(0, user.getUserName());  
  55.         query.setString(1, user.getAge());  
  56.         query.setString(2, user.getId());  
  57.           
  58.         return (query.executeUpdate() > 0);  
  59.     }  
  60.       
  61.       
  62.   
  63. }  
  64. </span></span>  
<span style="font-size:18px;"><span style="font-size:18px;">package com.tgb.web.controller.dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.SessionFactory;

import com.tgb.web.controller.entity.User;

public class UserDAO implements IUserDAO  {

	private SessionFactory sessionFactory;
	
	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

	@Override
	
	public void addUser(User user) {//添加用户
		sessionFactory.getCurrentSession().save(user);
	}

	@Override
		public List<User> getAllUser() {//查找所有用户信息
		String hql = "from User";
		Query query = sessionFactory.getCurrentSession().createQuery(hql);
		
		return query.list();
	}

	@Override
	public boolean delUser(String id) {//删除用户
		String hql = "delete User u where u.id=?";
		Query query = sessionFactory.getCurrentSession().createQuery(hql);
		query.setString(0, id);
		
		return (query.executeUpdate() > 0);
	}

	@Override
	public User getUser(String id) {//根据id得到单个用户
		String hql = "from User u where u.id=?";
		Query query = sessionFactory.getCurrentSession().createQuery(hql);//此时使用的是hql语句
		query.setString(0, id);
		
		return (User) query.uniqueResult();
	}

	@Override
	public boolean updateUser(User user) {//修改用户信息,hql语句
		String hql = "update User u set u.userName=?,u.age=? where u.id=?";
		Query query = sessionFactory.getCurrentSession().createQuery(hql);
		query.setString(0, user.getUserName());
		query.setString(1, user.getAge());
		query.setString(2, user.getId());
		
		return (query.executeUpdate() > 0);
	}
	
	

}
</span></span>

第四:  新建实体User
  1. <span style="font-size:18px;"><span style="font-size:18px;">package com.tgb.web.controller.entity;  
  2.   
  3. import javax.persistence.Column;  
  4. import javax.persistence.Entity;  
  5. import javax.persistence.GeneratedValue;  
  6. import javax.persistence.Id;  
  7. import javax.persistence.Table;  
  8.   
  9. import org.hibernate.annotations.GenericGenerator;  
  10.   
  11. @Entity  
  12. @Table(name="T_USER")  
  13. public class User {  
  14.       
  15.     @Id  
  16.     @GeneratedValue(generator = "system-uuid")  //使用uuid生成主键的方式  
  17.     @GenericGenerator(name = "system-uuid", strategy = "uuid")   
  18.     @Column(length=32)  
  19.     private String id;  
  20.       
  21.     @Column(length=32)  
  22.     private String userName;  
  23.       
  24.     @Column(length=32)  
  25.     private String age;  
  26.   
  27.     public String getUserName() {  
  28.         return userName;  
  29.     }  
  30.   
  31.     public void setUserName(String userName) {  
  32.         this.userName = userName;  
  33.     }  
  34.   
  35.     public String getAge() {  
  36.         return age;  
  37.     }  
  38.   
  39.     public void setAge(String age) {  
  40.         this.age = age;  
  41.     }  
  42.       
  43.     public String getId() {  
  44.         return id;  
  45.     }  
  46.   
  47.     public void setId(String id) {  
  48.         this.id = id;  
  49.     }  
  50.   
  51. }  
  52. </span></span>  
<span style="font-size:18px;"><span style="font-size:18px;">package com.tgb.web.controller.entity;

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

import org.hibernate.annotations.GenericGenerator;

@Entity
@Table(name="T_USER")
public class User {
	
	@Id
	@GeneratedValue(generator = "system-uuid")  //使用uuid生成主键的方式
    @GenericGenerator(name = "system-uuid", strategy = "uuid") 
    @Column(length=32)
	private String id;
	
	@Column(length=32)
	private String userName;
	
	@Column(length=32)
	private String age;

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}
	
	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

}
</span></span>

                  通常是 hibernate.cfg.xml)中声明持久性类 hibernate.cfg.test.xml
  1. <span style="font-size:18px;"><span style="font-size:18px;"><!DOCTYPE hibernate-configuration PUBLIC  
  2.         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
  3.         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">  
  4. <!-- (通常是 hibernate.cfg.xml)中声明持久性类: -->  
  5. <hibernate-configuration>  
  6.     <session-factory>  
  7.         <mapping class="com.tgb.web.controller.entity.User"/>  
  8.     </session-factory>  
  9. </hibernate-configuration></span></span>  
<span style="font-size:18px;"><span style="font-size:18px;"><!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!-- (通常是 hibernate.cfg.xml)中声明持久性类: -->
<hibernate-configuration>
    <session-factory>
        <mapping class="com.tgb.web.controller.entity.User"/>
    </session-factory>
</hibernate-configuration></span></span>


第五 : IUserManager

  1. <span style="font-size:18px;"><span style="font-size:18px;">package com.tgb.web.controller.service;  
  2.   
  3. import java.util.List;  
  4.   
  5. import com.tgb.web.controller.entity.User;  
  6.   
  7. public interface IUserManager {  
  8.   
  9.     public void addUser(User user);  
  10.       
  11.     public List<User> getAllUser();  
  12.       
  13.     public boolean delUser(String id);  
  14.       
  15.     public User getUser(String id);  
  16.       
  17.     public boolean updateUser(User user);  
  18. }  
  19. </span></span>  
<span style="font-size:18px;"><span style="font-size:18px;">package com.tgb.web.controller.service;

import java.util.List;

import com.tgb.web.controller.entity.User;

public interface IUserManager {

	public void addUser(User user);
	
	public List<User> getAllUser();
	
	public boolean delUser(String id);
	
	public User getUser(String id);
	
	public boolean updateUser(User user);
}
</span></span>


             UserManager实现类

  1. <span style="font-size:18px;"><span style="font-size:18px;">package com.tgb.web.controller.service;  
  2.   
  3. import java.util.List;  
  4.   
  5. import com.tgb.web.controller.dao.IUserDAO;  
  6. import com.tgb.web.controller.entity.User;  
  7.   
  8. public class UserManager implements IUserManager {  
  9.       
  10.     private IUserDAO userDao;  
  11.       
  12.       
  13.     public void setUserDao(IUserDAO userDao) {  
  14.         this.userDao = userDao;  
  15.     }  
  16.   
  17.   
  18.     @Override  
  19.     public void addUser(User user) {  
  20.         userDao.addUser(user);  
  21.     }  
  22.   
  23.   
  24.     @Override  
  25.     public List<User> getAllUser() {  
  26.         return userDao.getAllUser();  
  27.     }  
  28.   
  29.   
  30.     @Override  
  31.     public boolean delUser(String id) {  
  32.         return userDao.delUser(id);  
  33.     }  
  34.   
  35.   
  36.     @Override  
  37.     public User getUser(String id) {  
  38.         return userDao.getUser(id);  
  39.     }  
  40.   
  41.   
  42.     @Override  
  43.     public boolean updateUser(User user) {  
  44.         return userDao.updateUser(user);  
  45.     }  
  46.   
  47. }  
  48. </span></span>  
<span style="font-size:18px;"><span style="font-size:18px;">package com.tgb.web.controller.service;

import java.util.List;

import com.tgb.web.controller.dao.IUserDAO;
import com.tgb.web.controller.entity.User;

public class UserManager implements IUserManager {
	
	private IUserDAO userDao;
	
	
	public void setUserDao(IUserDAO userDao) {
		this.userDao = userDao;
	}


	@Override
	public void addUser(User user) {
		userDao.addUser(user);
	}


	@Override
	public List<User> getAllUser() {
		return userDao.getAllUser();
	}


	@Override
	public boolean delUser(String id) {
		return userDao.delUser(id);
	}


	@Override
	public User getUser(String id) {
		return userDao.getUser(id);
	}


	@Override
	public boolean updateUser(User user) {
		return userDao.updateUser(user);
	}

}
</span></span>


第六   UserController,控制类


  1. <span style="font-size:18px;">package com.tgb.web.controller;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5. import java.util.List;  
  6.   
  7. import javax.annotation.Resource;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10.   
  11. import org.springframework.stereotype.Controller;  
  12. import org.springframework.web.bind.annotation.RequestMapping;  
  13.   
  14. import com.tgb.web.controller.entity.User;  
  15. import com.tgb.web.controller.service.IUserManager;  
  16.   
  17. @Controller  
  18. @RequestMapping("/user")  
  19. public class UserController {  
  20.    
  21.     @Resource(name="userManager")// 获取spring配置文件中bean的id为userManager的,并注入   
  22.     private IUserManager userManager;  
  23.       
  24.     @RequestMapping("/toAddUser")  
  25.     public String toAddUser(){  
  26.         return "/addUser";  
  27.     }  
  28.       
  29.     @RequestMapping("/addUser")// 请求url地址映射,类似Struts的action-mapping   
  30.     public String addUser(User user){  
  31.           
  32.         userManager.addUser(user);  
  33.           
  34.         return "redirect:/user/getAllUser";  
  35.     }  
  36.       
  37.     @RequestMapping("/getAllUser")  
  38.     public String getAllUser(HttpServletRequest request){  
  39.         List<User> user = userManager.getAllUser();  
  40.           
  41.         request.setAttribute("user", user);  
  42.           
  43.         return "/userManager";  
  44.     }  
  45.       
  46.     @RequestMapping("/delUser")  
  47.     public void delUser(String id,HttpServletResponse response){  
  48.         String result = "{\"result\":\"error\"}";  
  49.         if(userManager.delUser(id)){  
  50.             result = "{\"result\":\"success\"}";  
  51.         }  
  52.         PrintWriter out = null;  
  53.         response.setContentType("application/json");  
  54.           
  55.         try {  
  56.             out = response.getWriter();  
  57.             out.write(result);  
  58.         } catch (IOException e) {  
  59.             e.printStackTrace();  
  60.         }  
  61.           
  62.     }  
  63.       
  64.     @RequestMapping("/getUser")  
  65.     public String getUser(String id,HttpServletRequest request){  
  66.         User user = userManager.getUser(id);  
  67.           
  68.         request.setAttribute("user", user);  
  69.         return "/editUser";  
  70.     }  
  71.       
  72.     @RequestMapping("/updateUser")  
  73.     public String updateUser(User user,HttpServletRequest request){  
  74.           
  75.         if(userManager.updateUser(user)){  
  76.             user = userManager.getUser(user.getId());  
  77.             request.setAttribute("user", user);  
  78.             return "/editUser";  
  79.         }else{  
  80.             return "/error";  
  81.         }  
  82.           
  83.     }  
  84. }  
  85. </span>  
<span style="font-size:18px;">package com.tgb.web.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

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

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.tgb.web.controller.entity.User;
import com.tgb.web.controller.service.IUserManager;

@Controller
@RequestMapping("/user")
public class UserController {
 
	@Resource(name="userManager")// 获取spring配置文件中bean的id为userManager的,并注入 
	private IUserManager userManager;
	
	@RequestMapping("/toAddUser")
	public String toAddUser(){
		return "/addUser";
	}
	
	@RequestMapping("/addUser")// 请求url地址映射,类似Struts的action-mapping 
	public String addUser(User user){
		
		userManager.addUser(user);
		
		return "redirect:/user/getAllUser";
	}
	
	@RequestMapping("/getAllUser")
	public String getAllUser(HttpServletRequest request){
		List<User> user = userManager.getAllUser();
		
		request.setAttribute("user", user);
		
		return "/userManager";
	}
	
	@RequestMapping("/delUser")
	public void delUser(String id,HttpServletResponse response){
		String result = "{\"result\":\"error\"}";
		if(userManager.delUser(id)){
			result = "{\"result\":\"success\"}";
		}
		PrintWriter out = null;
		response.setContentType("application/json");
		
		try {
			out = response.getWriter();
			out.write(result);
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	
	@RequestMapping("/getUser")
	public String getUser(String id,HttpServletRequest request){
		User user = userManager.getUser(id);
		
		request.setAttribute("user", user);
		return "/editUser";
	}
	
	@RequestMapping("/updateUser")
	public String updateUser(User user,HttpServletRequest request){
		
		if(userManager.updateUser(user)){
			user = userManager.getUser(user.getId());
			request.setAttribute("user", user);
			return "/editUser";
		}else{
			return "/error";
		}
		
	}
}
</span>


第七:前台页面(详细内容不再详列出,源码分享给大家)




运行效果

:



总结


       这个过程虽然简单,但是自己操作的过程中还是出现了很多的问题,解决问题,快速成长,进一步验证了一句话:实践是检验真理的唯一标准!


源码下载

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值