** 검색기능 추가
1. listBoard.jsp 에 틀을 만들어줌
<a href="insertBoard.do">게시물 등록</a>
          
          
<form action="listBoard.do" method="post">
<input type="hidden" name="searchflag" value="true">
<select name="keyField">
<option value="title">글제목</option>
<option value="content">글내용</option>
<option value="writer">작성자</option>
</select>
 
<input type="text" name="keyWord"> 
<input type="submit" value="검색">
</form>
2. ListBoardAction 에 추가하기
수정 전 : request.setAttribute("list", dao.listBoard(pageNumber));
수정 후 : request.setAttribute("list", dao.listBoard(pageNumber, keyField, keyWord));
그리고 오류나는 부분 마우스 올리고 change 눌러줌 ==> 자동 이동함
3. BoardDao 에 추가하기
ArrayList 부분 수정
String sql = "select * from board";
if(keyField != null){
sql2 += " where "+keyField + "like '%"+keyWord+"%'";
sql += " where "+keyField + "like '%"+keyWord+"%'";
}
sql += " order by b_ref desc, b_step";
ArrayList<BoardVo> list = new ArrayList<BoardVo>();
** 여기 까지만 했을 때는 페이지 번호를 누르면 원래대로 돌아간다. 그래서 Session을 이용해 상태유지를 시키도록 하자
4. 검색한 상태를 유지하여 페이징 처리가 가능하도록 한다.
(ListBoardAction - pro()메소드에 추가하기)
// 검색어의 처리
String keyField = null;
String keyWord = null;
if(request.getParameter("keyField") !=null){
keyField = request.getParameter("keyField");
keyWord = request.getParameter("keyWord");
// 검색한 정보를 session에 실어 상태유지 시킨다.
request.getSession().setAttribute("keyField", keyField);
request.getSession().setAttribute("keyWord", keyWord);
}else if(request.getSession().getAttribute("keyField") != null){ // 만약에 session에 keyField의 값이 실렸다면 변수에 저장하여 dao에게 전달해준다.
keyField = (String)request.getSession().getAttribute("keyField");
keyWord = (String)request.getSession().getAttribute("keyWord");
}
5. 모두 검색 가능하도록 하기
1) listBoard.jsp 알맞은 위치에 input button 추가 (하나의 jsp 에 두가지 이상 submit 못옴)
<input type="button" value="모두 검색" onclick="pro()">
2) listBaord.jsp - head에 자바스크립트라는 것을 추가
<script type="text/javascript">
function pro() {
location.href="listBoard.do?all=1"; // all 이라는 변수가 오면 1을 주라는 것(내맘대로 변수 정해줌)
}
</script>
3) ListBoardAction 첫줄에 정의
형태 : A 에는 아까 내용 줌
// 모두 검색인가 판별
if(request.getParameter("all") != null){
request.getSession().setAttribute("keyField", null);
request.getSession().setAttribute("keyWord", null);
}else{
A
}
정의 :
// 모두 검색인가 판별
if(request.getParameter("all") != null){
request.getSession().setAttribute("keyField", null);
request.getSession().setAttribute("keyWord", null);
}else{
if(request.getParameter("keyField") !=null){
keyField = request.getParameter("keyField");
keyWord = request.getParameter("keyWord");
// 검색한 정보를 session에 실어 상태유지 시킨다.
request.getSession().setAttribute("keyField", keyField);
request.getSession().setAttribute("keyWord", keyWord);
}else if(request.getSession().getAttribute("keyField") != null){ // 만약에 session에 keyField의 값이 실렸다면 변수에 저장하여 dao에게 전달해준다.
keyField = (String)request.getSession().getAttribute("keyField");
keyWord = (String)request.getSession().getAttribute("keyWord");
}
}
6. 정렬하기
: 각 칼럼 이름에 링크를 걸어 칼럼 기준으로 정렬하도록 함(이때 ref를 기준으로 뽑아오는 것은 무시합니다.
단, 검색후 정렬을 누르면 검색한 상태를 유지한 상태에서 정렬이 되도록 합니다.
1) ListBoard.jsp 에 있는 칼럼명에 링크 걸기
<tr>
<td><a href="listBoard.do?sort=no">글번호</a></td>
<td><a href="listBoard.do?sort=title">글제목</a></td>
<td><a href="listBoard.do?sort=fsize">첨부파일</a></td>
<td><a href="listBoard.do?sort=Writer">작성자</a></td>
<td><a href="listBoard.do?sort=regdate">날짜</a></td>
<td><a href="listBoard.do?sort=hit">조회수</a></td>
</tr>
2) ListBoardAction 에 맨 위에 정의 해줌
// 정렬의 처리
String sort = null;
if(request.getParameter("sort") != null){
sort = request.getParameter("sort");
}
그리고
이부분에 sort 추가 및 마우스 올려서 BoardDao로 가기
request.setAttribute("list", dao.listBoard(pageNumber, keyField, keyWord, sort));
3) BoardDao 에 ArrayList 부분 정의하러 가기
이부분을
sql += " order by b_ref desc, b_step";
이렇게 바꾸기
if(sort != null){
sql += " order by " + sort;
}else{
sql += " order by b_ref desc, b_step";
}
난 여기까지 했음-----------------------------------------------------------------
'JAVA > JSP' 카테고리의 다른 글
JSP - Listener 정의 및 만들기 (0) | 2016.07.03 |
---|---|
JSP - filter 정의 및 두가지 방법 (어노테이션과 web.xml 맵핑) (0) | 2016.07.03 |
JSP - 템플린 페이지 설명 및 방법 (0) | 2016.07.03 |
JSP - MVC 패턴 실습 (0) | 2016.07.03 |
JSP - MVC 패턴 설명 (1) | 2016.07.03 |