본문 바로가기

ETC/JSP

8- JSP 게시판 (검색기능)

::구현방식

 

  Jsp

  boardList에 새로운 폼을 만들었다. select를 사용하여 제목,내용,

  작성자 옵션을 선택 가능하게 하고, 검색하고자 하는 키워드를

  입력하면 select한 옵션에 따라 키워드를 검색한다.

 

  Cmd

 

  select한 옵션의 값과, 입력한 키워드를 boardLIst.bbs 즉 boardListCmd에서 받는다. 

  boardList에 기능을 추가했으니 검색했을때 쓰는 쿼리랑 아닐때 쿼리로 나눠서 구현한다

  검색했을 때는 value와 키워드 값이 null이 아니고 / 검색 안했을때 list는 value와 키워드 값이 null

 

  검색했을때 쿼리 : "select * from board where subject like ?"

  입력한 키워드(search) 를 포함해서 출력해야 하니까 like %키워드% 를 쿼리에 넣어야한다.

  String searchIn = "%"+search+"%"; 를 먼저 실행하여 위 sql쿼리의 ?부분에 넣는다

 

 


 

 

::실행 화면

 

  왼쪽 사진은 "제목 옵션으로 test를 검색해서 나온 화면이고 :: 오른쪽은 작성자 키워드로 1을 검색해서 나온 화면

 

  


 

 

::boardDAO 의 getBoardLIst에 추가된 코드

 

if(search==null) {
            // 쿼리 준비 & db 쿼리
            pstmt = conn.prepareStatement("select *from(select board.*,row_number() over(ORDER By pid asc, porder asc) as rowNum from board order by pid asc, porder asc)tb  where tb.rowNum between " + startRowNum + " and " + endRowNum);
            rs = pstmt.executeQuery();
}else{ //0918 수정완료
            if("1".equals(itemNum)) {
                System.out.println("입력된 search = "+search);

                pstmt = conn.prepareStatement("select * from board where subject like ?");
                pstmt.setString(1, searchIn);
                rs = pstmt.executeQuery();
            }else if("2".equals(itemNum)){
                pstmt = conn.prepareStatement("select * from board where content like ? ");
                pstmt.setString(1, searchIn);
                rs = pstmt.executeQuery();
            }else if("3".equals(itemNum)){
                pstmt = conn.prepareStatement("select * from board where author like ? ");
                pstmt.setString(1, searchIn);
                rs = pstmt.executeQuery();
            }
        }

  if else 안의 if문은 switch문으로 변경 가능하다.

  if문에서 request.getParameter에서 받은 값과 비교하는 부분에서 오류가 많이 발생했다.

  equals 왼쪽에 있는 대상은 항상 주체가 되어야 해서 잘못된 if문을 수정했다.

  https://kmhan.tistory.com/218 블로그 참고

 

 


 

 

::고민 중

 

  1. 한 페이지에 기능을 추가할때마다 코드가 복잡해진다.. 다른 페이지에 구현해서 보기좋은 코드로 list를 뽑을까?

  2. boardList에 코드를 추가했지만 "페이지당 보여줄 글의 갯수" 부분이랑 연동을 하지는 못했다.

  3. 검색 후 나오는 list의 순서는 id값 순서에 따라 출력했다. 다른 좋은 방법이 있을까?

 

  2,3 > between으로 페이지당 보여줄 글의 갯수를 뽑아내면 어떤 기준으로 뽑아내야할까?

 

'ETC > JSP' 카테고리의 다른 글

9- 게시판 (검색기능2)  (0) 2021.09.20
7- JSP 게시판 (아이디 중복확인2)  (0) 2021.09.17
6- JSP 게시판 (수정한 오류)  (0) 2021.09.15
5- JSP 게시판 (아이디 중복확인 1)  (0) 2021.09.13
4- JSP 게시판 (회원가입 기능)  (0) 2021.09.11