JSP&Servlet

[JSP]3. MVC 패턴으로 JDBC 만들기

CodeJaram 2023. 6. 22. 08:06

[MVC 패턴]

 

● Model: 데이터를 담거나 전송하거나 수정, 삭제

● Controller: logic 결과에 따라 적절한 view를 선택하여 응답

● View: Model데이터를 기반으로 실제 사용자에게 보여지는 페이지

 

1. Model1: JSP만 사용, Controller, View 구분 x

 

2. Model2: View와 비즈니스 로직 부분을 분리

 

 

 

[회원가입/로그인 실습]

<view> 

<controller> 

 

<model>

 

 

1. main.jsp: <a>태그, <button>태그

   -회원가입 버튼 클릭 시 [join.jsp]로 이동

   -로그인 버튼 클릭 시 [login.jsp]로 이동

 

2. join.jsp: <form>태그, <fieldset> 태그, <table>태그, <input>태그

   -id, pw, name 입력하는 폼 만들기

   -회원가입 버튼 클릭 시 [JoinProgram.java]로 이동

 

3. JoinProgram: main-join에서 입력한 회원정보 받아오기, DAO join 메소드 호출

  1)post 방식 인코딩

  2)request 객체로 데이터 받아오기

  3)회원가입을 위한 join 메소드(DAO) 호출

 

4)DAO 반환값 row를 활용하여 성공/실패 확인(if문 사용)

   -페이지 이동경로를 담을 moveURL 변수 선언

   -회원가입 성공하면 회원가입 성공문구 출력, [login.jsp]로 이동

   -회원가입 실패하면 회원가입 실패문구 출력, [join.jsp]로 이동

 

5)reponse 객체에서 페이지 이동: sendRedirect

-if문에서 사용한 moveURL 변수를 매개변수에 작성하여 성공실패 여부에 따라 페이지

이동

 

4. DAO: DB 접근 객체

 1)getConn 메소드

     - 외부라이브러리 ojdbc6.jar 불러오기

      ○외부 라이브러리 주소:

         C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib

      ○외부라이브러리 넣는 위치: src/main/webapp/WEB-INF/lib 폴더에 붙여넣기!

 

    - oracleDriver 클래스 불러오기

    - DB 접속하기 위한 보안키 설정

    - 보안키로 DB 접속하기→접속 성공 시 Connection 객체로 반환

 

2)Close 메소드: 객체 연결한 역순으로 종료하기

   - ResultSet rs;

   - Preparedstatement psmt;

   - Connection conn;

 

3)join 메소드(회원가입)

  • SQL문 작성하기: “insert into table명 values(?,?,?)”
  • SQL문 실행가능 판단: PrepareStatement(sql);
  • ?(바인드 변수)에 값 채우기: psmt.setString(?순서, 값)
  • SQL 문장 실행: executeUpdate();

 

4)login 메소드

  • SQL문 작성하기: “select 컬럼명 into table명 where절(id,pw)”
  • SQL문 실행가능 판단: PrepareStatement(sql);
  • ?(바인드 변수)에 값 채우기: psmt.setString(?순서, 값)
  • SQL 문장 실행: executeQuery();
  • rs.next() 반환값이 있으면 원하는 컬럼값(name) 가져오기: rs.getString(“컬럼명”)

 

5. login.jsp

   -id, pw 입력하는 폼 만들기

   -로그인 버튼 클릭 시 [loginProgram.java]로 이동

 

6. loginProgram

1)post 방식 인코딩

2)request 객체로 데이터 받아오기

3)login 메소드 호출: DAO 객체 생성

4)로그인 성공/실패 구분: rs.next() 반환값이 null이 아니면 로그인 성공

- if문 사용하여 로그인 성공 시 [loginSuccess.jsp]로 이동, 실패 시 [loginFail.jsp]로 이동

 

  • querystring 방식 name 값 전송: “페이지 이동경로?name=”

+URLEncoder.encode(전송할 값, “인코딩 방식”)→전송값이 한글이면 인코딩

 

  • session으로 name 값 전송

-session 객체 생성: HttpSession 변수명=request.getSession();

-session 생성: 변수명.setAttribute(“전송할 이름”, 전송값)

 

  • forward 방식으로 name 값 전송: request.setAttribute(“이름”, 전송할 값)

-request.setAttribute("name", name);

-moveURL="./loginSuccess.jsp" ;

 

5)페이지 이동

  • querystring 방식: response.sendRedirect(“페이지 이동경로”)
  • forward 방식: 

RequestDispatcher rd=request.getRequestDispatcher(moveURL);

rd.forward(request, response);



7. loginSuccess.jsp

1)데이터 받아오기

  • querystring 방식: request.getParameter(“전송한 값”)

-String name=request.getParameter("name");

  • session으로 방식: session.getAttribute(“전송한 값”)

-String session_name=(String)session.getAttribute("name");

 

  • forward 방식: request.getAttribute("전송한 값");

-String req_name=(String)request.getAttribute("name");

 

2)데이터 출력하기: 표현식으로 name, id, pw 출력하기

<h1>쿼리 스트링 방식: <%=name %>님 환영합니다.</h1>

<h1>session 방식: <%=session_name %>님 환영합니다.</h1>

<h1>request 방식: <%=req_name %> 님 환영합니다. </h1>

 

//session 방식과 forward 방식에서만 출력됨

<%=id %> 

<%=pw %>



8. loginFail.jsp: <a>태그, <button>태그 활용

  • 회원가입에 실패하면 [main.jsp]로 이동
  • 로그인에 실패하면 [login.jsp]로 이동



'JSP&Servlet' 카테고리의 다른 글

[JSP]5. Scope  (0) 2023.06.26
[JSP]4. cookie&session  (0) 2023.06.23
[JSP]2. 내장객체  (0) 2023.06.21
[JSP]1. JSP의 구성요소  (0) 2023.06.20
[Servlet]3. 데이터 전송방식(get/post)  (0) 2023.06.19