(快刀浪子原创)下面是我学习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 |
我的整个web.xml象这样:
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 |
2.spring配置
配置文件为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 |
3.做DAO代码,
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
154
31 32 /** 33 * 构造函数 34 */ 35 public BoardTreeDAOImpl ( ) {
...}
36 super
(
);
38
37 } 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
);
50
48 return board; 49 } 51 52 /** 53 * 取根叶 54 * @return Iterator 55 */ 56 public Iterator getRoots ( ) throws HibernateException {
...}
57
String queryString =
62
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 } 63 64 /** 65 * 存根叶 66 * @param board Board 67 */ 68 public void setRoot (Board board ) {
...}
69 board.
setParentId
("root"
);
72
70 getHibernateTemplate ( ). save (board ); 71 } 73 74 /** 75 * 取子叶 76 * @param parentid String 77 * @return List 78 */ 79 public Iterator getChildren ( String parentid ) {
...}
80
/*
89
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 } 90 91 /** 92 * 取子叶数 93 * @param parentid String 94 * @return int 95 */ 96 97 public int getChildrenCount ( String parentid ) {
...}
98
/*
109
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 } 110 111 /** 112 * 存子叶 113 * @param parentLeaf Leaf 114 */ 115 public void setChild (Board board, String parentid ) {
...}
116 board.
setParentId
(parentid
);
119
117 getHibernateTemplate ( ). save (board ); 118 } 120 121 /** 122 * 123 * 删除该叶和它的子叶 124 * @param board Board 125 */ 126 public void deleteBranch (Board board ) {
...}
127 getHibernateTemplate
(
).
delete
(board
);
129
128 } 130 131 /** 132 * 根据子叶得到父叶 133 * @param child Board 134 * @return Board 135 */ 136 public Board getParentByChild (Board child ) {
...}
137
String parentId = child.
getParentId
(
);
141
138 Board parent = (Board ) getHibernateTemplate ( ). load (Board. class, parentId ); 139 return parent; 140 } 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
);
153
}
150 Board parent = (Board ) getHibernateTemplate ( ). load (Board. class,child. getParentId ( ) ); 151 return parent; 152 } 155 |
4.做service层代码
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
83
22 private IBoardTreeDAO boardTreeDAO; 23 24 public BoardServiceSpringImpl ( ) {
...}
25 super
(
);
27
26 } 28 /** 29 * 取所有roots版块 30 * @return Iterator 31 */ 32 public Iterator getRoots ( ) throws BoardException {
...}
33
Iterator roots =
null;
41
34 try {
...}
35 roots = boardTreeDAO.
getRoots
(
);
39
return roots;
36 } catch ( Exception ex ) { 37 throw new BoardException ("取ROOT版块时出错! " + ex. toString ( ) ); 38 } 40 } 42 /** 43 * 增加Root新版块 44 * @param board Board 45 */ 46 public void setRoot (Board board ) throws BoardException {
...}
47
try
{
53
...}
48 boardTreeDAO.
setRoot
(board
);
52
}
49 } catch ( Exception ex ) { 50 throw new BoardException ("增加ROOT版块时出错! " + ex. toString ( ) ); 51 } 54 /** 55 * 删除版块 (包含下级版块) 56 * @param board Board 57 */ 58 public void removeBoard (Board board ) throws BoardException {
...}
59
try
{
65
...}
60 boardTreeDAO.
deleteBranch
(board
);
64
}
61 } catch ( Exception ex ) { 62 throw new BoardException ("删除版块时出错! " + ex. toString ( ) ); 63 } 66 /** 67 * 68 * @return IBoardTreeDAO 69 */ 70 public IBoardTreeDAO getBoardTreeDAO ( ) {
...}
71
return boardTreeDAO;
73
72 } 74 /** 75 * 76 * @param boardTreeDAO IBoardTreeDAO 77 */ 78 public void setBoardTreeDAO (IBoardTreeDAO boardTreeDAO ) {
...}
79 this.
boardTreeDAO = boardTreeDAO;
81
80 } 82 } 84 |
5.做ACTION的父类
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
41
25 private IBoardService boardService; 26 27 public void setServlet (ActionServlet actionServlet ) {
...}
28 super.
setServlet
(actionServlet
);
35
29 ServletContext servletContext = actionServlet. getServletContext ( ); 30 WebApplicationContext wac = 31 WebApplicationContextUtils. getRequiredWebApplicationContext ( 32 servletContext ); 33 this. boardService = (IBoardService ) wac. getBean ("boardService" ); 34 } 36 protected IBoardService getBoardService ( ) {
...}
37
return boardService;
39
38 } 40 } 42 |
6.做action类
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
55
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
53
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 } 54 } 56 |
学习中ing 编程小语