프로그래밍언어/WEB

JSP 기본 문법 - 주석, 스크립트 태그

헬로월드! 2020. 4. 3. 12:12

 

 

1. JSP 기본 문법

  • 스크립트 태그 (Script Tag) 
종류 태그  사용 용도
지시어 <%@ ... %> JSP 페이지의 속성을 기술
선언 <%! ... %> 멤버 변수 선언과 메소드 정의
표현식 <%= ... %> 변수, 계산식, 메소드 호출 결과를 문자열 형태로 출력
스크립트릿 <% ... %>  순수 자바 코드 기술
주석 <%-- ...  --%> JSP 페이지의 설명 기술
  •  액션 태그 (Action Tag ) - JSP 페이지 간 흐름 제어, 자바 애플릿 지원 ,자바 빈즈 컴포넌트와 JSP 상호작용 지원XML 형태의 태그만 붙일 수 있다.
액션 사용 예 기능
include <jsp: include page="kk.jsp" /> 다른 페이지를 현재 페이지에 포함시킨다.
forward <jsp: forward page="kk.jsp" /> 현재 페이지의 제어를 다른 페이지로 전달한다.
useBean

<jsp:useBean scope="page" id="cls"

class="kk.MyBean" />

kk 패키지의 MyBean클래스를 cls 라는 이름으로 page범위에서 사용할 것을 선언한다.
setProperty <jsp:setProperty name="cls" property="kkk" /> useBean 으로 선언된 빈즈 클래스의 setkkk() 메소드를 호출한다.
getProperty

<jsp:getProperty name="cls" property="kkk" />

useBean 으로 선언된 빈즈 클래스의 getkkk() 메소드를 호출단다.
plugin <jsp:plugin type="applet/bean" code="class"></jsp:pulgin> 애플릿이나 빈즈 클래스 플러그인 형태로 로딩한다.
param <jsp: param name="user" value=
"아이린" />
include , forward 액션에서 사용할 수 있는 파라미터를 설정한다. 
  •  커스텀 태그 (Custom Tag)  

 

2. 주석 

프로그램 소스에 텍스트로 된 간단한 설명문 넣기 

JSP 특성상 HTML , Java ,JSP 코드가 모두 섞여 있으므로 주석도 혼용해서 사용한다.

 

1) HTML 주석 

<!-- 이것은 주석입니다. -->

HTML 주석은 원래 HTML 문서에 사용하는 주석이지만 JSP 문서에서도 사용할 수 있다.

웹 브라우저에서 소스보기를 (F12 ) 를 했을 때 주석 내용을 확인할 수 있으므로 주석의 내용이 외부로 노출되어도 상관없을 경우에 사용한다. 

 

2) JSP 주석

<%-- 이것은 주석입니다 --%>

프로그램 코드와 관련한 주석이 필요할 때, HTML 주석과 달리 클라이언트로 전달되지 않는 주석이다.

 

3) 스크립트릿 부분 

//이것은 주석입니다.
/*이것도 주석입니다.*/
모든 자바 주석 사용가능결겨

 

JSP 주석 
.java 파일

<!-- --> 은 보이지만 <%-- --%> 는 보이지 않는 다는 것을 알 수 있음

HTML 파일

3. 스크립트릿 

< % 이것은 실행 코드 ; %> 

  • JSP 에서 순수 자바 코드를 기술하고자 할 때 사용 
  • JSP 의 가장 특징적인 부분
  • JSP 내에서 가급적 스트립트릿 안 쓰는 것을 권장 ( 이유는, JSP 내에 복잡한 프로그램 로직이 많이 들어가게 되면서 유지보수가 어려워지고 자바 코드를 이해할 수 없는 그래픽 디자이너 등과의 협업에 어려움이 따르기 때문이다)
  • EL (표현언어, Expression Language), JSTL 을 비롯한 커스텀 캐그 라이브러리, JSP 빈즈 사용 권장
  • 최신 프레임워크와 MVC 패턴을 적용하다보면 스크립트릿은 사용할 일이 거의 없다. 

 

결과
방법2

방법 2 를 남용할 경우 버그 우려가 높고 가독성이 떨어지는 문제가 있다.

따라서 가능한 태그 라이브러리나 JSP 빈즈를 사용하는게 좋다.

결과

4. 표현식 

<%= 표현 %>

  • 표현식의 결과값을 출력 ( 간단한 데이터, 메소드 호출)
  • 코드 마지막에 ; (세미콜론) 사용하지 않아야함
  • 결국 out.println() 으로 변환되는 것과 마찬가지이므로, 사용할 수 있는 구문은 out.println() 인자로서 적합한 형태를 유지해야한다.
  • 메소드 호출: <%= calculator()%>
  • 변수 출력: <%= result%>
  • 사칙 연산과 문자열 결합 : <%= "i+2=" +(i+2) +"입니다" %>
  • 표현언어 사용이 권장된다!

5. 선언 

<%! 선언 %>

  • JSP 에서 메소드나 멤버 변수를 선언 하기 위한 구문 
멤버변수? 클래스 멤버로 선언되는 변수, 메소드 외부에 선언된다.
  • 구조적으로 JSP 소스코드에 자바 코드를 사용되는건 권장 X -> 빈즈나 별도의 자바 클래스 만들어 사용 

6. 지시어

