[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 |