본문 바로가기
국비교육기관/수업

48일차_머신러닝 / JSP 실습_RequestDispatcher

by 밀키스 2021. 5. 20.

21.05.20

 Machine Learing 

 

@Decision Tree ( 의사 결정 나무) 

  - 스무고개 하듯이 예/아니오 질문을 반복하며 학습한다.

  - 특정 기준(질문)에 따라 데이터를 구분하는 모델

  - 분류와 회귀에 모두 사용 가능

 

그냥 일종의 마인드맵.

 

@Python - DecisonTree 사용법 

================================================

 

 JSP 

@RequestDispatcher & sendRedirect 

조금 어려울 수 있다.. 그냥 어렵ㄷ...

 

우선 기존 JSP 실습 때 <input> 태그가 아닌 sendRedirect( ) 명령어를 통해 페이지 이동을 수행했다.

   --> 로그인하면 ID&PW 맞는지 판별 후, 로그인 성공 페이지로 이동

해당 경우에는 만일 "A라는 페이지에서 작업 수행 -> B 파일(JSP) redirect -> B 페이지 이동" 의 단계로 수행됐다.

 

즉, <로그인 -> 로그인정보 확인 -> 로그인 성공 페이지> 이렇게 3단계다. ( A: 정보확인 | B: 성공페이지 )

근데,  RequestDispatcher 란 녀석은 페이지를 호출하지 않고 그냥 내용만 보여준다.

 

일단 아래의 예시로 보자

< login.html -> 로그인 | Login.jsp -> 정보확인 | LoginSuccess.jsp -> 로그인 성공 >

 

sendRedirect RequestDispatcher

 

보는바와 같이 sendRedirect (좌측)의 경우 로그인 성공페이지로 이동, RequestDispatcher (우측)는 로그인 정보 확인 페이지가 주소 값에 나타나있다.

 

결국 가볍게 얘기하자면,

 RequestDispatcher 페이지 호출 없이 jsp 파일 내에서 다른 파일로 요청을 보내고 바로 응답을 받는것이고,  sendRedirect 브라우저가 response에 따라 서버로 지정된 경로를 다시 요청하여 페이지를 호출한다.

 

" RD는 A가 B를 비춰주는거, sendRedirect는 A가 요청을 받아 B에게 바톤을 준거... 정도?? "

 

%코드 확인 - forward / setAttribute 

 

  - HTML파일에서 Data를 전송한 방식이 "post" 이므로 < 1 > 과 같이 인코딩

  -  setAttribute  명령어를 통해 request란 객체에 이름이 name이고, 속성 값은 value인 걸 setting한다.

  - request객체의  getRequestDispatcher  명령어를 통해 요청할 경로를 지정해준다.

  -  forward  명령어는 대상이 되는 자원으로 제어를 넘기는 역할을 한다.

     => 브라우저는 A에게 요청했지만 A는 B에게 제어를 넘겨주고, 결과를 B가 브라우저에게 준다.

     => 즉, 이는 브라우저가 단 한번만 요청해서 작업이 이뤄진 것.

     --> 전달한 data값은 request나 response에 담아서 전송한다.

 

 

@Web에서의 MVC - Model1 실습 

MVC의 2개 종류 및 Model 1의 구성

조금 간단히 얘기하면 

Model 1 -> View단과 Controller 모두 JSP 에서 작성

Model 2 -> View단은 JSP 로, Controller는 Servlet 으로 작성해준다.

 

Model 1 실습

 

으아음..... Web에서는 내가 일반적으로 알고있는 MVC 패턴과 다른게 또 존재한다고 한다.

 

무튼.... 해당 내용에 대한 실습을 진행한다.

@로그인 & 회원가입 페이지 

대략 이런식의 실습을 진행

  - DB에 회원가입한 아이디와 비밀번호, 이름을 저장한다

  - 로그인할때에는 DB에서 해당 정보를 SELECT하여 일치하면 로그인할 수 있도록 한다.

  - 로그인에 성공하면 회원가입때 작성한 "name"을 노출시킨다.

 

@main 페이지 

  - Main 페이지의 경우 각각 회원가입&로그인 창으로 이동하는 버튼을 만들었다.

  - 각각 2개의 페이지로 이동하기 때문에 2개의 form 태그로 2개의 input 태그를 만들어주었다.

 

 

@회원가입 페이지 

 

%그냥 보이는 부분 

우선 회원가입에 필요한 부분들을 적도록하는 파일

  - JSP 파일이긴 한데 그냥 HTML 코드밖에 없다.

  - 회원가입시 입력 정보는 개인정보니까 전달 방법은 post로 주었다.

 

이게... 끝이다.

 

%DB에 필요한 부분 

일부분씩 리뷰

 

  - "post"방식으로 데이터를 전달 받았기 때문에 인코딩 작업을 해주었다.

  - sql문을 미리 작성하는데 이때 내기 기입할 부분은 "?"라고 써준다.

 

 

  - 첫번째 줄부터 5번째까지는 동적로딩 및 DB서버에 로그인하는 부분

  - psmt 및 conn 변수는 예외처리 문 하위에서 사용하기 위해 윗부분에서 미리 null값을 주어 정의했다.

  -  executeUpdate( )  명령어는 제데로 수행됐다면 1을, 아니면 0을 반환한다.

  - 제데로 insert 구문이 작동됐다면 main 페이지로 이동하도록 헸다.

  - 오류가 나면(insert가 수행이 안되면) 다시 회원가입창으로 이동하도록 했다.

  - finally 안에 DB 연결을 close해주는 부분을 넣어주었다.

 

 

@로그인 페이지 

 

%보이는 부분 

  - 로그인 페이지의 경우 또한 2개의 <form> 태그를 만들어 회원가입 창으로 이동할 수 있도록 하였다.

  - 윗부분의 경우 회원가입 창으로 이동하기 위한 <form> 태그 또한 <table> 태그로 감싸주었다.

      ==> 그냥 이쁘게 만들라구 ^^

%DB 부분 

로그인 페이지 또한 post 방식으로 데이터를 전달 받기 때문에 인코딩 작업이 필요하다. 

때문에 위의 회원가입 창과 겹치는 부분은 생략한다.

 

  -  SELECT 문을 통해 id와 password가 일치한지 찾는다.

  - 조회할 때는 Update가 아닌  executeQuery( ) 를 사용한다. 또한 이때에는 ResultSet이란 객체로 값을 받는다.

  -  rs.next( ) 문을 통해 들어온 값이 있다면 조건문을 통해 로그인 성공 페이지로 이동한다.

  - 또한 조건문에서 ID와 PW가 일치한지도 검사한다.

      ==> 제약조건을 주지 않았기 때문에 ID와 PW가 일치하는 경우 또한 존재하겠지만 일단 실습이니까..

  - 조건문에 모두 일치하다면, 해당 로그인 정보의 이름 값을 로그인 성공 페이지에 전달한다.

  - 실패하면 로그인 실패 페이지로 이동하게 된다. ( 에러가 뜬다거나 하면... )

 

%로그인 성공&실패 페이지 

  - 로그인 성공시에는 해당 정보의 이름값을 페이지에 노출시킨다.

  - 실패시에는 실패문구와 함께 로그인 및 메인 페이지로 이동할 수 있도록 하였다.

반응형

댓글