学习Struts spring hibernate的笔记
来源:百度文库 编辑:神马文学网 时间:2024/10/01 12:23:24
学习Struts+spring+hibernate的笔记.
1.WEB.XML的配置:
首先在web.xml中加入:
代码
SpringContextServlet org.springframework.web.context.ContextLoaderServlet 1
我的整个web.xml象这样:
代码
info_web contextConfigLocation /WEB-INF/applicationContext-hibernate.xml SetCharacterEncoding iclass.util.SetEncodingFilter encoding GBK FilterRedirector org.apache.cactus.server.FilterTestRedirector SetCharacterEncoding /* FilterRedirector /FilterRedirector SpringContextServlet org.springframework.web.context.ContextLoaderServlet 1 ServletRedirector org.apache.cactus.server.ServletTestRedirector JspRedirector /jspRedirector.jsp action org.apache.struts.action.ActionServlet config /WEB-INF/struts-config.xml debug 2 application ApplicationResources 2 ServletRedirector /ServletRedirector JspRedirector /JspRedirector action *.do index.jsp /tags/struts-nested /WEB-INF/struts-nested.tld /WEB-INF/struts-bean.tld /WEB-INF/struts-bean.tld /WEB-INF/struts-html.tld /WEB-INF/struts-html.tld /WEB-INF/struts-logic.tld /WEB-INF/struts-logic.tld /WEB-INF/struts-tiles.tld /WEB-INF/struts-tiles.tld /WEB-INF/struts-nested.tld /WEB-INF/struts-nested.tld
2.spring配置
配置文件为applicationContext-hibernate.xml,在此配置文件中,配了POJO层,商业逻辑层,DAO层,和事务管理
代码
org.gjt.mm.mysql.Driver jdbc:mysql://localhost:3306/info_web?useUnicode=true&characterEncoding=GBK root 123456 net.sf.hibernate.dialect.MySQLDialect true true PROPAGATION_REQUIRED,readOnly,-BoardException PROPAGATION_REQUIRED,-BoardException PROPAGATION_REQUIRED,-BoardException PROPAGATION_REQUIRED,-BoardException
3.做DAO代码,
代码
package infoweb.dao; import java.util.List; import java.util.Iterator; import infoweb.pojo.Board; import net.sf.hibernate.HibernateException; import net.sf.hibernate.Query; import net.sf.hibernate.Session; import org.springframework.orm.hibernate.HibernateCallback; import org.springframework.orm.hibernate.support.HibernateDaoSupport; /** *
4.做service层代码
代码
package infoweb.service; import java.util.List; import java.util.Iterator; import infoweb.dao.BoardTreeDAOImpl; import infoweb.dao.IBoardTreeDAO; import infoweb.pojo.Board; import infoweb.exception.BoardException; import net.sf.hibernate.HibernateException; /** *
5.做ACTION的父类
代码
package infoweb.web; import javax.servlet.ServletContext; import org.apache.struts.action.Action; import org.apache.struts.action.ActionServlet; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import infoweb.service.IBoardService; /** *
6.做action类
代码
package infoweb.web; import infoweb.pojo.Board; import org.apache.commons.beanutils.PropertyUtils; import org.apache.struts.action.*; import org.apache.log4j.Logger; import javax.servlet.http.*; import java.util.Iterator; import java.util.Date; /** *
1.WEB.XML的配置:
首先在web.xml中加入:
代码
我的整个web.xml象这样:
代码
2.spring配置
配置文件为applicationContext-hibernate.xml,在此配置文件中,配了POJO层,商业逻辑层,DAO层,和事务管理
代码
3.做DAO代码,
代码
package infoweb.dao; import java.util.List; import java.util.Iterator; import infoweb.pojo.Board; import net.sf.hibernate.HibernateException; import net.sf.hibernate.Query; import net.sf.hibernate.Session; import org.springframework.orm.hibernate.HibernateCallback; import org.springframework.orm.hibernate.support.HibernateDaoSupport; /** *
Title: 版块分类DAOImpl
*Description: 用树型结构实现
*Copyright: Copyright (c) 2004
*Company:
* @author 段洪杰 * @version 1.0 */ public class BoardTreeDAOImpl extends HibernateDaoSupport implements IBoardTreeDAO { /** * 构造函数 */ public BoardTreeDAOImpl() { super(); } /** * 通过ID取得版块 * @param id String * @return Board */ public Board getBoardById(String id) { Board board = (Board) getHibernateTemplate().load(Board.class, id); return board; } /** * 取根叶 * @return Iterator */ public Iterator getRoots() throws HibernateException { String queryString = "select board from Board as board where board.parentId=‘root‘ order by board.id desc"; List roots = getHibernateTemplate().find(queryString); return roots.iterator(); } /** * 存根叶 * @param board Board */ public void setRoot(Board board) { board.setParentId("root"); getHibernateTemplate().save(board); } /** * 取子叶 * @param parentid String * @return List */ public Iterator getChildren(String parentid) { /* String queryString = "select board as Board where board.parent_id=‘parentid‘ order by board.id desc"; List children = getHibernateTemplate().find(queryString); return children; */ Board parent = (Board) getHibernateTemplate().load(Board.class, parentid); return parent.getChildren().iterator(); } /** * 取子叶数 * @param parentid String * @return int */ public int getChildrenCount(String parentid) { /* String queryString = "select count(*) Board where board.parent_id=‘parentid‘ order by board.id desc"; List children = getHibernateTemplate().find(queryString); int count = ((Integer) children.iterator().next()).intValue(); return count; */ Board parent = (Board) getHibernateTemplate().load(Board.class, parentid); int count = parent.getChildren().size(); return count; } /** * 存子叶 * @param parentLeaf Leaf */ public void setChild(Board board, String parentid) { board.setParentId(parentid); getHibernateTemplate().save(board); } /** * * 删除该叶和它的子叶 * @param board Board */ public void deleteBranch(Board board) { getHibernateTemplate().delete(board); } /** * 根据子叶得到父叶 * @param child Board * @return Board */ public Board getParentByChild(Board child) { String parentId = child.getParentId(); Board parent = (Board) getHibernateTemplate().load(Board.class, parentId); return parent; } /** * 通过子ID得到父叶 * @param id String * @return Board */ public Board getParentByChildId(String id) { Board child = (Board) getHibernateTemplate().load(Board.class, id); Board parent = (Board) getHibernateTemplate().load(Board.class,child.getParentId()); return parent; } }4.做service层代码
代码
package infoweb.service; import java.util.List; import java.util.Iterator; import infoweb.dao.BoardTreeDAOImpl; import infoweb.dao.IBoardTreeDAO; import infoweb.pojo.Board; import infoweb.exception.BoardException; import net.sf.hibernate.HibernateException; /** *
Title:
*Description:
*Copyright: Copyright (c) 2004
*Company:
* @author 段洪杰 * @version 1.0 */ public class BoardServiceSpringImpl implements IBoardService { private IBoardTreeDAO boardTreeDAO; public BoardServiceSpringImpl() { super(); } /** * 取所有roots版块 * @return Iterator */ public Iterator getRoots() throws BoardException { Iterator roots = null; try { roots = boardTreeDAO.getRoots(); } catch (Exception ex) { throw new BoardException("取ROOT版块时出错! " + ex.toString()); } return roots; } /** * 增加Root新版块 * @param board Board */ public void setRoot(Board board) throws BoardException { try { boardTreeDAO.setRoot(board); } catch (Exception ex) { throw new BoardException("增加ROOT版块时出错! " + ex.toString()); } } /** * 删除版块 (包含下级版块) * @param board Board */ public void removeBoard(Board board) throws BoardException { try { boardTreeDAO.deleteBranch(board); } catch (Exception ex) { throw new BoardException("删除版块时出错! " + ex.toString()); } } /** * * @return IBoardTreeDAO */ public IBoardTreeDAO getBoardTreeDAO() { return boardTreeDAO; } /** * * @param boardTreeDAO IBoardTreeDAO */ public void setBoardTreeDAO(IBoardTreeDAO boardTreeDAO) { this.boardTreeDAO = boardTreeDAO; } }5.做ACTION的父类
代码
package infoweb.web; import javax.servlet.ServletContext; import org.apache.struts.action.Action; import org.apache.struts.action.ActionServlet; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import infoweb.service.IBoardService; /** *
Title:
*Description:
*Copyright: Copyright (c) 2004
*Company:
* @author 段洪杰 * @version 1.0 */ public class BaseAction extends Action { private IBoardService boardService; public void setServlet(ActionServlet actionServlet) { super.setServlet(actionServlet); ServletContext servletContext = actionServlet.getServletContext(); WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext( servletContext); this.boardService = (IBoardService) wac.getBean("boardService"); } protected IBoardService getBoardService() { return boardService; } }6.做action类
代码
package infoweb.web; import infoweb.pojo.Board; import org.apache.commons.beanutils.PropertyUtils; import org.apache.struts.action.*; import org.apache.log4j.Logger; import javax.servlet.http.*; import java.util.Iterator; import java.util.Date; /** *
Title:
*Description:
*Copyright: Copyright (c) 2004
*Company:
* @author 段洪杰 * @version 1.0 */ public class SetBoardAction extends BaseAction { private static Logger log = Logger.getLogger(SetBoardAction.class); public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { // SessionBean sessionBean = (SessionBean) httpServletRequest.getSession().getAttribute("sessionBean"); BoardForm boardForm = (BoardForm) actionForm; //String backURL = httpServletRequest.getHeader("Referer"); /* if (sessionBean==null||!sessionBean.getIsLogon()) { httpServletRequest.setAttribute("message", "系统超时,或者没有登录 .返回重新登录!"); httpServletRequest.setAttribute("locationFile", "location=‘index.jsp‘;"); return actionMapping.findForward("message"); } */ Board board = new Board(); boardForm.setCreateDate(new Date()); PropertyUtils.copyProperties(board, boardForm); getBoardService().setRoot(board); httpServletRequest.setAttribute("message", "版块信息录入完成!"); httpServletRequest.setAttribute("locationFile", "返回"); return (actionMapping.findForward("success")); } }