jsp 필기 부분은 누군가 보겠다 생각하고 작성한게 아니라 개인 필기 목적이라...
이 글은 참조하실 때 별로 도움이 되지 않으실 수 있습니다.
- 상세하고 좋은 강의 뉴렉처 유튜브 jsp 인강을 참조하시면 도움을 많이 받으실 수 있습니다.
1. forward
사용자가 보낸 요청을 하나의 서블렛(또는 JSP)에서 처리하다가
다른 서블렛(또는 JSP)로 전달하여 처리를 이어나가는 것
포워드는 요청을 그대로 다른 서블렛 또는 JSP로 전달하는 것이기 때문에
요청에 실려있는 모든 정보도 함께 그대로 전달된다
주로 도착한 요청에 대해,
서블렛에서 자바를 사용한 처리(Control)를 모두 끝마친 후
JSP로 포워드하는 식으로 사용한다(View)
~ 포워드
- 이 서블릿에서 응답을 하지 않고 다른 JSP 또는 서블릿으로 요청을 그대로 전달한다
- 포워드 시 경로는 프로젝트 이름을 제외해야 한다
RequestDispatcher dispatcher = req.getRequestDispatcher("/forward/page/page1.jsp");
dispatch 를 하는 방법으로 일반적으로 포워딩 기능을 지칭한다.
req (요청 객체), resp(응답 객체)를 그대로 전달
dispatcher.forward(req, resp);
2. Attribute
- 다른 페이지로 포워드 할 때 데이터를 실어놓을 수 있는 공간
- Java Object를 자유롭게 사용할 수 있다
req.setAttribute("result", true);
req.setAttribute("result2", new ArrayList<>() {
{
this.add("String");
this.add("Integer");
this.add("Boolean");
this.add("Character");
}
});
3. redirect
리디렉트는 접속한 클라이언트가 해당 주소로 다시 요청을 보내게 만드는 것
실제로 사용자의 웹 브라우저에서 새로운 요청을 만들어 보내기(주소창에 새 주소를 입력)
때문에 이전 요청 객체에 실려 있던 정보는 남아있을 수 없다
전달받은 요청에 따라 알맞은 처리를 하기에는 서블릿이 좀 더 적합하다 (JAVA코드를 사용하기 편하다)
하지만 처리가 끝난 후, 알맞은 응답 페이지를 만들기에는 JSP가 좀 더 편하다
처리는 서블릿에서 진행하고 (컨트롤러 역할)
사용자에게 보여질 화면 생성은 JSP에서 진행(뷰 역할)하는 방식으로 역할을 분담한다
attribute +alpha 내용
보통 이렇게 setAttribute 를 해서 앞의 name 으로 뒤의 value를 getAttribute를 해서 꺼낼 수 있다.
jsp에서 servlet 으로 갔다면 이런식으로 getAttribute를 하지는 않았겠지만
반대로 servlet에서 jsp로 데이터가 포워드 되었다면 출력 방식이 두가지 있다.
출력 방식 2는 jsp에서 out.print 를 <%= %> 방식으로 하는거고
출력 방식 1은 뒤에서 (특히 오늘) el로 배웠다.
expression language -> 변수도 넣을 수 있고 연산자들 넣을 수 있음.
이것은 어디서 왔는가 생각해보면
ProductServlet 클래스에서 왔는데 위처럼 setAttribute를 해서 포워드를 시킬 준비를 하고
getRequestDispatcher 를 통해서 해당 url로 포워드 시킨다.
받을 때 출력방식 1과 2로 받는다.
이렇게 복습하고 나니까 이제 이해가 다시 되는 부분도 있어서 좋다.
사실 다시 읽어보면 알겠지만
객체를 실을 때는 toString을 호출해서 웹 페이지에 출력한다.
객체를 실을 때에는 toString을 까먹지 말자.
마지막으로 Attirbute Scope 이다. 이거는 예제만 찾아보면 쉽게 이해할 수 있는 부분이기에 필기만...
어트리뷰트에는 수명을 설정할 수 있다. (Attribute Scope)
page scope
해당 서블릿(jsp)에서만 사용할 수 있는 어트리뷰트. 해당 서블릿(.jsp)를 벗어나면 사라진다.
request scope
해당 요청에 응답하여 요청 객체가 사라질때까지 유지되는 어트리뷰트.
(forward, include까지는 유지된다)\
session scope
세션이 만료될때까지 수명이 유지되는 어트리뷰트.
클라이언트가 웹 서버에 처음 요청을 보내면 서버로부터 세션ID를 발급받는다.
클라이언트는 해당 세션ID를 요청에 항상 포함시켜 보내며 자신의 세션ID를 통해
개인 락커룸 처럼 세션 객체에 접근할 수 있다.
해당 클라이언트가 세션ID를 보유하고 있는 동안에는
세션 객체에 저장된 어트리뷰트에 계속해서 접근할 수 있다.
application scope
웹 어플리케이션 서버(Apache-Tomcat)에 저장해놓는 어트리뷰트.
서버가 꺼지기 전까지 유지된다.
'Java (국비지원 당시 공부했던 글) > JSP(+servlet)' 카테고리의 다른 글
JSP를 배우기 전에... - 2. HTTP 프로토콜 작동 순서 (0) | 2022.07.24 |
---|---|
JSP를 배우기 전에... - 1. 주소창을 통해 요청 응답을 할 수 있다. (0) | 2022.07.24 |