이 메서드는 Spring MVC 기반의 컨트롤러에서 사용되는 전형적인 리스트 조회 및 페이징 처리 로직입니다.
다음은 이 메서드에 대한 한 줄 요약과 상세 설명입니다.
✅ 한 줄 요약
/egovSampleList.do 요청이 들어오면, 검색 조건에 따라 데이터를 조회하고 페이징 정보를 포함해 화면(JSP)에 전달하는 컨트롤러 메서드입니다.
📘 전체 구조
@RequestMapping(value = "/egovSampleList.do")
public String selectSampleList(@ModelAttribute("searchVO") SampleDefaultVO searchVO, ModelMap model) throws Exception {
...
return "sample/egovSampleList";
}
- URL 매핑: /egovSampleList.do로 들어오는 GET 또는 POST 요청을 처리.
- @ModelAttribute("searchVO"): 검색 조건이나 페이지 정보를 담고 있는 SampleDefaultVO를 자동 바인딩하여 뷰에도 전달.
- ModelMap: View(JSP)에 데이터를 전달하기 위해 사용.
- 리턴값: /WEB-INF/jsp/egovframework/example/sample/egovSampleList.jsp 로 해석됨.
🔍 상세 처리 순서
1. 페이지 정보 설정
searchVO.setPageUnit(propertiesService.getInt("pageUnit"));
searchVO.setPageSize(propertiesService.getInt("pageSize"));
- 설정 파일(*.properties)에서 pageUnit, pageSize 값을 가져와서 searchVO에 설정.
2. 페이징 정보 객체 생성 및 설정
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(searchVO.getPageIndex());
paginationInfo.setRecordCountPerPage(searchVO.getPageUnit());
paginationInfo.setPageSize(searchVO.getPageSize());
searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
searchVO.setLastIndex(paginationInfo.getLastRecordIndex());
searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
- PaginationInfo는 EgovFramework에서 제공하는 페이징 유틸 클래스입니다.
- 현재 페이지 번호, 페이지 당 게시물 수, 페이지 사이즈 등을 설정.
- 그 정보를 searchVO에 설정하여 DAO에서 사용할 수 있게 함 (예: LIMIT, OFFSET).
3. 데이터 목록 조회
List<?> sampleList = sampleService.selectSampleList(searchVO);
model.addAttribute("resultList", sampleList);
- DB에서 검색 조건(searchVO)을 기준으로 데이터를 조회함.
- 조회 결과를 resultList라는 이름으로 JSP에 전달.
4. 전체 데이터 수 조회 및 페이징 처리
int totCnt = sampleService.selectSampleListTotCnt(searchVO);
paginationInfo.setTotalRecordCount(totCnt);
model.addAttribute("paginationInfo", paginationInfo);
- 전체 게시물 수를 조회하여 paginationInfo에 설정.
- 뷰(JSP)에서 페이지 번호 네비게이션을 출력하기 위해 필요.
5. View 이름 반환
return "sample/egovSampleList";
- 이 이름은 뷰 리졸버에 의해 JSP 경로로 매핑됩니다.
- 예: /WEB-INF/jsp/egovframework/example/sample/egovSampleList.jsp
📦 관련 구성 요소 요약
구성 요소 | 설명 |
---|---|
@RequestMapping | 요청 URL과 메서드를 매핑 |
@ModelAttribute | 폼 데이터 바인딩 + 뷰에 전달 |
SampleDefaultVO | 검색 조건, 페이지 관련 VO |
PaginationInfo | 페이지 처리 유틸 클래스 |
sampleService | 비즈니스 로직(Service Layer) |
model.addAttribute | JSP로 데이터 전달 |
return "sample/egovSampleList" | 뷰 이름 반환 |
✅ 화면(JSP)에서는 이렇게 사용됨
<c:forEach var="item" items="${resultList}">
<tr>
<td>${item.title}</td>
<td>${item.writer}</td>
</tr>
</c:forEach>
<ui:pagination paginationInfo="${paginationInfo}" type="image"/>
나의 말:
설정 파일(*.properties) 위치는?
ChatGPT의 말:
Spring에서 설정 파일(*.properties)의 위치는 보통 contextConfigLocation 또는 PropertyPlaceholderConfigurer, @PropertySource 등을 통해 설정됩니다.
🔍 이 프로젝트에서는 web.xml을 보면 다음 설정이 있습니다:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:egovframework/spring/context-*.xml</param-value>
</context-param>
이 설정은 다음 경로의 스프링 설정 파일들을 로드합니다:
/src/main/resources/egovframework/spring/context-*.xml
🔧 그리고 이 설정 파일들 중 context-properties.xml 또는 context-common.xml 에서 다음과 같은 bean을 통해 .properties 파일을 로드하는 설정이 있을 수 있습니다:
<bean id="propertiesService" class="egovframework.rte.fdl.property.impl.EgovPropertyServiceImpl" >
<property name="properties">
<bean class="egovframework.rte.fdl.property.impl.EgovPropertyLoader">
<property name="locations">
<list>
<value>classpath:/egovframework/egovProps/globals.properties</value>
</list>
</property>
</bean>
</property>
</bean>
✅ 결론
propertiesService.getInt("pageUnit") 와 같은 설정은 대부분 아래 경로의 파일에서 관리됩니다:
📁 src/main/resources/egovframework/egovProps/globals.properties
📝 예시: globals.properties
pageUnit=10
pageSize=5
이런 식으로 설정되어 있을 것입니다.
필요하면 이 설정 파일을 직접 생성하거나 수정해서 페이지 수, 경로, 업로드 용량 등의 전역 설정을 관리할 수 있습니다.
전자정부 프레임워크 3.10 - context-properties.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
<bean name="propertiesService" class="egovframework.rte.fdl.property.impl.EgovPropertyServiceImpl" destroy-method="destroy">
<property name="properties">
<map>
<entry key="pageUnit" value="10"/>
<entry key="pageSize" value="10"/>
</map>
</property>
</bean>
</beans>
'전자정부 프레임워크 공부' 카테고리의 다른 글
전자정부 프레임워크 3.10 게시판 예제 - Mysql 연동으로 변경 1 (0) | 2025.05.19 |
---|---|
전자정부 프레임워크 3.10 - sampleService.selectSampleList (0) | 2025.05.19 |
전자정부 프레임워크 3.10 - index.jsp (0) | 2025.05.19 |
전자정부프레임워크(eGovFrame)의 web.xml 설정 (0) | 2025.05.19 |
게시판 페이지네이션 기능 구현 [전자정부 프레임워크 공부] (0) | 2025.05.18 |