ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.