KehuiCMS文档-: 学习Struts spring hibernate的笔记 -可慧...

来源:百度文库 编辑:神马文学网 时间:2024/04/27 19:02:01
(快刀浪子原创)下面是我学习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"));
}
}