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

=============================코드=============================
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에
=============================코드=============================
// 검색어에 해당하는 회원을 조회하는 메서드
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);
}
}
포함된 문자를 가지고 화면에 출력 할
=============================코드=============================
<%@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 에서 실행

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

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