
myweb에서는 JSP만 가지고 페이지를 제작했다.
HttpServlet 클래스를 상속받아서 활용한다.
HttpServlet 클래스 - 이미 만들어진 것을 잘 활용하면 된다.
요청받고 응답만 잘하면 된다.
class httpservlet 검토해보기
https://docs.oracle.com/javaee/7/api/


웹사이트들의 url을 보면 페이지를 페이지명으로 요청할 수 있지만 명령어로도 요청할 수 있다.
- welcome.jsp(.asp, .php)은 페이지명으로 요청한 것이고
- index.do, search.naver은 명령어로 요청한 것이다.
→ httpservlet을 사용

- 페이지명 .jsp로 요청한 페이지 준비
HttpServlet 클래스
- http 프로토콜 기반의 요청과 응답을 처리해주는 클래스
결과확인
http://localhost:9090/basic05_mvc/wel.do
→ wel.do를 어딘가에 저장해두고 사용해야 한다.
Welcome 서블릿 클래스
- web.xml (배치관리자)에 등록해야한다.
servlet 태그를 ctrl+space로 불러올 수 있다.
class에는 package이름도 작성해줘야한다.

이 부분이 한 부분이라는 걸 servletname 태그에 동일하게 작성해준다.

클래스 안에 커서 놓고 source로 override 자동등록하기



- doGet, doPost 체크한다.
- override 부모가 가진 걸 사용하겠다는 것.

HTML 문서 구조로 응답


- welcome.jsp에 있는 contentType을 넣어주면 된다.
요청한 사용자에게 응답하기 위한 출력 객체
PrintWriter out=resp.getWriter();


🤔 html을 이렇게 불편하게 작성해야 하는것인가..?..
-> JSP는 backend단을 구성하기 힘들고, servlet은 frondend단을 구성하기가 힘들다는 걸 알 수 있다..

▷ 따라서 이 두가지를 섞어서 유효적절하게 사용해야한다.
결과확인

http://localhost:9090/basic05_mvc/control/welcome.jsp
http://localhost:9090/basic05_mvc/wel.do
→ 이 두가지 링크 모두 똑같은 화면이 나와야 한다.
→ class가 있다!
참고 : 교재 2.2.5 콜백메소드와 서블릿객체의 생명주기
HttpServlet 클래스의 계층도
class GenericServlet {}
class HttpServlet extends GenericServlet {}
class LifeCycle extends HttpServlet{}
web.xml에 LifeCycle서블릿 등록

※ 주의사항 : web.xml등록 후 서버 종료후 다시 켜야한다.
LifeCycle.java override시키기
* 생명주기에서 핵심적인 역할을 수행하는 클래스 5가지
- HttpServlet : doGet(), doPost(), sevice()
- GenericServlet : destroy(), init()


override 하고 확인을 위한 출력 코드 작성

1) http://localhost:9090/basic05_mvc/life.do 링크로 접속한다.

2) 새로고침을 3-5번 누르고 콘솔창에 호출된 것 확인한다.

3) 서버 중지시키고 콘솔창 확인한다.


- init은 1번 호출
- doGet, service는 여러번 호출
- destry는 중단했을 때 1번 호출


resp.sendRedirect("control/loginForm.jsp");

doGet(), doPost() 오버라이드 한 후 페이지 이동하는 함수 senRedirect()로 페이지경로 불러오기


http://localhost:9090/basic05_mvc/login.do 로 검색하면 jsp주소 http://localhost:9090/basic05_mvc/control/loginForm.jsp 이 경로로 나옴.


1번과 경로가 달라진다.

action="loginproc.do" .do로 액션 취하기
※주의사항 : http://localhost:9090/basic05_mvc/login.do
여기페이지로 들어가야함.



method="post" 이므로 doPost로 전송받는다.

http://localhost:9090/basic05_mvc/login.do
→ login.do로 접속한다.


폼 전송 완료
원래 front단 출력 방법


- 우리는 밑에있는 2번 코드를 사용할 것이다.
- 왜냐하면 자식페이지에도 사용할 수 있도록 하기 위해선 변수에 담아줘야 한다.
- 2번에선 req 변수를 담아놓았기 때문에 사용할 수 있다.


- 부모페이지와 자식페이지 관계이다.
- 부모페이지에 생성된 req변수를 자식페이지인 form.jsp에서 사용할 수 있다.
1) 먼저 백업파일 만들어놓기

2) LoginProc.java 페이지 만들기

- dispatcher로 자식페이지게 값을 넣어주는 것이다.
- "control/loginResult.jsp" 이 페이지로 넣어주는 것

- 페이지 이동해주는 RequestDispatcher를 사용해서 자식페이지에서 값을 사용할 수 있도록 해준다.

3) loginResult.jsp
가져온 값을 넣어준다.


4) 결과확인



