本文共 4846 字,大约阅读时间需要 16 分钟。
这篇接着上篇,把没贴完的代码写完,上篇主要完成了一些公共配置和界面的东西,这篇把后台的代码完成。
首先是web包下属于的control层的类UserController,这相当于Struts中的Action,是重要的类:
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:
package com.tgb.manager;import java.util.List;import com.tgb.entity.User;public interface UserManager { public User getUser(String id); public ListgetAllUser(); public void addUser(User user); public boolean delUser(String id); public boolean updateUser(User user);}
实现类UserManagerImpl:
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 ListgetAllUser() { 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:
package com.tgb.dao;import java.util.List;import com.tgb.entity.User;public interface UserDao { public User getUser(String id); public ListgetAllUser(); public void addUser(User user); public boolean delUser(String id); public boolean updateUser(User user);}
实现类UserDaoImpl:
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 ListgetAllUser() { 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包下,负责为各层依赖注入需要的对象:
到此为止,所有的配置和代码完成,部署—运行,运行结果如下图:
这个小实例结束,下篇将对SpringMVC和Struts2做一个对比。
实例下载地址:http://download.csdn.net/detail/stubbornpotatoes/5489587