: 해당하는 JSP 파일의 속성을 기술하는 곳으로 JSP 컨테이너에게 해당 페이지를 어떻게 처리해야 하는지 전달하기 위한 내용을 담고 있다. 

  • Page 지시어 : 대개 소스코드 맨 앞에 위치 <%@ page 속성1="속성값1" 속성2="속성값2"..... %>                      
language 스크립트 언어의 유형을 정한다.
import  JSP 내에서 사용할 외부 자바 패키지나 클래스의 불러오기를 정한다.
session 세션 사용 유무를 정한다.
buffer 버퍼의 크기를 정한다.
autoFlush 버퍼의 내용을 자동으로 비운다.
errorPage 현재 페이지에서 오류가 발생할 경우 호출될 페이지를 정한다
isErrorPage 오류만을 처리하는 페이지로 지정한다.
contentType  MIME 형식 지정 및 캐릭터셋을 정한다.
pageEncoding contentType 과 동일한 기능을한다.
extends 현재 JSP 페이지를 특정 클래스를 상속한 클래스로 작성한다.

- contentType : 현재 JSP 페이지를 클라이언트에서 처리하기 위한 컨텐츠 유형을 지정     

속성값: text/html (기본값): 기본으로 ISO-8859-1 의 문자셋이 지정

         text/html; charset=방식 : MINE 에서의 문자셋도 함께 지정 가능

 

-pageEncoding 속성: 컨테이너에서 처리할 JSP 페이지의 인코딩 방식을 기술

기본적으로 pageEncoding을 사용하고 , 클라이언트 응답 결과를 확인하기 위해 contentType 을 병행해서 사용한다.

속성값: ISO-8859-1 (기본값) 

 

-import 속성 : 자바의 import 문장을 대체하는 속성, 한 행으로 기술하거나 여러 행에 걸쳐 page 지시어와 함께 기술할 수도 있다. 

 

-errorPage 속성: 현재 JSP 페이지에서 오류가 발생할 경우 호출할 페이지를 지정한다.

 

-isErrorPage 속성: errorPage 속성에 설정된 오류 처리 파일로 다른 용도로는 사용 X, 오류처리에만 사용한다.

 

 

지시어 <%@ ... %> ,errorPage : 현재 JSP 페이지에서 발생한 오류를 처리하는 별도의 JSP 페이지 기술

 

 

isErrorPage 속성: 현재 JSP 페이지는 오류 처리를 위한 전용 페이지
오류가 났을 경우 결과

  • include 지시어 : include 지시어는 현재 JSP 파일에 다른 HTML 이나 JSP 문서를 포함하기 위한 기능을 제공한다.include 액션과 비슷한 기능을 하는데 그 차이점은??? include 액션 부분에 정리!<%@ include file ="포함할 파일_이름"%>

include 는 여러 페이지에 공통으로 들어가는 내용을 관리할 때 매우 유용! 

  • taglib 지시어  : JSP 기능을 확장하기 위해 만들어진 커스텀 태그 라이브러리를 JSP 파일에서 사용하기 위한 지시어

       <%@ taglib uri="/META_INF/mytag.tld" prefix = "mytag" %>

 

 

7. 액션 태그 - include 액션

include 액션은 다른 파일을 불러온다는 측면에서 include 지시어와 개념이 유사하다. 하지만 include 지시어는 해당 파일을 포함시킨 후 컴파일 하는 것에 비해, include 액션은 실행 시점에서 해당 파일을 호출하여 그 결과를 포함한다는 점에서 차이가 있다.

 

동적인 페이지를 포함시킬 경우 사용하는 것이 좋다. 

include 지시어는 각각의 파일을 하나로 컴파일 하기 때문에 잘 바뀌지 않는 정적적인 페이지를 포함시킬 때 사용하는 것이 좋다! 

<jsp: include page="포함할 파일 _이름"/>

 

특징) 변수를 전달할 수 있다. include 액션에서 JSP 파일을 포함하거나 forward 액션을 통해 다른 JSP 로 포워딩할 때 

param 태그를 이용해 속성 값을 전달할 수 있다. 전달된 매개변수 값은 request.getParameter() 메서드를 통해 접근할 수 있다.

 

include_action.jsp
footer.jsp
결과

 

8. 액션 태그 - forward 액션  

forward 액션은 include 액션과 유사하지만 현재 페이지를 완전히 다른 페이지로 전환할 때 사용한다. 즉 , include 액션은 메인 실행 파일이 다른 처리들을 포함하는 개념이지만 forward 액션은 페이지 제어권을 완전히 넘겨버린다.

<jsp:forward page="포워딩할 이름" />

forward_action.jsp
footer.jsp
결과

9. 액션태그 -plugin 액션

plugin 액션은 웹 브라우저에서 자바 플러그인을 사용하여 자바 애플릿이나 자바 빈즈 컴포넌트를 실행할 수 있게 한다.이는 웹 브라우저 대부분이 자바를 플러그인 형태로 지원하므로 브라우저에 내장된 자바 가상 머신으로는 스윙 애플릿 등을 실행할 수 없는 점을 보완하려고 나온 개념이다. 

 

10. 액션태그 - userBean 액션

액션에서 가장 중요한 부분이다 꼭 기억!

< jsp:useBean id="변수이름" class="빈즈 클래스_이름"/>

<jsp:setProperty name="변수이름" property="속성이름"/>

<jsp:getProperty name="변수이름" property="속성이름"/>