学习Struts+spring+hibernate的笔记
2004-10-11 14:27
671 查看
(快刀浪子原创)下面是我学习Struts+spring+hibernate的笔记.
1.WEB.XML的配置:
首先在web.xml中加入:
我的整个web.xml象这样:
2.spring配置
配置文件为applicationContext-hibernate.xml,在此配置文件中,配了POJO层,商业逻辑层,DAO层,和事务管理
3.做DAO代码,
4.做service层代码
5.做ACTION的父类
6.做action类
学习中ing 编程小语
1.WEB.XML的配置:
首先在web.xml中加入:
java代码: |
1 2 <servlet> 3 <servlet-name>SpringContextServlet</servlet-name> 4 <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> 5 <load-on-startup>1</load-on-startup> 6 </servlet> 7 |
java代码: |
1 2 <?xml version="1.0" encoding="UTF-8"?> 3 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> 4 <web-app> 5 <display-name>info_web</display-name> 6 <context-param> 7 <param-name>contextConfigLocation</param-name> 8 <param-value>/WEB-INF/applicationContext-hibernate.xml</param-value> 9 </context-param> 10 <filter> 11 <filter-name>SetCharacterEncoding</filter-name> 12 <filter-class>iclass.util.SetEncodingFilter</filter-class> 13 <init-param> 14 <param-name>encoding</param-name> 15 <param-value>GBK</param-value> 16 </init-param> 17 </filter> 18 <filter> 19 <filter-name>FilterRedirector</filter-name> 20 <filter-class>org.apache.cactus.server.FilterTestRedirector</filter-class> 21 </filter> 22 <filter-mapping> 23 <filter-name>SetCharacterEncoding</filter-name> 24 <url-pattern>/*</url-pattern> 25 </filter-mapping> 26 <filter-mapping> 27 <filter-name>FilterRedirector</filter-name> 28 <url-pattern>/FilterRedirector</url-pattern> 29 </filter-mapping> 30 <servlet> 31 <servlet-name>SpringContextServlet</servlet-name> 32 <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> 33 <load-on-startup>1</load-on-startup> 34 </servlet> 35 <servlet> 36 <servlet-name>ServletRedirector</servlet-name> 37 <servlet-class>org.apache.cactus.server.ServletTestRedirector</servlet-class> 38 </servlet> 39 <servlet> 40 <servlet-name>JspRedirector</servlet-name> 41 <jsp-file>/jspRedirector.jsp</jsp-file> 42 </servlet> 43 <servlet> 44 <servlet-name>action</servlet-name> 45 <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> 46 <init-param> 47 <param-name>config</param-name> 48 <param-value>/WEB-INF/struts-config.xml</param-value> 49 </init-param> 50 <init-param> 51 <param-name>debug</param-name> 52 <param-value>2</param-value> 53 </init-param> 54 <init-param> 55 <param-name>application</param-name> 56 <param-value>ApplicationResources</param-value> 57 </init-param> 58 <load-on-startup>2</load-on-startup> 59 </servlet> 60 <servlet-mapping> 61 <servlet-name>ServletRedirector</servlet-name> 62 <url-pattern>/ServletRedirector</url-pattern> 63 </servlet-mapping> 64 <servlet-mapping> 65 <servlet-name>JspRedirector</servlet-name> 66 <url-pattern>/JspRedirector</url-pattern> 67 </servlet-mapping> 68 <servlet-mapping> 69 <servlet-name>action</servlet-name> 70 <url-pattern>*.do</url-pattern> 71 </servlet-mapping> 72 <welcome-file-list> 73 <welcome-file>index.jsp</welcome-file> 74 </welcome-file-list> 75 <taglib> 76 <taglib-uri>/tags/struts-nested</taglib-uri> 77 <taglib-location>/WEB-INF/struts-nested.tld</taglib-location> 78 </taglib> 79 <taglib> 80 <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri> 81 <taglib-location>/WEB-INF/struts-bean.tld</taglib-location> 82 </taglib> 83 <taglib> 84 <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri> 85 <taglib-location>/WEB-INF/struts-html.tld</taglib-location> 86 </taglib> 87 <taglib> 88 <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri> 89 <taglib-location>/WEB-INF/struts-logic.tld</taglib-location> 90 </taglib> 91 <taglib> 92 <taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri> 93 <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location> 94 </taglib> 95 <taglib> 96 <taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri> 97 <taglib-location>/WEB-INF/struts-nested.tld</taglib-location> 98 </taglib> 99 </web-app> 100 |
配置文件为applicationContext-hibernate.xml,在此配置文件中,配了POJO层,商业逻辑层,DAO层,和事务管理
java代码: |
1 2 <?xml version="1.0" encoding="UTF-8"?> 3 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 4 5 <beans> 6 <!-- ========================= Start of PERSISTENCE DEFINITIONS ========================= --> 7 8 <!-- Choose the dialect that matches your "dataSource" definition --> 9 10 <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 11 <property name="driverClassName"> 12 <value>org.gjt.mm.mysql.Driver</value> 13 </property> 14 <property name="url"> 15 <value>jdbc:mysql://localhost:3306/info_web?useUnicode=true&characterEncoding=GBK</value> 16 </property> 17 <property name="username"> 18 <value>root</value> 19 </property> 20 <property name="password"> 21 <value>123456</value> 22 </property> 23 </bean> 24 25 <bean id="mySessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean"> 26 <property name="mappingResources"> 27 <list> 28 <value>infoweb/pojo/Answer.hbm.xml</value> 29 <value>infoweb/pojo/Board.hbm.xml</value> 30 <value>infoweb/pojo/Image.hbm.xml</value> 31 <value>infoweb/pojo/Info.hbm.xml</value> 32 </list> 33 </property> 34 35 <property name="hibernateProperties"> 36 <props> 37 <prop key="hibernate.dialect">net.sf.hibernate.dialect.MySQLDialect</prop> 38 <prop key="hibernate.show_sql">true</prop> 39 <prop key="hibernate.cglib.use_reflection_optimizer">true</prop> 40 </props> 41 </property> 42 43 <property name="dataSource"><ref bean="myDataSource"/></property> 44 </bean> 45 46 47 48 <!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) --> 49 <bean id="myTransactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager"> 50 <property name="sessionFactory"><ref local="mySessionFactory"/></property> 51 </bean> 52 53 54 <!-- ***** Board SERVICE ***** --> 55 <bean id="boardService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> 56 <property name="transactionManager"><ref local="myTransactionManager"/></property> 57 <property name="target"><ref local="boardServiceSpring"/></property> 58 <property name="transactionAttributes"> 59 <props> 60 <prop key="get*">PROPAGATION_REQUIRED,readOnly,-BoardException</prop> 61 <prop key="set*">PROPAGATION_REQUIRED,-BoardException</prop> 62 <prop key="modify*">PROPAGATION_REQUIRED,-BoardException</prop> 63 <prop key="remove*">PROPAGATION_REQUIRED,-BoardException</prop> 64 </props> 65 </property> 66 </bean> 67 68 <!-- board primary business object implementation --> 69 <bean id="boardServiceSpring" class="infoweb.service.BoardServiceSpringImpl"> 70 <property name="boardTreeDAO"><ref local="boardTreeDAO"/></property> 71 </bean> 72 73 74 <!-- DAO board: Hibernate implementation --> 75 <bean id="boardTreeDAO" class="infoweb.dao.BoardTreeDAOImpl"> 76 <property name="sessionFactory"><ref local="mySessionFactory"/></property> 77 </bean> 78 79 <!-- DAO info: Hibernate implementation --> 80 <bean id="infoDAO" class="infoweb.dao.InfoDAOImpl"> 81 <property name="sessionFactory"><ref local="mySessionFactory"/></property> 82 </bean> 83 </beans> 84 85 |
java代码: |
1 2 package infoweb.dao; 3 4 import java.util.List; 5 import java.util.Iterator; 6 7 import infoweb.pojo.Board; 8 9 10 import net.sf.hibernate.HibernateException; 11 import net.sf.hibernate.Query; 12 import net.sf.hibernate.Session; 13 14 import org.springframework.orm.hibernate.HibernateCallback; 15 import org.springframework.orm.hibernate.support.HibernateDaoSupport; 16 17 18 /** 19 * <p>Title: 版块分类DAOImpl</p> 20 * <p>Description: 用树型结构实现</p> 21 * <p>Copyright: Copyright (c) 2004</p> 22 * <p>Company: </p> 23 * @author 段洪杰 24 * @version 1.0 25 */ 26 27 28 public class BoardTreeDAOImpl extends HibernateDaoSupport implements 29 IBoardTreeDAO { ...} 30 31 32 /** 33 * 构造函数 34 */ 35 public BoardTreeDAOImpl() { ...} 36 super(); 37 } 38 39 40 /** 41 * 通过ID取得版块 42 * @param id String 43 * @return Board 44 */ 45 46 public Board getBoardById(String id) { ...} 47 Board board = (Board) getHibernateTemplate().load(Board.class, id); 48 return board; 49 } 50 51 52 /** 53 * 取根叶 54 * @return Iterator 55 */ 56 public Iterator getRoots() throws HibernateException { ...} 57 String queryString = 58 "select board from Board as board where board.parentId='root' order by board.id desc"; 59 List roots = getHibernateTemplate().find(queryString); 60 return roots.iterator(); 61 } 62 63 64 /** 65 * 存根叶 66 * @param board Board 67 */ 68 public void setRoot(Board board) { ...} 69 board.setParentId("root"); 70 getHibernateTemplate().save(board); 71 } 72 73 74 /** 75 * 取子叶 76 * @param parentid String 77 * @return List 78 */ 79 public Iterator getChildren(String parentid) { ...} 80 /* 81 String queryString = 82 "select board as Board where board.parent_id='parentid' order by board.id desc"; 83 List children = getHibernateTemplate().find(queryString); 84 return children; 85 */ 86 Board parent = (Board) getHibernateTemplate().load(Board.class, parentid); 87 return parent.getChildren().iterator(); 88 } 89 90 91 /** 92 * 取子叶数 93 * @param parentid String 94 * @return int 95 */ 96 97 public int getChildrenCount(String parentid) { ...} 98 /* 99 String queryString = 100 "select count(*) Board where board.parent_id='parentid' order by board.id desc"; 101 List children = getHibernateTemplate().find(queryString); 102 int count = ((Integer) children.iterator().next()).intValue(); 103 return count; 104 */ 105 Board parent = (Board) getHibernateTemplate().load(Board.class, parentid); 106 int count = parent.getChildren().size(); 107 return count; 108 } 109 110 111 /** 112 * 存子叶 113 * @param parentLeaf Leaf 114 */ 115 public void setChild(Board board, String parentid) { ...} 116 board.setParentId(parentid); 117 getHibernateTemplate().save(board); 118 } 119 120 121 /** 122 * 123 * 删除该叶和它的子叶 124 * @param board Board 125 */ 126 public void deleteBranch(Board board) { ...} 127 getHibernateTemplate().delete(board); 128 } 129 130 131 /** 132 * 根据子叶得到父叶 133 * @param child Board 134 * @return Board 135 */ 136 public Board getParentByChild(Board child) { ...} 137 String parentId = child.getParentId(); 138 Board parent = (Board) getHibernateTemplate().load(Board.class, parentId); 139 return parent; 140 } 141 142 143 /** 144 * 通过子ID得到父叶 145 * @param id String 146 * @return Board 147 */ 148 public Board getParentByChildId(String id) { ...} 149 Board child = (Board) getHibernateTemplate().load(Board.class, id); 150 Board parent = (Board) getHibernateTemplate().load(Board.class,child.getParentId()); 151 return parent; 152 } 153 } 154 155 |
java代码: |
1 2 package infoweb.service; 3 4 import java.util.List; 5 import java.util.Iterator; 6 import infoweb.dao.BoardTreeDAOImpl; 7 import infoweb.dao.IBoardTreeDAO; 8 import infoweb.pojo.Board; 9 import infoweb.exception.BoardException; 10 import net.sf.hibernate.HibernateException; 11 12 /** 13 * <p>Title: </p> 14 * <p>Description: </p> 15 * <p>Copyright: Copyright (c) 2004</p> 16 * <p>Company: </p> 17 * @author 段洪杰 18 * @version 1.0 19 */ 20 public class BoardServiceSpringImpl implements IBoardService { ...} 21 22 private IBoardTreeDAO boardTreeDAO; 23 24 public BoardServiceSpringImpl() { ...} 25 super(); 26 } 27 28 /** 29 * 取所有roots版块 30 * @return Iterator 31 */ 32 public Iterator getRoots() throws BoardException { ...} 33 Iterator roots = null; 34 try { ...} 35 roots = boardTreeDAO.getRoots(); 36 } catch (Exception ex) { 37 throw new BoardException("取ROOT版块时出错! " + ex.toString()); 38 } 39 return roots; 40 } 41 42 /** 43 * 增加Root新版块 44 * @param board Board 45 */ 46 public void setRoot(Board board) throws BoardException { ...} 47 try { ...} 48 boardTreeDAO.setRoot(board); 49 } catch (Exception ex) { 50 throw new BoardException("增加ROOT版块时出错! " + ex.toString()); 51 } 52 } 53 54 /** 55 * 删除版块 (包含下级版块) 56 * @param board Board 57 */ 58 public void removeBoard(Board board) throws BoardException { ...} 59 try { ...} 60 boardTreeDAO.deleteBranch(board); 61 } catch (Exception ex) { 62 throw new BoardException("删除版块时出错! " + ex.toString()); 63 } 64 } 65 66 /** 67 * 68 * @return IBoardTreeDAO 69 */ 70 public IBoardTreeDAO getBoardTreeDAO() { ...} 71 return boardTreeDAO; 72 } 73 74 /** 75 * 76 * @param boardTreeDAO IBoardTreeDAO 77 */ 78 public void setBoardTreeDAO(IBoardTreeDAO boardTreeDAO) { ...} 79 this.boardTreeDAO = boardTreeDAO; 80 } 81 82 } 83 84 |
java代码: |
1 2 package infoweb.web; 3 4 5 import javax.servlet.ServletContext; 6 import org.apache.struts.action.Action; 7 import org.apache.struts.action.ActionServlet; 8 import org.springframework.web.context.WebApplicationContext; 9 import org.springframework.web.context.support.WebApplicationContextUtils; 10 11 import infoweb.service.IBoardService; 12 13 14 /** 15 * <p>Title: </p> 16 * <p>Description: </p> 17 * <p>Copyright: Copyright (c) 2004</p> 18 * <p>Company: </p> 19 * @author 段洪杰 20 * @version 1.0 21 */ 22 23 public class BaseAction extends Action { ...} 24 25 private IBoardService boardService; 26 27 public void setServlet(ActionServlet actionServlet) { ...} 28 super.setServlet(actionServlet); 29 ServletContext servletContext = actionServlet.getServletContext(); 30 WebApplicationContext wac = 31 WebApplicationContextUtils.getRequiredWebApplicationContext( 32 servletContext); 33 this.boardService = (IBoardService) wac.getBean("boardService"); 34 } 35 36 protected IBoardService getBoardService() { ...} 37 return boardService; 38 } 39 40 } 41 42 |
java代码: |
1 2 package infoweb.web; 3 4 import infoweb.pojo.Board; 5 import org.apache.commons.beanutils.PropertyUtils; 6 import org.apache.struts.action.*; 7 import org.apache.log4j.Logger; 8 import javax.servlet.http.*; 9 import java.util.Iterator; 10 import java.util.Date; 11 12 /** 13 * <p>Title: </p> 14 * <p>Description: </p> 15 * <p>Copyright: Copyright (c) 2004</p> 16 * <p>Company: </p> 17 * @author 段洪杰 18 * @version 1.0 19 */ 20 21 22 public class SetBoardAction extends BaseAction { ...} 23 24 private static Logger log = Logger.getLogger(SetBoardAction.class); 25 26 public ActionForward execute(ActionMapping actionMapping, 27 ActionForm actionForm, 28 HttpServletRequest httpServletRequest, 29 HttpServletResponse httpServletResponse) throws 30 Exception { ...} 31 32 // SessionBean sessionBean = (SessionBean) httpServletRequest.getSession().getAttribute("sessionBean"); 33 BoardForm boardForm = (BoardForm) actionForm; 34 //String backURL = httpServletRequest.getHeader("Referer"); 35 /* 36 if (sessionBean==null||!sessionBean.getIsLogon()) { 37 httpServletRequest.setAttribute("message", "系统超时,或者没有登录 .返回重新登录!"); 38 httpServletRequest.setAttribute("locationFile", 39 "location='index.jsp';"); 40 return actionMapping.findForward("message"); 41 } 42 */ 43 Board board = new Board(); 44 boardForm.setCreateDate(new Date()); 45 PropertyUtils.copyProperties(board, boardForm); 46 getBoardService().setRoot(board); 47 48 httpServletRequest.setAttribute("message", "版块信息录入完成!"); 49 httpServletRequest.setAttribute("locationFile", 50 "<A HREF=/"javascript:history.back()/">返回</A>"); 51 return (actionMapping.findForward("success")); 52 } 53 54 } 55 56 |
相关文章推荐
- MyEclipse — Maven+Spring+Struts+Hibernate 整合 [学习笔记-5]
- SSH(Spring+Struts+Hibernate)学习笔记(三)Struts 2 Hello World
- 学习Struts+spring+hibernate的笔记(1)
- 学习Struts+spring+hibernate的笔记(2)
- SSH(Spring+Struts+Hibernate)学习笔记(二)Struts概览与MVC简述
- SSH(Spring+Struts+Hibernate)学习笔记(一)概览
- SSH学习笔记之关于struts-spring-hibernate整合配置问
- spring+struts2+hibernate的学习笔记
- 学习Struts+spring+Hibernate的笔记.
- Struts+spring+hibernate的笔记.
- SSH学习之——Spring、Struts和Hibernate整合开发
- Spring4第五讲学习笔记,整合Spring,Struts,Mybatis框架
- Spring学习笔记-----(Struts与Spring的结合)
- Struts 2 + Spring 2.0 + Hibernate 3.0整合笔记
- Struts 2 + Spring 2.0 + Hibernate 3.0整合笔记(转)
- Struts+Spring+Hibernate整合笔记