hibenate 와 struts 2 를 사용 하여 페이지 기능 을 실현 하 는 예제
1.DAO 층 인터페이스의 디자인 은 PersonDAO 인 터 페 이 스 를 정의 하고 그 안에 두 가지 방법 을 설명 했다.
public interface PersonDAO
{
public List<Person> queryByPage(String hql, int offset, int pageSize);
public int getAllRowCount(String hql);
}
2.DAO 층 인터페이스의 실현 류 PersonDAOImpl 류 는 그 두 가지 방법 을 실현 한다.
public class PersonDAOImpl implements PersonDAO
{
/**
* hql
*/
@Override
public int getAllRowCount(String hql)
{
Session session = HibernateUtil.openSession();
Transaction tx = null;
int allRows = 0;
try
{
tx = session.beginTransaction();
Query query = session.createQuery(hql);
allRows = query.list().size();
tx.commit();
}
catch (Exception e)
{
if(tx != null)
{
tx.rollback();
}
e.printStackTrace();
}
finally
{
HibernateUtil.closeSession(session);
}
return allRows;
}
/**
* hibernate ,
*/
@SuppressWarnings("unchecked")
@Override
public List<Person> queryByPage(String hql, int offset, int pageSize)
{
Session session = HibernateUtil.openSession();
Transaction tx = null;
List<Person> list = null;
try
{
tx = session.beginTransaction();
Query query = session.createQuery(hql).setFirstResult(offset).setMaxResults(pageSize);
list = query.list();
tx.commit();
}
catch (Exception e)
{
if(tx != null)
{
tx.rollback();
}
e.printStackTrace();
}
finally
{
HibernateUtil.closeSession(session);
}
return list;
}
}
3.페이지 마다 표시 되 는 내용 을 저장 하기 위해 페이지 빈(페이지 마다 필요 한 내용 을 이 페이지 빈 에 저장)을 정의 합 니 다.
public class PageBean
{
private List<Person> list; // hql list
private int allRows; //
private int totalPage; //
private int currentPage; //
public List<Person> getList()
{
return list;
}
public void setList(List<Person> list)
{
this.list = list;
}
public int getAllRows()
{
return allRows;
}
public void setAllRows(int allRows)
{
this.allRows = allRows;
}
public int getTotalPage()
{
return totalPage;
}
public void setTotalPage(int totalPage)
{
this.totalPage = totalPage;
}
public int getCurrentPage()
{
return currentPage;
}
public void setCurrentPage(int currentPage)
{
this.currentPage = currentPage;
}
/**
*
* @param pageSize
* @param allRows
* @return
*/
public int getTotalPages(int pageSize, int allRows)
{
int totalPage = (allRows % pageSize == 0)? (allRows / pageSize): (allRows / pageSize) + 1;
return totalPage;
}
/**
*
* @param pageSize
* @param currentPage
* @return
*/
public int getCurrentPageOffset(int pageSize, int currentPage)
{
int offset = pageSize * (currentPage - 1);
return offset;
}
/**
* , 0 ,
* @param page
* @return
*/
public int getCurPage(int page)
{
int currentPage = (page == 0)? 1: page;
return currentPage;
}
}
4.Service 계층 인터페이스 디자인,PersonService 인 터 페 이 스 를 정의 합 니 다.그 안에 하나의 방법 을 설명 하고 PageBean 을 되 돌려 줍 니 다.
public interface PersonService
{
public PageBean getPageBean(int pageSize, int page);
}
5.Service 계층 인터페이스 구현 클래스 PersonServiceImpl 클래스,유일한 방법:
public class PersonServiceImpl implements PersonService
{
private PersonDAO personDAO = new PersonDAOImpl();
/**
* pageSize
* page
*/
@Override
public PageBean getPageBean(int pageSize, int page)
{
PageBean pageBean = new PageBean();
String hql = "from Person";
int allRows = personDAO.getAllRowCount(hql);
int totalPage = pageBean.getTotalPages(pageSize, allRows);
int currentPage = pageBean.getCurPage(page);
int offset = pageBean.getCurrentPageOffset(pageSize, currentPage);
List<Person> list = personDAO.queryByPage(hql, offset, pageSize);
pageBean.setList(list);
pageBean.setAllRows(allRows);
pageBean.setCurrentPage(currentPage);
pageBean.setTotalPage(totalPage);
return pageBean;
}
}
6.Action 계층 디자인,PersonAction 정의:
public class PersonAction extends ActionSupport
{
private PersonService personService = new PersonServiceImpl();
private int page;
public int getPage()
{
return page;
}
public void setPage(int page)
{
this.page = page;
}
@Override
public String execute() throws Exception
{
// 5 ,page
PageBean pageBean = personService.getPageBean(5, page);
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("pageBean", pageBean);
return SUCCESS;
}
}
7.보조 류 디자인,HibernateUtil:
public class HibernateUtil
{
private static SessionFactory sessionFactory;
static
{
sessionFactory = new Configuration().configure().buildSessionFactory();
}
public static Session openSession()
{
Session session = sessionFactory.openSession();
return session;
}
public static void closeSession(Session session)
{
if(session != null)
{
session.close();
}
}
}
8.마지막 으로 페이지 를 나 누 어 pagePerson.jsp 를 표시 합 니 다.
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'pagePerson.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript">
function validate()
{
var page = document.getElementsByName("page")[0].value;
if(page > <s:property value="#request.pageBean.totalPage"/>)
{
alert(" , !");
window.document.location.href = "personAction";
return false;
}
return true;
}
</script>
</head>
<body>
<h1><font color="blue"> </font></h1><hr>
<table border="1" align="center" bordercolor="yellow" width="50%">
<tr>
<th> </th>
<th> </th>
<th> </th>
</tr>
<s:iterator value="#request.pageBean.list" id="person">
<tr>
<th><s:property value="#person.id"/></th>
<th><s:property value="#person.name"/></th>
<th><s:property value="#person.age"/></th>
</tr>
</s:iterator>
</table>
<center>
<font size="5"> <font color="red"><s:property value="#request.pageBean.totalPage"/></font> </font>
<font size="5"> <font color="red"><s:property value="#request.pageBean.allRows"/></font> </font><br><br>
<s:if test="#request.pageBean.currentPage == 1">
</s:if>
<s:else>
<a href="personAction.action"> </a>
<a href="personAction.action?page=<s:property value="#request.pageBean.currentPage - 1"/>"> </a>
</s:else>
<s:if test="#request.pageBean.currentPage != #request.pageBean.totalPage">
<a href="personAction.action?page=<s:property value="#request.pageBean.currentPage + 1"/>"> </a>
<a href="personAction.action?page=<s:property value="#request.pageBean.totalPage"/>"> </a>
</s:if>
<s:else>
</s:else>
</center><br>
<center>
<form action="personAction" onsubmit="return validate();">
<font size="4"> </font>
<input type="text" size="2" name="page">
<input type="submit" value=" ">
</form>
</center>
</body>
</html>
이로써 hibenate+struts 2 는 웹 페이지 분할 기능 코드 부분 을 실현 하 는 것 이 끝 났 습 니 다.hibenate 와 struts 의 프로필 은 열거 되 지 않 습 니 다.그것 은 중요 한 것 이 아 닙 니 다!페이지 효 과 는 다음 과 같 습 니 다:
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
apache struts2 취약점 검증이번에는 보안 캠프의 과제였던 apache struts2의 취약성에 대해 실제로 손을 움직여 실행해 보고 싶습니다. 환경 VirtualBox에서 브리지 어댑터 사용 호스트:macOS 10.12 게스트:ubuntu 1...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.