현재 작업이 완료된 파일의 내용 일부를 발췌한 것입니다.
물론 잘 돌아가구 있구요.
DB는 PostgreSql8.4를 사용중입니다.
혹시 보시다가 다소 내용이 부족하더라도 이해해주세요^^
1. ListDTO.java 작성
public class ListDTO {
private int firstPage;//첫페이지번호
private int lastPage;//마지막 페이지번호
private int totalCount;//총글의 개수
private int prevPage;//이전 단원의 page 시작번호
private int nextPage;//이후 단원의 page 시작번호
private int nowCount;//현재 읽은 글의개수
public int getFirstPage() {
return firstPage;
}
public void setFirstPage(int firstPage) {
this.firstPage = firstPage;
}
public int getLastPage() {
return lastPage;
}
public void setLastPage(int lastPage) {
this.lastPage = lastPage;
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public int getPrevPage() {
return prevPage;
}
public void setPrevPage(int prevPage) {
this.prevPage = prevPage;
}
public int getNextPage() {
return nextPage;
}
public void setNextPage(int nextPage) {
this.nextPage = nextPage;
}
public int getNowCount() {
return nowCount;
}
public void setNowCount(int nowCount) {
this.nowCount = nowCount;
}
}
2. Action클래스 작성(TotalBoardListAction.java)
public class TotalBoardListAction {
private List<TotalBoardDTO> totalBoardList;
private int page;
private ListDTO listDto;
private List<Integer> pagingList;
private String searchType = "";
private String searchText = "";
/**
* 비즈니스로직 메소드
* @return success or failure
* @throws Exception
*/
public String execute() throws Exception {
int tempPage = 1;
int pageCount = 10; //한페이지에 글을 몇개씩 보여줄 것인가
int limitPageCount = 0; //앞에 몇개를 제외할 것인가
int totalCount = 0; //총 데이타수
int startPage = 0; //페이징되는 번호의 시작
int endPage = 0; //페이징되는 번호의 끝
TotalBoardDAO totalBoardDao = new TotalBoardDAO();
listDto = new ListDTO();
pagingList = new ArrayList<Integer>();
/**************** 여기부터 ListDTO클래스에 셋팅하는부분 ****************/
//현재페이지가0이면 로 셋팅
if(getPage() == 0) setPage(tempPage);
//10개씩 제외
limitPageCount = (getPage() - 1) * pageCount ;
totalCount = totalBoardDao.getCount(searchText);
//글의 전체카운트
listDto.setTotalCount(totalCount);
//끝
listDto.setLastPage((totalCount - 1)/ pageCount + 1);
//리스트 하단부 페이징 시작번호
startPage = ((getPage() - 1) / pageCount ) * pageCount + 1;
//리스트 하단부 페이징 끝번호
if(startPage + 9 > listDto.getLastPage()) {
endPage = listDto.getLastPage();
}else{
endPage = startPage + 9;
}
//이전
if(getPage() <= pageCount ) {
listDto.setPrevPage(1);
}else{
listDto.setPrevPage(startPage - pageCount );
}
//다음
if(startPage + pageCount > listDto.getLastPage()) {
listDto.setNextPage(listDto.getLastPage());
}else{
listDto.setNextPage(startPage + pageCount );
}
//리스트 하단부 페이징 번호를 저장
for(int i = startPage; i <= endPage; i++){
pagingList.add(i);
}
/**********************************************************************/
totalBoardList = new ArrayList<TotalBoardDTO>();
totalBoardList.addAll(totalBoardDao.getList(pageCount, limitPageCount, searchText));
return "success";
}
public List<TotalBoardDTO> getTotalBoardList() {
return totalBoardList;
}
public void setTotalBoardList(List<TotalBoardDTO> totalBoardList) {
this.totalBoardList = totalBoardList;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public ListDTO getlistDto() {
return listDto;
}
public void setlistDto(ListDTO listDto) {
this.listDto = listDto;
}
public List<Integer> getPagingList() {
return pagingList;
}
public void setPagingList(List<Integer> pagingList) {
this.pagingList = pagingList;
}
public ListDTO getListDto() {
return listDto;
}
public void setListDto(ListDTO listDto) {
this.listDto = listDto;
}
public String getSearchType() {
return searchType;
}
public void setSearchType(String searchType) {
this.searchType = searchType;
}
public String getSearchText() {
return searchText;
}
public void setSearchText(String searchText) {
this.searchText = searchText;
}
}
3. totalBoardList.jsp 작성
......
......
<tr>
<td colspan="4" align="center">
<s:url id="firstPageLink" action="totalBoardList">
<s:param name="page"><s:property value="listDto.firstPage"/></s:param>
<s:param name="searchType"><s:property value="searchType"/></s:param>
<s:param name="searchText"><s:property value="searchText"/></s:param>
</s:url>
<s:a href="%{firstPageLink}">처음</s:a>
<s:url id="prevPageLink" action="totalBoardList">
<s:param name="page"><s:property value="listDto.prevPage"/></s:param>
<s:param name="searchType"><s:property value="searchType"/></s:param>
<s:param name="searchText"><s:property value="searchText"/></s:param>
</s:url>
<s:a href="%{prevPageLink}">이전</s:a>
<s:subset source="pagingList">
<s:iterator>
<s:url id="nowPageLink" action="totalBoardList">
<s:param name="page"><s:property/></s:param>
<s:param name="searchType"><s:property value="searchType"/></s:param>
<s:param name="searchText"><s:property value="searchText"/></s:param>
</s:url>
<s:a href="%{nowPageLink}"><s:property/></s:a>
</s:iterator>
</s:subset>
<s:url id="nextPageLink" action="totalBoardList">
<s:param name="page"><s:property value="listDto.nextPage"/></s:param>
<s:param name="searchType"><s:property value="searchType"/></s:param>
<s:param name="searchText"><s:property value="searchText"/></s:param>
</s:url>
<s:a href="%{nextPageLink}">다음</s:a>
<s:url id="lastPageLink" action="totalBoardList">
<s:param name="page"><s:property value="listDto.lastPage"/></s:param>
<s:param name="searchType"><s:property value="searchType"/></s:param>
<s:param name="searchText"><s:property value="searchText"/></s:param>
</s:url>
<s:a href="%{lastPageLink}">마지막</s:a>
</td>
</tr>
......
......
이로서 jsp의 코딩이 아주 간결해졌다.
더 좋은 방법도 있겠지만 난 이 방법이 좋다..ㅎㅎ;;
'프레임워크 > Struts2' 카테고리의 다른 글
struts.xml에서의 redirect-action, redirectAction (1) | 2009.11.26 |
---|---|
struts2 폼데이타 간단처리(전송) (0) | 2009.11.23 |
interceptor에 대해 (0) | 2009.10.15 |
Struts2에서의 파일업로드 (0) | 2009.10.14 |
Strtus2 설정 - struts.xml (0) | 2009.10.14 |