https://www.youtube.com/playlist?list=PLieE0qnqO2kTyzAlsvxzoulHVISvO8zA9

JSP란

  • 동적 웹어플리케이션 컴포넌트
  • 클라이언트 요청에 동적으로 작동하고, 응답은 html 을 이용
  • jsp 는 서블릿으로 변환되어 실행 (컴파일러가 자동으로 변환시킨다)
  • MVC 패턴에서 View 로 이용됨

tip) .jsp 파일에서 ctrl + F11 하면 해당 파일에서 서버 실행 가능

JSP 아키텍쳐

.jsp 에서 .java 로 Java 파일로 변환한다. 그리고 .class 로 컴파일한다. 마지막으로 요청한 클라이언트한테 html 파일 형태로 응답한다.

hello.jsp -> hello_jsp.java -> hello_jsp.class -> .html

이 상태에서 리퀘스트가 또 들어올 때에는 Servlet 이 이미 있기 때문에 재활용 할 수 있따. 메모리를 줄이고 속도를 향상시킨다.

JSP 태그

  • 지시자: <%@ %> (페이지 속성)
    1. page: 해당 페이지의 전체 속성. 언어 및 import 문 등을 지정한다.
    2. include: 별도의 페이지를 현재에 삽입. file 속성을 이용한다.
    3. taglib: 태그라이브러리의 태그 사용
  • 주석: <%– %>
  • 선언: <%! %> (변수, 메소드 선언)
  • 표현식: <%= %> (결과값 출력)
  • 스크립트릿: <% %> (자바 코드)
  • 액션 태그: (자바 빈 연결)

액션태그

JSP 페이지 내에서 어떤 동작을 하도록 지시하는 태그.

  • foward: url 주소는 남아있지만, 지정한 페이지의 html 을 출력한다. <jsp:forward page ="sub.jsp"/>

  • include: 현재 페이지에 다른 페이지를 삽입한다 <jsp:include page = "header.jsp" flush="true"/>

    • param: foward 및 include 태그에 데이터 및 값을 전달한다. 이름(name) 과 값(value) 을 지정한다.
<jsp:forward page = "forward_param.jsp">\
	<jsp:param name = "id" value = "root"/>
	<jsp:param name = "pw" value= "1234"/>
</jsp:forward>
<!--  forward_param.jsp -->
<%! String id, pw %>
<%
	id = request.getParameter("id");
	pw = request.getParameter("pw");
%>
id: <%= id%>
pw: <%= pw%>

JSP 내부 객체

개발자가 객체를 생성하지 않고 바로 사용할 수 있는 객체이다. 내부객체는 JSP 컨테이너에 의해 Servlet 으로 변환될 때, 자동으로 객체가 생성된다.

  • 입출력 개체: request, response, out
  • 서블릿 객체: page, config
  • 세션 객체: session
  • 예외 객체: exception

request

  • 요청 관련 메소드 request.getServerName() 처럼 사용하여 서버 이름, 포트번호, 요청 방식, 프로토콜, URL, URI 등을 가져올 수 있다.

  • Parameter 메소드 request.getParameter(String name) name 에 해당하는 파라미터 값을 구한다. getParameterValues(String name) getParameterNames()

response

  • request 객체 관련 메소드 request.getCharacterEncoding() : 응답할 때 문자의 인코딩 형태

    request.addCookie(Cookie) 쿠키를 지정한다.

    request.sendRedirect(URL) 지정한 URL 로 이동한다.