본문 바로가기
뉴렉처 과정 기록 (Backend)/Servlet _JSP

04/14 Servlet (get/post)코드 분리, 서블릿 생명주기(thread)

by yeonee3219 2021. 4. 14.

 

계산기 만드는 코드에서...

 

굳이 실행되지 않아도 되는 부분이 실행되고 있는 코드이다

 

 

 

자 그렇다면 GET 요청과 POST 요청 코드를 분리해보자

5번 부분 할 것이다

 

 

 

 

 

 

get요청 post요청 이 헷갈린다면 개발자도구 -> 네트워크 -> general에서 확인할 수 있다

 

 

 

 

 

 

Post인 경우에만 실행되도록 하기

 

필요한 변수는 다 선언해주고 Post인 경우에만 저 코드들 실행되도록 했다

 

이 상태에서 run 누르면

 

calc가 프린트 되지 않은 걸 보니 코드는 실행되지 않았다

 

 

입력하고 나면

 

calc가 출력되고  post인 것을 알 수 있다

 

 

 

 

 

 

Servlet life sycle

 

사용자가 요청을 하면 그 요청을 수반하기 위해서 WAS는 로드 되어있나? 하고 확인

되어 있으면 응답 / 되어 있지 않다? 

-> 메모리에 올리고 초기화 -> 스레드를 새로 만들어 서비스 함수 오버라이드

 

 

 

그 후 WAS에 시간이 지나면 삭제하게 되는 흐름

 

 

 

 

 

www.youtube.com/watch?v=arB7sQ9S7h0&list=PLq8wAnVUcTFVOtENMsujSgtv2TOsMy8zd&index=39

 

 

 

get과 post를 따로 쓰고 싶다면 service보다 오른쪽 파란색박스의 함수를 오버라이드 하면 된다

 

 

 

 

두가지 함수 오버라이드 하고 service 함수 내에서 부모의 service함수 쓸수있도록 super해줌

 

 

 

 

위 사진과 같이 잘 나온다 

 

 

 

 

 

 

지금까지 한 코드는 아래의 그림과 같이 형성되어있다고 볼 수 있다

 

calc는 httpservlet을 상속하는 상태

 

 

doGET doPOST 호출하고 싶으면 super해줘야함 -> 그래서 위에서 해줬지!

 

 

 

 

 

하지만 doGet함수와 doPost함수에는 그에 해당하는 내용들이 있어야지! -> 서비스 함수에서 빼서 코드 나눠주자

 

 

 

코드를 나누고 실행

 

 

 

 

post요청에서는 화면에 아무것도 돌아오지 않는다 -> get요청으로 돌려보낼 방법을 찾아야한다...

 

doPost함수 내에 doGet함수 불러온 것

이렇게 하면 될까 -> 흐름이 깨져버려 안돼

 

 

 

post 요청하고 get 요청이 되어야 돼

 

resp.sendRedirect()라는 함수 이용해서 값 요청 -> 어떤값을 넣어야 할까 

 

 

get 요청하면서 get을 처리하는 로직에게 내가 만든 값 또는 상태를 전달할 수 있는 방법이 필요하다

 

1. 파일을 이용하는 방법

2. 서블릿의 저장소 (Application/session/Request/Cookie/..)를 이용하는 방법

3. QueryString 을 이용하는 방법

 

 

 

 

get요청하는 함수 안에 결과값을 얻을 수 있는 코드 작성 -> 그리고 그 주소를 얻을 있도록 post함수 안에도 적어준다

 

 

 

 

 

브라우저를 열면 처음엔 get요청으로 갔다가 

 

값을 집어넣고 덧셈을 누르면 post 요청 -> 값을 얻어서 get요청해주는 것을 볼 수 있다

 

 

 

(아직 헷갈림)