memo6759 님의 블로그
2025-11-14(서블릿, jsp 구조 파악, 스프링) 본문
6. 요청재지정(화면이동)
- 클라이언트가 최초 요청한 서블릿이 응답하지 않고(혹은 응답하더라도)
다른 web application(html,jsp,서블릿)이 응답되도록
서블릿 내부에서 재요청하는 것을 의미
- 서블릿에서 뷰를 분리하기 위해서 반드시 알아야 하는 개념
- MVC패턴을 적용하기 위해서 반드시 알아야 하는 개념
1) 요청재지정방법
- response객체의 sendRedirect를 이용하는 방법
- RequestDispatcher가 제공하는 forward : 서블릿에서 주로 사용,스프링에서는 default
- RequestDispatcher가 제공하는 include : jsp에서 주로 사용
2) 데이터공유
- 데이터를 서블릿에서 공유하고 분리된 뷰(응답화면)에서 꺼내서 써야하는데 html파일은 자바코드를 사용할 수 없다.
- 자바코드도 쓰고 html태그도 쓸 수 있는 jsp를 이용
- 데이터의 공유는 어디에 공유할 수 있는지 scope가 있다.(page, request,session,application이 있다.)
- 각각의 scope에 해당하는 객체가 존재하며 이 객체 내부에는 데이터를 공유할 수 있도록 공유메소드를 갖고 있다.
- request scope객체(ServletRequest)
- session scope객체(HttpSession)
① 데이터공유하기
scope객체.setAttribute("공유할 객체의 이름",공유할 객체)
-------------- ---------
공유명 자바에서 사용되는 모든 객체를 공유할 수 있다.
개발자마다 다른 객체를 공유할 수 있으므로 Object(다형성)
② 공유된 객체 꺼내기
=> 공유된 객체 타입이 Object이므로 실제 공유된 객체의 타입으로 casting해야 한다.
공유한객체의타입 변수 = (공유객체타입)scope객체.getAttribute("공유한 객체의 이름")
---------
공유될때 타입이 java.lang.Object이므로 꺼낼때 캐스팅해주어야 한다.
7. sendRedirect
[문법]
HttpServletResponse의 sendRedirect를 이용
response.sendRedirect("요청재지정될 web application path")
------------------------------
context부터 정의해야 한다.
- 최초 요청됐던 서블릿이 response하고 다시 재요청해서 실행하는 방법이므로 데이터를 공유할 수 없다.
- 로그인 아이디나 패스워드를 잘못입력한 경우 로그인 페이지를 다시 보여주기 위한 방법
- 스프링MVC는 기본이 forward
- 두 번의 요청이 처리되므로 요청재지정한 application의 path로 주소표시줄이 바뀐다.
---------------------
두 번째 요청된 application
8. forward
[문법]
RequestDispatcher rd = request.getRequestDispatcher("요청재지정할 web application path")
rd.forward(request객체,response객체) --------------------------------------
response하지 않고 한 번의 요청으로 서블릿과 jsp가 실행되므로
path는 context명은 뺴고 정의하기
- 가장 일반적으로 사용되는 방법
- 최초 요청으로 서블릿,jsp가 실행되므로 데이터 공유가 가능
- 한 번의 요청으로 모든 application이 실행되므로 주소표시줄이 첫 번째 요청된 path로 남아있다.
9. include
RequestDispatcher rd = request.getRequestDispatcher("요청재지정할 web application path")
rd.include(request객체,response객체) --------------------------------------
response하지 않고 한 번의 요청으로 서블릿과 jsp가 실행되므로
path는 context명은 뺴고 정의하기
- 최초 요청으로 서블릿,jsp가 실행되므로 데이터 공유가 가능
- 한 번의 요청으로 모든 application이 실행되므로 주소표시줄이 첫 번째 요청된 path로 남아있다.
- forward와의 차이점은 서블릿에서 jsp로 요청재지정하여 jsp가 실행되면 jsp의 실행결과를 가지고 다시 최초 요청된
서블릿으로 되돌아와서 서블릿이 response된다.
즉, 서블릿이 요청재지정된 jsp의 실행결과만 포함하는 개념
MVC 패턴
- view : html 화면
- model : DTO, DAO
- Controller : severlet
'HDC 학습일지' 카테고리의 다른 글
| 2025-11-18(Spring) (0) | 2025.11.19 |
|---|---|
| 2025-11-17(Spring) (1) | 2025.11.17 |
| 2025-11-13(백엔드 - Servlet) (0) | 2025.11.13 |
| 2025-11-12(React -final) (1) | 2025.11.13 |
| 2025-11-11(react) (0) | 2025.11.12 |