-
Servelt-JSP MVC01 (3) - 회원리스트 가져오기Web/Servlet-JSP 2023. 5. 26. 08:32
회원가입이 성공하면, 회원 리스트를 보여주도록 만들어보자
1. 회원가입 성공 후 Redirect
if(cnt>0) { //가입성공 response.sendRedirect("/MVC01/memberList.do"); //전에 가입 성공시 그냥 메세지 뜬 거 수정
- 회원가입이 성공하면, Redirect를 통해 memberList.do를 처리할 컨트롤러와 클라이언트를 연결하자
2. memberList.do 처리할 컨트롤러 + 모델
@WebServlet("/memberList.do") public class MemberListController extends HttpServlet { protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { MemberDAO dao = new MemberDAO(); ArrayList<MemberVO> list = dao.getMemberList();
> 리스트를 보여달라는 요청을 처리할 서블릿을 만들고, 모델과 연동해서 멤버 리스트를 화면에 출력하도록 하자
public ArrayList<MemberVO> getMemberList() { String sql = "SELECT * FROM member"; getConnect(); MemberVO mem; ArrayList<MemberVO> members= new ArrayList<>(); try { ps = conn.prepareStatement(sql); rs =ps.executeQuery(); while(rs.next()) { int num = rs.getInt("num"); String id = rs.getString("id"); String pass= rs.getString("pass"); String name = rs.getString("name"); int age = rs.getInt("age"); String email = rs.getString("email"); String phone = rs.getString("phone"); mem = new MemberVO(num,id,pass,name,age,email,phone); //num들어간 생성자 있었던 이유! members.add(mem); } } catch (Exception e) { e.printStackTrace(); }finally { dbClose(); } return members; }
> DAO는 DB에 테이블을 읽어오는데, 이때 실행된 sql의 결과는 (ps.executeQuery())
ResultSet으로 반환되고, ResultSet은 iterator처럼 결과를 행별로 한줄 한줄 읽어온다.
> rs.next()로 읽어온 결과를 다시 VO객체에 담고, 이를 ArrayList에 담아 서블릿으로 return하자
for(MemberVO m : list) { out.println("<td>"+m.getPass() +"</td>"); out.println("<td>"+m.getName() +"</td>"); out.println("<td>"+m.getAge() +"</td>"); out.println("<td>"+m.getEmail() +"</td>"); out.println("<td>"+m.getPhone() +"</td>"); }
3. 인코딩 설정하기
회원리스트를 DAO로 List로 받아서 PrintWriter로 출력하는 부분까지 만들었다.
사용자의 한글 입력을 서버에서 정확하게 받기 위해서 request에서 인코딩 설정을 해줬던 것 처럼,
response도 적절한 인코딩 처리가 필요하다.
- 서버에서 클라이언트 브라우저로 데이터 내보낼 때 브라우저는 인코딩 정보등을 모른다.
- 서버가 클라이언트에게 응답하기 전에 어떤 유형에 데이터를 내려보낼 것인지 설정해야함
이를 MIME TYPE이라 함
- response.setContentType("text/html;charset=utf-8"); 를 통해 설정가능
- PrintWriter 등 아웃풋스트림 만들기 이전에 설정해두자.
추가로 회원가입 버튼을 추가해서 memberList에서 회원가입을 바로 할 수 있는 버튼을 만들어 두자!
out.println("<a href='member/memberRegister.html'>회원가입</a>");
a태그로 회원가입 버튼? 밑에 추가했다.
- 정리
회원리스트 가져오기를 통해 회원가입과 반대로 DAO에 수집된 데이터를 다시 클라이언트에게 보내는 작업 한 것이다.
- DAO(모델)가 DB로 데이터 읽어서 VO인스턴스를 만들고 -> 컨트롤러에 넘긴다. (회원가입과 반대)
> 클라이언트 요청 Redirect : memberList.do로 보내기
> MemberListController에서 DAO에 저장된 데이터 VO의 list로 꺼내온 값 읽어서 내보내기 : MIME TYPE설정
> DAO는 DB에 저장된 값 읽어서 ResultSet으로 얻어옴 이를 다시 읽어서 VO List로 저장해서 return
> MemberList.do에서 회원가입화면으로 돌아갈 수 있도록 a태그 추가
참고자료- 인프런 강의 나프1탄 - 박매일
'Web > Servlet-JSP' 카테고리의 다른 글
Servlet - JSP MVC01 (5) - 회원상세보기 (0) 2023.05.26 Servlet-JSP MVC01 (4) - 회원삭제 (0) 2023.05.26 Servlet-JSP MVC01 (2) - Servlet과 Model 연결 (회원관리테이블) (0) 2023.05.24 Servlet-JSP MVC01 (1) - 기본 구조 만들기 (0) 2023.05.23 Servlet-JSP 순수to웹 (5) 나머지 여러가지 설정 (0) 2023.05.23