동적인 웹 페이지를 java언어를 이용하여 html, xml 기반으로 작성할 수 있는 기술
Servlet 수정 시 재컴파일 해야 하지만, jsp는 동적으로 컴파일 하기 때문에 재컴파일 하지 않는다
out.println("<html>"))
비지니스로직 처리에 적합<% for(int i=0; i<10; i++ %>
화면 로직에 적합Comments tag : <%-- 주석내용 -->
Directive tag : <%@ 지시자 %>
Declaration tag : <%! 코드 %>
Scriptlet tag : <% 코드 %>
Expression tag : <%= 표현식 %>
지시자 태그
<%@ %>
JSP 페이지 전체에 영향을 미치는 정보를 기술할 때 사용
import에 사용된다
<%@ page import="java.util.ArrayList" %>
페이지를 만들어 끼워넣기 할 때 많이 사용된다 (header, footer)
<%@ include file=“header.html” %
jsp 내부에서 EL, Action Tag Library, JSTL를 사용할 때 사용된다
<%@ taglib url=“경로” prefix=“a” %>
선언식 태그
<%! %>
jsp로 생성퇴는 클래스의 전역변수 및 추가 메서드를 작성
<%! public static final String PI = 3.14; %>
<%!
public String test(){
return “testName”;
}
%>
_japService 메서드의 수행 내용을 작성할 때 사용
<% %>
<%
int age = 2;
%>
<% if(age>19){ %>
<p>성인</p>
<% } else{ %>
<p>미성년자</p>
<% } %>
표현식 태그
<%= %>
java의 데이터를 HTML 컨텐츠로 표현하기 위해 사용
Servlet 코드에서 out.println() 역할을 수행하는 태그
<%
int age = 20;
%>
<%if(age>19){ %>
<h3><%=age %>살은 성인입니다</h3>
<% }else {%>
<h3><%=age %>살은 미성년자입니다</h3>
<%} %>
HttpServletRequest 객체 참조 변수
서블릿에서 수행하는 요청에 대한 처리를 JSP에서도 바로 사용 가능하도록 한다
<주요 메서드>
HttpServletResponse 객체 참조 변수
<주요 메서드>
HttpSession 객체 참조 변수
브라우저와 java가 공유하는 데이터를 저장하는 공간으로 페이지가 넘어가도 데이터를 저장하고 있다 (ex 로그인 정보)
application > session > request > page
Model - View - Controller
웹 어플리케이션의 비지니스 로직, 수행할 서비스를 담당한다
사용자가 요청하거나 요청한 정보를 응답받아 볼 수 있는 화면을 담당하며 JSP, HTML 등을 통해 표현한다
사용자의 요청을 전달받아 응답 처리를 위한 Service를 호출하고 결과를 View에 전송하는 역할
전달받은 정보를 바탕으로 사용자 요청을 분석, 서비스에 전달할 VO객체를 생성하여 전달하고 Service로부터 결과를 리턴 받아 관련된 View 화면에 응답
JSP가 controller를 맡아서 처리하는 것
소규모 프로젝트에 적합
사용자의 요청을 받아 비니지스 로직은 Servlet이 수행하고, 수행 결과를 통한 View는 JSP로 구현하는 방식
응답할 view 페이지가 동적 페이지인 경우
사용자의 요청을 다른 서블릿이나 JSP 페이지에 전달할 때 사용
// request 객체를 통한 RequestDistpatcher 객체 생성(매개변수가 결과를 보낼 페이지)
RequestDispatcher view = request.getRequestDispatcher("/result.jsp");
// 결과페이지에 전달할 값 저장("member"라는 key값으로 membe객체 전달
request.setAttribute("key", value);
// request와 response를 인자값으로 전달하여 정보 전송
// forward해주지 않으면 이동하지 않는다
view.forward(request, response);
응답할 view 페이지가 정적 페이지인 경우
동적으로 화면을 생성할 필요가 없으므로 응답 view에 정보를 전달할 필요가 없다
이때 HttpServletResponse객체의 sendRedirect()를 사용한다
//클라이언트에게 /error.html 페이지를 요청하도록 함
response.sendRedirect("/error.html");
한 가지 요청을 받아 수행하여 응답하는 HttpServletRequest객체의 request 수행과 달리 response는 요청을 받고 응답할 수 있는 페이지를 알려준다. 사용자는 페이지를 다시 요청하여 페이지로 이동하는데, response의 역할은 사용자를 다른 페이지로 보내는 것으로 끝난다