-- Index --
doPost() / doGet() | java / html 분리 작업하기(이론) | java / html 분리 작업하기(실습) |
요청방식에 맞게 처리 | servlet 과 jsp 로 분리해서 작업 | forward // getAttribute("key") |
1.doPost() / doGet()
- 메세지 요청 방식은 <form method = " " >
- < form >태그의 method 속성 값 ( get 또는 post )
1-1 doPost ()
- 요청 방식에 상관없이 처리해주던 service() 메서드와 달리
- 요청 방식이 post 일 때만 처리해주는 메서드 ( get방식 요청은 처리 안 해준다 )
- get방식으로 요청시 나오는 에러 메시지 확인 ( get방식 요청 안해주는 것 확인 )
1-2 doGet()
- 요청 방식이 get 일때만 처리해주는 메서드 ( post방식 요청은 처리 안 해준다 )
doPost와 doGet 메서드 안에서는
service() 메서드와 같이 java코드들 사용하면 된다.
앞으로는 service() 말고
doPost() 와 doGet()을 이용해서
요청 방식에 맞게 처리되도록 하겠다.
2. java 쪽 front 쪽 분리해서 작업하기 - 이론
- java코드는 백엔드 개발자가 - html 쪽은 프런트 개발자가 작업하는데
- 하나의 파일 안에 모든 것이 같이 있다.
- 협업할 때도 안 좋고 분리하는 작업이 필요하다 느꼈다.
- 분리하는 작업 해보자
# java 쪽 담당하는 servlet이 클라이언트가 입력한 정보를 얻어낸다.
# fornt 쪽 담당하는 jsp가 일을 하려고 봤더니 java 쪽에서 얻어온 데이터가 필요하다.
- 데이터가 servlet 쪽에만 있으니까 문제가 된다.
- 데이터를 넘기는 작업이 필요하다. ( 다른 파일로 분리하다 보니 )
# servlet 쪽 데이터를 어떻게 얻어오지?
- Servlet 안에 존재하는 어떤 객체를 이용 ( req객체 )
- 그 객체에다가 data를 쭉 담아놓고 객체를 jsp에게 전달
- jsp에서는 받은 객체 안에 data를 얻어서 작업 진행
넘겨주는 객체가 무엇인가? 누구인가? --> request 객체!
넘겨주는 작업을 forwarding 이라고 한다.
2-1 흐름 체크 ( MVC 패턴의 기반 )
클라이언트는 일단 servlet으로 요청을 보낸다 (java쪽)
servlet 은 request 객체에 입력받은 data담아서 jsp쪽으로 전달
jsp는 전달받은 데이터로 화면을 만들어서 클라이언트에게 보여주기.
Model -> data를 모델이라 부르게 될 것이다.
View -> jsp
Controller -> servlet ( class )
얘네들을 가지고 정형화된 패턴에 맞춰서 작업을 하는 게MVC패턴
3. java 쪽 front 쪽 분리해서 작업하기 - 실습
# 자바 쪽 ( Servlet 담당 )
3-1. 클라이언트 입력 data 얻기
- 클라이언트(브라우저)에게 입력받은 data(문자열 덩어리)를 -
- java에서 사용할 수 있게 값 얻어와서 변수에 담아주기 - .getParameter
3-2. java 쪽 작업이 끝나면 req객체에 data 담기.
- req.setAttribute("key" , value);
3-3. req 객체를 화면 쪽 담당하는 애에게 떠넘기기
- forward
- RequestDispatcher
- req.getRequestDispatcher("다음타자").forward(req, resp);
# 화면쪽 ( jsp 담당 )
3-4. 넘겨받은 객체에서 data 꺼내기
- forwarding 작업으로 넘어온 req객체 - key값을 이용해서 data 꺼내기
- request.getAttribute(" key ");
#Checkpoint
- 화면 쪽에서 처음 요청하는 데이터는 값을 얻을 때 - getParameter() 로 얻기
- 서버 쪽에서 이동하면서 객체에 담아준 데이터 값을 얻을 때 - getAttribute()로 얻기
#Chekcpoint
- getAttribure의 리턴 타입은 object 타입이다.
- 오브젝트 타입 -> 스트링 타입으로 변환 필요
#Chekcpoint
- 형 변환 - 상속 여부로 판단
- 상속관계에서는 ( ) 명시적 형 변환 사용 가능
- 형제 레벨이나 관련 없는 곳에서는 parse 사용
지금은 간단하게 해서 그렇지만
java코드가 길어지거나
( jsp 파일 위쪽에 <% 메서드,임포트,클래스등 많아짐 %> )
style 적용할 것이 많아지거나 하면
( =서블릿에 – getWrite().print(“<style> ~~<많아짐 )
구분이 안되고 복잡해진다.
그래서 서블릿(java) 화면(jsp) 나눠서 만드는것!
자바작업쉬운 servlet과 + 화면작업쉬운 jsp
장점만 뽑아서 작업을 편리하고 협업도 가능하게 만들고 싶다
forwarding 해서 사용하는 것!
@My Question
미애도 철수한테 일시킬 수 있다.
url에 따라서 각각 담당이 있는 것은 맞다.
근데! 요청이 왔는데 담당자 혼자 다해야 되는 것은 없다.
서블릿 – 서블릿 – jsp – jsp – 서블릿 마음대로 떠넘기기 가능
forwarding 은 여러 개의 서블릿과 jsp 사이를 자유롭게 왔다 갔다 가능
서버내에서 request를 위임할 때 사용하는 것이 forwarding !
'Java 기반 클라우드 융합 개발자 과정 - KH 정보교육원 > 7월' 카테고리의 다른 글
22.07.25 - [ WAS ] session, jsp내장객체 (0) | 2022.08.01 |
---|---|
22.07.22 - [ WAS ] redirect(), 실습문제 (0) | 2022.08.01 |
22.07.20 - [ 8차 시험! - 요구사항 확인 ] (0) | 2022.07.28 |
22.07.19 - [ WAS ] JSP, 스크립틀릿, 스크립틀릿 활용 (0) | 2022.07.28 |
22.07.18 - [ WAS ] 절대경로, @WebServlet, req-resp (0) | 2022.07.28 |