学习Struts spring hibernate的笔记

来源:百度文库 编辑:神马文学网 时间:2024/10/01 09:00:12
学习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                                                                              infoweb/pojo/Answer.hbm.xml                   infoweb/pojo/Board.hbm.xml                   infoweb/pojo/Image.hbm.xml                   infoweb/pojo/Info.hbm.xml                                                                                         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;       /**     * 

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"));        }       }