JSP_5강_6_게시판_검색기능

열라뽕따히·2024년 3월 20일

JSP

목록 보기
28/43
post-thumbnail

board_list.jsp 에 미리 정의된 검색 처리 기능을 완성해보자!

search.go 서블릿을 만들어보자



=============================코드=============================

package com.board.controller;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.board.model.BoardDAO;
import com.board.model.BoardDTO;


@WebServlet("/search.go")
public class SearchServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
  
    public SearchServlet() {
        super();
        
    }


	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset = UTF-8");
		
		String search_field = request.getParameter("field");
		String search_keyword = request.getParameter("keyword");
		
		BoardDAO dao = BoardDAO.getInstance();
		dao.searchList(search_field, search_keyword);

BoardDAO에서

searchList() 메서드를 만들자



=============================코드=============================

public List<BoardDTO> searchList(String field, String keyword) {
		List<BoardDTO> list = new ArrayList<BoardDTO>();

		try {
			openConn();
			
			if(field.equals("title_cont")) {
				sql = "select * from board where board_title like ? or board_cont like ? order by board_no desc";
			}else {
				sql = "select * from board where " + field + " like ? order by board_no desc";
			}
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1, "%" + keyword + "%");
			
			if(field.equals("title_cont")) pstmt.setString(2, "%" + keyword + "%");
			
			rs = pstmt.executeQuery();
			
			while(rs.next()) {
				BoardDTO dto = new BoardDTO();
				dto.setBoard_no(rs.getInt("board_no"));
				dto.setBoard_writer(rs.getString("board_writer"));
				dto.setBoard_title(rs.getString("board_title"));
				dto.setBoard_cont(rs.getString("board_cont"));
				dto.setBoard_pwd(rs.getString("board_pwd"));
				dto.setBoard_hit(rs.getInt("board_hit"));
				dto.setBoard_date(rs.getString("board_date"));
				dto.setBoard_update(rs.getString("board_update"));
				
				list.add(dto);
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
			
		} finally {
			closeConn(rs, pstmt, con);
		}
		return list;
	}



다시 서블릿으로 가자



=============================코드=============================

package com.board.controller;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.board.model.BoardDAO;
import com.board.model.BoardDTO;


@WebServlet("/search.go")
public class SearchServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
  
    public SearchServlet() {
        super();
        
    }


	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset = UTF-8");
		
		String search_field = request.getParameter("field");
		String search_keyword = request.getParameter("keyword");
		
		BoardDAO dao = BoardDAO.getInstance();
// -----------------------------여기서부터 작성-----------------------------
		List<BoardDTO> searchList = dao.searchList(search_field, search_keyword);
		
		request.setAttribute("SearchList", searchList);
		request.getRequestDispatcher("view/board_search.jsp").forward(request, response);
	}

}



view -> board.search.jsp 를 생성하자



=============================코드=============================

<%@page import="com.board.model.BoardDTO"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
	List<BoardDTO> search =  (List<BoardDTO>)request.getAttribute("SearchList");
%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<div align = "center">
			<hr width = "30%" color = "tomato">
				<h3>BOARD 테이블 전체 게시물 목록 페이지</h3>
			<hr width = "30%" color = "tomato">
			<br/> <br/>
			
			<table border = "1" width = "550">
				<tr>
					<th>게시글 No.</th> <th>글 제목</th> <th>작성자</th> <th>글 내용</th> <th>작성일자</th>
				</tr>
				
				<%
				if(search.size() != 0) {     // 데이터가 있다면
					for(int i = 0; i < search.size(); i ++){
						
						BoardDTO dto = search.get(i);
			%>		
				<tr>
					<td> <%=dto.getBoard_no() %> </td>
					<td> <%=dto.getBoard_title() %> </td>
					<td> <%=dto.getBoard_writer() %> </td>
					<td> <%=dto.getBoard_cont() %> </td>
					<td> <%=dto.getBoard_date().substring(0,10) %> </td>
				</tr>
			<%    } // for문의 end
				}else {
					// 회원 리스트가 없는 경우
			%>		
				<tr>
					<td colspan = "5" align = "center">
						<h3>검색된 목록이 없습니다...</h3>
					</td>
				</tr>
			<%	}
			%>
				
			</table>
	</div>

</body>
</html>



main.jsp에서 실행하자



=============================실행=============================

'김' 입력하고 검색 클릭

제목과 내용에 '김'이 포함된 모든 게시물이 화면에 보여짐!

0개의 댓글