728x90

 

JSP 코드 내에 JAVA 코드 삽입 하는 태그

한 번 컴파일된 서블릿(JSP 포함)은 메모리에 올라간 뒤 서블릿을 수정하거나 컨테이너(WAS)를 다시 실행하지 않는 이상 계속 해당 객체를 재활용 합니다.

구분 JSP 태그 용도
지시자 <%@    %> 페이지 속성 지정
주석 <%--  --%> 주석 처리
선언 <%!     %> 변수, 메소드의 선언
표현식 <%=    %> 결과값 출력
스크립트릿 <%     %> JAVA 코드 삽입
액션태그 <jsp:action>    </jsp:action> 페이지 삽입, 공유, 자바빈 사용 등

[ 지시자 : <%@   %> ]

<%@page import="java.util.Arrays"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
  • JSP 페이지가 컨테이너에게 필요한 메세지를 보내기 위한 태그
  • page : JSP 페이지의 전체적인 속성을 지정
  • include : 다른 페이지를 현재 페이지에 삽입

     <%@ include file = "include1.jsp" %>
     <%@ include file = "../include2.jsp" %>

  • taglib : 태그라이브러리의 태그 사용
  • 범위 : JSP 파일 전체 (클래스를 import 할 경우 파일 내 어디서든 접근할 수 있음)

[ 선언 : <%!   %> ]

  • 변수와 메소드를 선언
  • 범위 : 페이지 내 어디서나 접근할 수 있는 전역 변수 및 메소드
  • <% %>에서 변수를 선언하는 것과 다르지 않지만 메소드를 작성할 수 있다는 점에서 다릅니다. 
<%! 
    int a;  int b;
    public int sum(int a, int b) { return a + b; }
%>

<%-- 자바 코드 삽입 --%>
<% 
    a = 10; b = 20;
    out.println(sum(a, b));
%>

[ 스크립트릿 : <%    %> ]

  • 자바 코드를 삽입
  • 기존 자바 언어를 동일하게 사용할 수 있음
  • 최근에는 JSTL 을 주로 사용합니다. https://hahagogo.tistory.com/63

[ 표현식 : <%=   %> ]

  • 변수 또는 메소드의 결과값을 출력
  • 자바 코드를 삽입하는 것보다 더 간단하게 출력 가능
  • 변수나 메소드를 사용할 때 세미콜론(;)을 사용하지 않음
  • <%= sum(a,b) %>

[ 액션태그 : <jsp:action>  </jsp:action> ]

  • <jsp:include> : 다른 페이지의 실행 결과를 현재 페이지에 포함시켜줌
 include 디렉티브는 여러 JSP 파일에서 공통적으로 쓰는 정적인 변수, 
 메소드 등을 모듈화해서 재활용하기 위한 목적으로 사용
 
 <%@ include file = "include1.jsp" %>
_________________________________________________
액션태그의 include는 여러 JSP 파일에서 공통적으로 쓰는 동적인 로직을
모듈화해서 재활용하기 위해 주로 활용 됩니다.

<body>
	<jsp:include page = "include.jsp" flush = "false">
		<jsp:param name = "id" value = "es111"/>
		<jsp:param name = "pw" value = "11111"/>
	</jsp:include>	 
</body>
_________________________________________________
flush = "false" 는 <jsp:include>가 실행돼서 다른 페이지로 넘어가기 전에
출력 버퍼를 모두 클라이언트에게 보낸 후 넘어갈 것이지에 대한 여부를 결정합니다.

 

  • <jsp:forward> : 페이지 간의 제어권을 이동하고 그 페이지에서 실행을 종료한다.

보통 서버 내에서 다른 페이지로 넘겨 로직 수행 후 클라이언트에게 응답할때 이용한다.

JSP는 최종 출력물인 HTML 코드가 완성될때까지 내용을 버퍼에 담았다가 한 번에 출력합니다. 
따라서 <jsp:forward>를 만나게 되면 기존까지 출력을 위해 버퍼에 담았던 
내용을 모두 없애버리고 forward된 페이지로 넘어갑니다.  
다시 이전 페이지로 돌아오지 않습니다. 
 
따라서 forward는 주로 조건에 따라 다른 페이지에 
요청객체를 넘겨주고 추가 파라미터를 넘겨주기 위해 사용됩니다.
_______________________________________________
<jsp:forward page = "<%= pageName %>">
    <jsp:param name = "id" value = "<%= id %>"/>
    <jsp:param name = "pw" value = "<%= pw %>"/>
</jsp:forward>

 

  • <jsp:useBean> : 자바빈(java bean)을 페이지에서 사용할 수 있게함
자바빈을 사용하기 위한 액션태그로 간단히 DTO(데이터 저장을 위한 객체)와 같이 필드와
getter, setter로만 이루어진 자바 클래스입니다. 

id : 인스턴스 이름 (user.getID() 등으로 사용할 인스턴스의 이름 지정)
class : '패키지.클래스' 전체 경로
scope : page, request, session, application의 4가지 중 자바빈 객체를 저장할 곳
scope의 경우 지정하지 않으면 page(해당 페이지 내에서 적용) 가 디폴트
_______________________________________________
<jsp:useBean id = "user" class = "join.TestBean" scope = "request" />

 

  • <jsp:setProperty> : Property 값을 세팅할 때
  • <jsp:getProperty> : Property 값을 가져올 때
<jsp:setProperty> 태그 == setter
Bean 클래스의 필드명(Property)과 <Form> 태그의 name이 일치해야 하며,
클라이언트가 전송한 정보(request)를 한번에 담아주는 기능이 있습니다.
_______________________________________________
<jsp:setProperty name = "user" property = "*" /> <%-- 한번에 자동 저장 --%>
<jsp:setProperty name = "user" property = "id" value = "es11"/>	
<jsp:setProperty name = "user" property = "pw" value = "22" />
_______________________________________________
<jsp:getProperty>는 == getter
<jsp:getProperty name = "user" property = "id"/> 
<jsp:getProperty name = "user" property = "pw"/>
_______________________________________________

 

  • <jsp:param> : include, forward 안에서 사용되며, 인자를 추가할 때
728x90

+ Recent posts