-
Spring_파일게시글_페이징처리Spring 2022. 6. 10. 08:56
<페이징처리>
1) web.xml
: .bo처리하는 <servlet>과 <servlet-mapping>을 만든다.
<servlet> <servlet-name>boardServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/appServlet/board-context.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>boardServlet</sevlet-name> <url-pattern>*.bo</url-patter> </servlet-mapping>
2) board-context.xml
: 1번에서 연결한 board-context.xml을 생성한다.
: mvc, bean 선택 후 생성(최신버전)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd"> <!-- 어노테이션 설정방식을 사용함 --> <mvc:annotation-driven/> <mvc:resources location="/resources/" mapping="/resources/**"/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/board/"/> <property name="suffix" value=".jsp"/> </bean> <!-- 빈으로 등록될 준비를 마친 클래스들을 스캔하여 빈에 등록 --> <context:component-scan base-package="com.kh.spring"/> </beans>
xml 파일에 설정 후 base package를 적어주면 base package 기준으로 클래스들을 스캔하여 빈으로 등록한다.
base package에 여러개의 패키지를 쓸 수 있다.3) menubar.jsp
: a태그와 연결될 "blist.bo"처리
<div class="menu"><a href="blist.bo">게시판</a></div>
3-1) BoardController 생성
@Controller public class BoardController { @Autowired private BoardService bService; @RequestMapping("blist.bo") public ModelAndView boardList(@RequestParam(value="page", required=false) Integer page, ModelAndView mv){ //페이징 처리 int currentPage = 1; if(page != null){//페이지가 존재하면 1페이지 currentPage = page; } int listCount = bService.getListCount(); } }
3-2) BoardService(interface) 생성
public interface BoardService { int getListCount(); }
3-3) BoardServiceImpl 생성
@Service("bService") public class BoardServiceImpl implements BoardService{ @Autowired private BoardDAO bDAO; @Autowired private SqlSessionTemplate sqlSession; @Override public int getListCount() { return bDAO.getListCount(sqlSession); } }
3-4) BoardDAO 생성
@Repository("bDAO") public class BoardDAO { public int getListCount(SqlSessionTemplate sqlSession) { return sqlSession.selectOne("boardMapper.getListCount"); } }
4) board-mapping 생성
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="boardMapper"> <select id="getListCount" resultType="_int"> select count(*) from board where board_status='Y' </select> </mapper>
5) mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <setting name="jdbcTypeForNull" value="NULL"/> </settings> <typeAliases> <typeAlias type="com.kh.spring.board.model.vo.Board" alias="Board"/> </typeAliases> <mappers> <mapper resource="mappers/board-mapper.xml"/> </mappers> </configuration>
4번의 board-mapper과 vo.Board와 연결해준다.
<페이징처리-Pagination>
6) BoardController
PageInfo pi = Pagination.getPageInfo(currentPAge, listCount); ArrayList<Board> list = bService.getBoardList(pi);
위에 public ModelAndView boardList 메소드에 추가해준다.
addObject(key, value) : 데이터 추가
setViewName : 페이지 이동값 (페이지 세팅)
return 값은 ModelAndViewe(위에는 mv)로 돌려준다.
(vo.파일도 다 생성한다.)
7) BoardService(interface)
Array<Board> getBoardList(PageInfo pi);
8) BoardServiceImpl
@Override public ArrayList<Board> getBoardList(PageInfo pi){ return bDAO.getBoardList(sqlSession, pi); }
9) BoardDAO
public ArrayList<Board> getBoardList(SqlSessionTemplate sqlSession, PageInfo pi) { int offset = (pi.getCurrentPage()-1) * pi.getBoardLimit(); RowBounds rowBounds = new RowBounds(offset, pi.getBoardLimit()); return (ArrayList)sqlSession.selectList("boardMapper.getBoardList", null, rowBounds); }
10) board-mapper.xml
<select id="getBoardList" resultMap="boardResultSet"> select * from board join member on(board_writer = id) where board_status = 'Y' order by board_id desc </select> <resultMap type="Board" id="boardResultSet"> <id column="BOARD_ID" property="boardId"/> <result column="BOARD_TITLE" property="boardTitle"/> <result column="BOARD_WRITER" property="boardWriter"/> <result column="NICKNAME" property="nickName"/> <result column="BOARD_CONTENT" property="boardContent"/> <result column="ORIGINAL_FILENAME" property="originalFileName"/> <result column="RENAME_FILENAME" property="renameFileName"/> <result column="BOARD_COUNT" property="boardCount"/> <result column="BOARD_CREATE_DATE" property="boardCreateDate"/> <result column="BOARD_MODIFY_DATE" property="boardModifyDate"/> <result column="BOARD_STATUS" property="boardStatus"/> </resultMap>
컬럼과 보드 필드명과 같은것을 의미한다는 resultMap을 작성하고
11) BoardController
if(list != null) { mv.addObject("list", list); mv.addObject("pi", pi); mv.setViewName("boardListView"); } else { throw new BoardException("게시글 전체 조회에 실패했습니다."); } return mv;
리스트가 비어있지않으면 boardListView.jsp로 넘어간다.
'Spring' 카테고리의 다른 글
Spring_댓글등록_댓글리스트조회 (0) 2022.06.14 Spring_Ajax_아이디 중복 확인 (0) 2022.06.14 Spring_로그인_암호화 (0) 2022.06.08 스프링_개념_1 (0) 2022.06.07 스프링_설정 및 기본 구조 (0) 2022.06.04