SpringMVC+Hibernate+Spring整合实例(二)

这篇接着上篇,把没贴完的代码写完,上篇主要完成了一些公共配置和界面的东西,这篇把后台的代码完成。

首先是web包下属于的control层的类UserController,这相当于Struts中的Action,是重要的类:

[java]  view plain  copy   在CODE上查看代码片 派生到我的代码片
package com.tgb.web;  
  
import java.io.IOException;  
import java.io.PrintWriter;  
  
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.entity.User;  
import com.tgb.manager.UserManager;  
  
@Controller  
@RequestMapping("/user")  
public class UserController {  
  
    @Resource(name="userManager")  
    private UserManager userManager;  
  
    @RequestMapping("/getAllUser")  
    public String getAllUser(HttpServletRequest request){  
          
        request.setAttribute("userList", userManager.getAllUser());  
          
        return "/index";  
    }  
      
    @RequestMapping("/getUser")  
    public String getUser(String id,HttpServletRequest request){  
          
        request.setAttribute("user", userManager.getUser(id));  
      
        return "/editUser";  
    }  
      
    @RequestMapping("/toAddUser")  
    public String toAddUser(){  
        return "/addUser";  
    }  
      
    @RequestMapping("/addUser")  
    public String addUser(User user,HttpServletRequest request){  
          
        userManager.addUser(user);  
          
        return "redirect:/user/getAllUser";  
    }  
      
    @RequestMapping("/delUser")  
    public void delUser(String id,HttpServletResponse response){  
          
        String result = "{\"result\":\"error\"}";  
          
        if(userManager.delUser(id)){  
            result = "{\"result\":\"success\"}";  
        }  
          
        response.setContentType("application/json");  
          
        try {  
            PrintWriter out = response.getWriter();  
            out.write(result);  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  
      
    @RequestMapping("/updateUser")  
    public String updateUser(User user,HttpServletRequest request){  
          
        if(userManager.updateUser(user)){  
            user = userManager.getUser(user.getId());  
            request.setAttribute("user", user);  
            return "redirect:/user/getAllUser";  
        }else{  
            return "/error";  
        }  
    }  
}  
然后是属于manager包下的业务逻辑类,接口UserManager:
[java] view plain copy 在CODE上查看代码片派生到我的代码片
package com.tgb.manager;  
  
import java.util.List;  
  
import com.tgb.entity.User;  
  
public interface UserManager {  
  
    public User getUser(String id);  
      
    public List<User> getAllUser();  
      
    public void addUser(User user);  
      
    public boolean delUser(String id);  
      
    public boolean updateUser(User user);  
}  


实现类UserManagerImpl:

[java]  view plain  copy   在CODE上查看代码片 派生到我的代码片
package com.tgb.manager;  
  
import java.util.List;  
  
import com.tgb.dao.UserDao;  
import com.tgb.entity.User;  
  
public class UserManagerImpl implements UserManager {  
  
    private UserDao userDao;  
      
    public void setUserDao(UserDao userDao) {  
        this.userDao = userDao;  
    }  
  
    @Override  
    public User getUser(String id) {  
        return userDao.getUser(id);  
    }  
  
    @Override  
    public List<User> getAllUser() {  
        return userDao.getAllUser();  
    }  
  
    @Override  
    public void addUser(User user) {  
        userDao.addUser(user);  
    }  
  
    @Override  
    public boolean delUser(String id) {  
          
        return userDao.delUser(id);  
    }  
  
    @Override  
    public boolean updateUser(User user) {  
        return userDao.updateUser(user);  
    }  
  
}  


最后是属于dao包底下的DAO层,主要由Hibernate完成。接口UserDao:

[java]  view plain  copy   在CODE上查看代码片 派生到我的代码片
package com.tgb.dao;  
  
import java.util.List;  
  
import com.tgb.entity.User;  
  
public interface UserDao {  
  
    public User getUser(String id);  
      
    public List<User> getAllUser();  
      
    public void addUser(User user);  
      
    public boolean delUser(String id);  
      
    public boolean updateUser(User user);  
}  


实现类UserDaoImpl:

[java]  view plain  copy   在CODE上查看代码片 派生到我的代码片
package com.tgb.dao;  
  
import java.util.List;  
  
import org.hibernate.Query;  
import org.hibernate.SessionFactory;  
  
import com.tgb.entity.User;  
  
public class UserDaoImpl implements UserDao {  
  
    private SessionFactory sessionFactory;  
  
    public void setSessionFactory(SessionFactory sessionFactory) {  
        this.sessionFactory = sessionFactory;  
    }  
      
    @Override  
    public User getUser(String id) {  
          
        String hql = "from User u where u.id=?";  
        Query query = sessionFactory.getCurrentSession().createQuery(hql);  
        query.setString(0, id);  
          
        return (User)query.uniqueResult();  
    }  
  
    @Override  
    public List<User> getAllUser() {  
          
        String hql = "from User";  
        Query query = sessionFactory.getCurrentSession().createQuery(hql);  
          
        return query.list();  
    }  
  
    @Override  
    public void addUser(User user) {  
        sessionFactory.getCurrentSession().save(user);  
    }  
  
    @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 boolean updateUser(User user) {  
          
        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);  
    }  
  
}  


最后外加一个配置spring-beans.xml,放在config.spring包下,负责为各层依赖注入需要的对象:

[html]  view plain  copy   在CODE上查看代码片 派生到我的代码片
<?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:context="http://www.springframework.org/schema/context"  
    xmlns:mvc="http://www.springframework.org/schema/mvc"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans   
    http://www.springframework.org/schema/beans/spring-beans.xsd">  
      
    <bean id="userDao" class="com.tgb.dao.UserDaoImpl">  
        <property name="sessionFactory" ref="sessionFactory"></property>  
    </bean>  
  
    <bean id="userManagerBase" class="com.tgb.manager.UserManagerImpl">  
        <property name="userDao" ref="userDao"></property>  
    </bean>  
      
    <!-- 此处为代理 -->  
    <bean name="userManager" parent="transactionProxy">  
        <property name="target" ref="userManagerBase"></property>  
    </bean>     
</beans>  


到此为止,所有的配置和代码完成,部署—运行,运行结果如下图:



这个小实例结束,下篇将对SpringMVC和Struts2做一个对比。

实例下载地址:http://download.csdn.net/detail/stubbornpotatoes/5489587

针对springmvc注解的解释:http://blog.csdn.net/kobejayandy/article/details/12690161

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值