Spring Framework 개발 일지/Spring으로 게시판 만들기 (21) 썸네일형 리스트형 FirstSpringBoard#6-5] 검색 기능결과 화면 페이징 처리 안녕하세요.그간 바빠서 포스팅을 못하고 있었네요.javascript에 흥미를 느껴서 node.js랑 express, jquery에 빠져있느라 스프링에 너무 소홀했습니다.저번 시간에 MySQL에서 제공하는 limit()를 이용해서 페이징 처리를 구현해보았습니다.그 덕분에 컨트롤러의 로직이 대폭 줄어들었습니다.DB에 가는 부담도 줄었고요.하지만 검색 결과에 대해서 페이징 처리가 반영이 안됐었는데요.이번 시간에는 검색결과 화면도 페이징 처리를 해보겠습니다. 검색 결과에 대해서 페이징 처리를 하기위해서는 검색결과에 대한 페이지 개수를 구해줘야합니다.그러나 현재 Controller에서는 검색 유무와 관계없이 전체 게시물에 대한 페이지 개수를 가져옵니다.boardService.getTotalCount(); 메소드에.. FirstSpringBoard#00] git와 github를 이용해서 실습 코드 조회하기 안녕하세요.실습을 따라하면서 막히는 부분이 많을 거라고 생각합니다.아무래도 블로그의 코드를 보면서 하면 내가 맞게하고 있는지도 의심스러울거고 오타가 날 수도 있는거니깐요.저는 실습을 하면서 git를 이용해서 버전관리를 합니다.주요 기능들이 추가되면 커밋해서 변경이력을 남겨요.제 github에 올린 소스를 이용하는 것도 학습에 큰 도움이 될겁니다.git을 이용해서 프로젝트의 변경 이력을 조회하는 방법을 알아봅시다. git는 DVN으로 분산 버전 관리 시스템의 약자입니다.git에서 파일을 저장하는 repository는 두개입니다. 내 컴퓨터에 저장하는 local repository와 원격저장소에 저장하는 remote repository에요.github는 원격저장소라고 할 수 있습니다.우선 제 github로 .. FirstSpringBoard#6-4] mysql limit 기능을 이용한 페이징 우리는 지난시간 Controller에서 페이징 처리를 했었습니다.편의상 Controller에서 페이징을 했었는데. 이로 인해 생기는 문제점은 무엇일까요?우선 모든 게시글의 목록을 불러오는 문제가 있습니다.지금이야 게시글이 별로 안되지만 점점 게시물이 많아 진다면 DBMS에 부하가 엄청 생기겠죠.모든 사용자가 게시판에서 페이지를 이동할 때 마다 DB에서 모든 게시물 목록을 가져오기 때문이죠.그리고 마지막 페이지에 대한 분기처리와 같이 코드가 길어진다는 단점이 있습니다.이런 문제점을 해결하기 위해서 mysql에서 제공하는 limit 기능을 이용해서 페이징 처리를 해볼게요. 우선 Mapper.xml을 수정해야합니다.getSearchWriterAndContent를 아래와 같이 수정해주세요.order by 뒤에 .. FirstSpringBoard#6-3] 마지막 페이지에 대한 페이징 처리 안녕하세요.요 며칠은 의욕이 너무 안나서 드라마 정주행하고 공부는 간간히 하면서 지냈습니다.포스팅은 꿈도 못 꿨고요.전에 개발 했던 것을 git 커밋 로그를 보면서 따라가면서 포스팅하는거라 지루한 감도 있습니다.그래도 화이팅해야죠. 저번 시간에 우리가 페이징 처리와 검색 기능을 구현했었습니다.그런데 페이징 처리가 불 완전한데요.마지막 페이지가 제대로 조회되지 않으실겁니다. 그 이유는 마지막 페이지의 특징 때문인데요.마지막 페이지 이전의 모든 게시물들은 게시글을 무조건 정해진 갯수만큼 보여줍니다.그런데 마지막 페이지가 보여주는 게시글을 게시글의 전체 수에 따라서 달라져요. 전체 게시글이 12개이고 한 페이지당 3개씩 보여준다면 마지막 페이지에서도 3개를 보여주니 에러가 나지 않겠죠.그런데 전체 게시글이 1.. FirstSpringBoard#6-2] 검색 기능 비즈니스 로직 구현 안녕하세요. 저번 시간에는 페이징 처리를 했었죠.아마 완벽하게 되지 않아서 찝찝하게 느껴지시는 분들도 계실거에요.제가 프로젝트를하면서 느끼는 것은 한번에 완벽하게 되는 것 없다는 거에요.일단 기능을 구현하고 문제점을 찾아서 고치는 사이클이 이상적인거 같아요.누구도 한번에 이상적인 기능을 구현할 수는 없어요. 시행착오가 있을 뿐이죠.한번에 완성된 기능을 딱 보여주는게 아닌 문제점을 발견하고 고치는 과정을 거쳐야 실력이 업그레이드됩니다. 단순한 코더나 타이퍼? 타이피스트가 될 수는 없잖아요. 우리는 개발자가 되어야합니다. 검색 기능에 대해서 생각해봅시다.우선 우리는 작성자와 내용에 대한 검색 기능을 구현할 거에요.아래는 검색기능에 해당하는 HTML 태그입니다.구현된 화면도 같이 보시죠. 셀렉트 박스에서 검색.. FirstSpringBoard#6-1] 페이징 기능 구현하기 안녕하세요. 저번 챕터에서는 간단한 CRUD 기능을 구현했었죠.오늘 추가할 기능은 페이징 기능입니다.우리가 전체 게시글을 조회할 때 모든 게시물을 하나의 화면에 보여주었습니다.이렇게 할 경우 개발하는 우리 입장에서는 아주 편합니다.그러나 사용자 입장에서 가독성은 아주 떨어지죠.웹 애플리케이션에서 페이징 처리는 필수입니다. 우선 저희는 Controller에서 페이징을 처리해 줄 겁니다.일단 구현해 보고 문제점을 찾아야죠. 리팩토링해서 더 효율적인 방향으로 고쳐볼게요. 페이징 처리를 하는데 있어서 고려해야할 사항은 무엇이 있을까요.우선 게시판에서 페이지라는 것이 어떤 기능을 하는지 생각해봅시다.게시판에서 페이지는 게시글을 정해진 숫자로 나눠서 보여주는 기능입니다.그리고 페이지 번호를 클릭하면 해당하는 페이지.. FirstSpringBoard#5-5] 게시물 삭제 기능 구현 안녕하세요.여태까지 전체 글 조회, 특정 게시글 조회, 게시글 수정을 구현해봤는데요.아마 웹 애플리케이션에서 구현하는 기능 중에 제일 간단한 것이 삭제 기능일 겁니다.이번에는 가볍게 삭제 기능을 구현해보죠. 여러분은 DB에서 특정 튜플을 삭제할 때 어떻게 하시나요?아마 바로 답이 나올 겁니다. 삭제 기능에 해당하는 DML은 Delete이죠.그리고 특정 조건을 넣는 키워드는 where 입니다.우리 프로젝트에서 특정 게시물을 삭제하는 SQL문은Delte from board where id = ? 입니다.이미 마이바티스를 이용해서 비즈니스 로직으로 구현을 했죠.위 조건에서 알 수 있듯이 id를 DAO에 넘겨 줘야합니다.아래는 게시글 조회 화면에서 삭제 기능에 해당하는 HTML 태그에요.id를 넘겨주고 있죠? .. FirstSpringBoard#5-4] 게시물 수정 기능 구현 저번 시간에는 특정 글 조회 기능을 구현했었죠.이번 시간에는 게시물을 수정하는 기능을 구현해보겠습니다. 기능을 구현하는데 있어서. 게시물의 어떤 칼럼을 수정할지 생각해야겠죠.우리가 수정할 것은 제목과 본문입니다.작성자는 그냥 화면에 보여주기만 합니다.아래는 board_update.jsp의 소스코드입니다. 이제 컨트롤러를 구현해줄게요.우선 소스코드를 먼저 볼게요. 그런데 사용되는 메소드가 두개입니다.각 메소드는 어떤 기능을 할까요? 아래는 글 수정 화면입니다.글 수정 화면을 보니 태그 안에 수정할 게시물의 제목과 내용을 넣어서 보여주고 있네요.글 수정 화면으로 넘어갈 때 해당 게시물의 board 객체를 board_update.jsp에 뿌려주고 있습니다.boardDAO에 getBoard(int id)를 이용.. 이전 1 2 3 다음