JSP_4강_5_Member테이블_DAO_검색

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

JSP

목록 보기
22/43

member_list.jsp에 있는 작성된 검색 처리 기능을 만들어보자!

search.go 서블릿을 만들자!


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

package com.member.controller;

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

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.member.model.MemberDAO;
import com.member.model.MemberDTO;


@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 {
		// 검색어를 입력 받아서 검색어에 해당하는 회원의 리스트를 
		// member 테이블에서 조회하여 view page로 이동시키는 비즈니스 로직
		request.setCharacterEncoding("UTF-8");

		// 받아와야 하는 값이 field, keyword 두개!
		String search_field = request.getParameter("field").trim();
		String search_keyword = request.getParameter("keyword").trim();
		
		MemberDAO dao = MemberDAO.getInstance();
		
		dao.searchMemberList(search_field, search_keyword);



MemberDAO에

searchMemberList() 메서드를 만들자

  • 반환타입은 중복된 값이 있을 수 있으므로 List를 써야함!
    : 이름 옵션을 선택하고 "김"을 입력시 김에 포함되는 모든 데이터들이 나올 수 있기 때문

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

// 검색어에 해당하는 회원을 조회하는 메서드
		public List<MemberDTO> searchMemberList(String field, String keyword) {
			
			List<MemberDTO> searchList = new ArrayList<MemberDTO>();
			
			try {
				// 1 ~ 2단계 : 오라클 드라이버 로딩 및 DB 연결 작업 진행
				openConn();
				
				// 3단계 : DB에 전송할 SQL문 작성
				sql = "select * from member where " + field +" like ? order by memno desc";
				
//				if(field.equals("id")) {
//					sql += " where memid like ?";
//				}else if(field.equals("name")) {
//					sql += " where memname like ?";
//				}else if(field.equals("job")) {
//					sql += " where job like ?";
//				}else {
//					sql += " where addr like ?";
//				}
//				sql += " order by memno desc";
				
				// 4단계 : SQL문을 DB 전송 객체의 인자로 전달
				pstmt = con.prepareStatement(sql);
				
				// 4-1단계 : 플레이스 홀더(?)에 데이터를 배정
				pstmt.setString(1, "%" + keyword + "%");
							
				// 5단계 : SQL문을 DB에 전송 및 실행
				rs = pstmt.executeQuery();
				
				while(rs.next()) {
					MemberDTO dto = new MemberDTO();
					
					dto.setNum(rs.getInt("memno"));
					dto.setMemid(rs.getString("memid"));
					dto.setMemname(rs.getString("memname"));
					dto.setPwd(rs.getString("mempwd"));
					dto.setAge(rs.getInt("age"));
					dto.setMileage(rs.getInt("mileage"));
					dto.setJob(rs.getString("job"));
					dto.setAddr(rs.getString("addr"));
					dto.setRegdate(rs.getString("regdate"));
					
					searchList.add(dto);
				}
				
			} catch (SQLException e) {
				e.printStackTrace();
				
			} finally {
				
				// 6단계 : DB에 연결되어 있던 자원 종료
				closeConn(rs, pstmt, con);
			}
			return searchList;
			
		}

**sql문 작성 시 띄어쓰기를 주의할 것



다시 서블릿으로 가자!


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

package com.member.controller;

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

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.member.model.MemberDAO;
import com.member.model.MemberDTO;


@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 {
		// 검색어를 입력 받아서 검색어에 해당하는 회원의 리스트를 
		// member 테이블에서 조회하여 view page로 이동시키는 비즈니스 로직
		request.setCharacterEncoding("UTF-8");
		
		String search_field = request.getParameter("field").trim();
		String search_keyword = request.getParameter("keyword").trim();
		
		MemberDAO dao = MemberDAO.getInstance();
		
		List<MemberDTO> searchList = dao.searchMemberList(search_field, search_keyword);
		
		request.setAttribute("Search", searchList);
		
		request.getRequestDispatcher("view/member_searchList.jsp").forward(request, response);
	}

}



포함된 문자를 가지고 화면에 출력 할

view -> member_searchList.jsp 생성


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

<%@page import="com.member.model.MemberDTO"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
	List<MemberDTO> members = (List<MemberDTO>)request.getAttribute("Search");
%>

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

	<div align = "center">
		<hr width = "30%" color = "red">
			<h3>Member 테이블 검색 목록 페이지</h3>
		<hr width = "30%" color = "red">
		<br/> <br/>
		
		<table border = "1" width = "400">
			<tr>
				<th>회원 No.</th> <th>회원 이름</th> <th>회원 직업</th> <th>회원 등록일</th>
			</tr>
			
			<%
				if(members.size() != 0) {     // 데이터가 있다면
					for(int i = 0; i < members.size(); i ++){
						
						MemberDTO member = members.get(i);
			%>		
				<tr>
					<td> <%=member.getNum() %> </td>
					<td> <%=member.getMemname() %> </td>
					<td> <%=member.getJob() %> </td>
					<td> <%=member.getRegdate().substring(0,10) %> </td>
				</tr>
			<%    } // for문의 end
				}else {
					// 회원 리스트가 없는 경우
			%>		
				<tr>
					<td colspan = "4" align = "center">
						<h3>검색된 회원 목록이 없습니다...</h3>
					</td>
				</tr>
			<%	}
			%>
		
		</table>
		
		<br/> <br/>
		
		<input type = "button" value = "회원목록" onclick = "location.href='select.go'">
		
		
	</div>

</body>
</html>



main.jsp 에서 실행


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

옵션 : 이름
검색창에 "김" 입력
검색 클릭

김이 포함된 회원 이름의 값이 출력됨

0개의 댓글