[필독][기초] / JSP [part 2]

2016. 1. 5. 15:16language/jsp

3. 스크립팅(Scripting)

스크립팅은 HTML페이지에 자바코드 조각을 삽입하기 위해 사용한다.
스크립팅에는 선언(Declarations), 표현식(Expressions), 스크립트렛(Scriptlets) 3가지가 있다. 

 

3.1.선언(Declarations)

선언은 자바 변수와 메소드를 JSP 페이지내에서 선언하기 위해선 사용된다.
선언은 JSP 페이지가 첫번째로 로딩될 때 초기화되고 그 후에 같은 페이지내의 다른 선언, 식, 스크립트렛에게 이용된다.
선언은 서블릿으로 변환될때 변수 선언일 경우 서블릿 클래스의 인스턴스 변수로, 메소드 선언일 경우 서블릿 클래스의 메소드로 변환된다.
<%! String name = new String("gildong"); %>
<%! public String getName() {return name;} %>


 

3.2표현식(Expressions)

표현식은 컨테이너에 의해 문자열로 바뀐다.
만약 표현식이 문자열로 변환되지 않는다면 ClassCastException 발생한다.
Hello <%=getName()%> 

 

3.3스크립트렛(Scriptlets)

스크립트렛에서는 자바 문장을 자유럽게 기술할 수 있다.
<%...%> 안의 자바 코드는 서블릿으로 변환될때 _jspSevice() 메소드에 포함된다.


 

4. 액션(Actions)

액션은 객체를 변경하거나 생성하기 위해 사용된다.


 

4.1 <jsp:useBean>

이 액션은 JSP 빈즈를 생성하거나 생성된 JSP 빈즈를 찾는다.
JSP 문서내에서 <jsp:useBean>부분에 이르면 우선 같은 scope 와 id 를 사용하는 객체를 찾는다.
만약 객체를 찾지 못하면 주어진 scope 와 id 속성대로 해당 객체를 생성한다.


<jsp:useBean id="name" scope="application" class="net.java_school.db.dbpool.OracleConnectionManager" />


<jsp:useBean> 액션 속성

속성 설명
id 주어진 scope 에서 객체 인스턴스를 식별하기 위한 키
scope 생성된 빈의 레퍼런스가 유효한 범위, page(기본값), request, session, application
class 객체의 구현을 정의하는 클래스
beanName java.beans.Beans 클래스의 instantiate() 메소드의 아규먼트로 사용할 빈의 이름을 지정
type 해당 빈의 인스턴스를 타입 캐스팅할 때의 타입으로 class 속성에서 정의된 클래스의 수퍼 클래스 또는 인터페이스
<jsp:useBean id="cart" scope="request" class="example.Cart" />
이것은 다음의 scriptlet 코드와 같다.


<%
    example.Cart cart;
    cart = (example.Cart) request.getAttribute("cart");
    if (cart == null) {
        cart = new example.Cart();
        request.setAttribute("cart", cart);
    }
%>


4.2 <jsp:setProperty>

이 액션은 자바빈의 속성값을 셋팅하는 데 쓰인다. JSP 페이지내에 아래와 같은 코드가 있다면, 

<jsp:useBean id="login" scope="page" class="example.User" />
<jsp:setProperty name="login" property="passwd" />


이 코드조각은 아래의 scriptlet 코드를 사용하는 것과 같다. 

<%
    example.User user;
    user = (example.User) pageContext.getAttribute("user");
    if (user == null) {
        user = new example.User();
        pageContext.setAttribute("user", user);
    }
    String _jspParam;
    _jspParam = request.getParameter("passwd");
    if (_jspParam != null && !_jspParam.equals(""))
        user.setPasswd(_jspParam);
%>


<jsp:setProperty> 액션 속성 

속성 설명
name <jsp:useBean>이나 다른 액션에서 정의된 빈 인스턴스의 이름
property 값을 변경하고자 하는 빈 속성
만약 property="*" 라면 HTTP 요청에 전달된 모든 파라미터의 이름과 동일한 이름을 가진 모든 setter 메소드를 호출하여 빈의 속성값을 수정한다.
이때 파라미터의 value가 공백문자("") 라면 이에 상응하는 빈의 속성은 수정되지 않는다.
param HTTP 요청의 파라미터 이름
이 파라미터 value 로 property 속성에 해당하는 빈의 속성값을 변경한다.
value value 에 정의된 문자열로 빈의 속성을 변경한다.
다음과 같이 폼이 작성되었다면, 

<form action="register.jsp" method="post">
    <input type="text" name="id" />
    <input type="password" name="passwd" />
</form>


이를 받는 JSP 페이지 register.jsp 내의 다음 액션은 

<jsp:setProperty name="user" property="*" />


아래 스크립틀렛과 동일하다. 

<%
    String _jspParam;
    _jspParam = request.getParameter("passwd");
    if ( _jspParam != null && !_jspParam.equals("") )
        user.setPasswd(_jspParam);
    _jspParam = request.getParameter("id");
    if ( _jspParam != null && !_jspParam.equals("") )
        user.setId(_jspParam);
%>


다음과 같이 폼이 있다면, 

<form action="register.jsp" method="post">
    <input type="text" name="member_id" />
</form>


위의 폼을 이용한 파라미터 전송시 이를 받는 JSP 페이지(register.jsp) 내의 다음 액션은 

<jsp:setProperty name="user" property="id" param="member_id" />


아래 스크립틀렛 코드와 동일하다. 

<%
    String _jspParam;
    _jspParam = request.getParameter("member_id");
    if (_jspParam != null && !_jspParam.equals(""))
        user.setId(_jspParam);
%>


위의 예제를 보듯이 빈의 멤버 변수명과 폼의 파라미터 명이 서로 일치하지 않을 때 param 속성을 사용한다. 다음은 setProperty 액션 예제이다. 아래 setProperty 액션은, 

<jsp:setProperty name="user" property="id" value="admin" />


다음의 스크렙틀렛 코드와 동일하다. 

<%
    user.setId("admin");
%>


위의 예제와 같이 setProperty 액션은 빈의 속성 값을 설정하는데 사용한다. 

 

 

4.3 <jsp:getProperty>

getProperty 액션은 빈의 속성값을 가져와서 이것을 출력 스트림에 넣는다.


<jsp:getProperty name="name" property="propertyName" />


<jsp:getProperty> 액션 속성

속성 설명
name 빈 인스턴스의 이름
property 얻고자 하는 빈 인스턴스의 속성값

 

 

4.4 <jsp:param>

이 액션은 <jsp:include>, <jsp:forward>, <jsp:plugin> 에 넘겨줄 파라미터를 정의할 때 사용한다.


<jsp:param name="name" value="value" />


4.5 <jsp:include>

이 액션은 JSP페이지에 정적(HTML) 또는 다이나믹 웹 컴포넌트(JSP,Servlets)를 추가할때 사용한다.


<jsp:include page="urlSpec" flush="true">
  <jsp:param ... />
</jsp:include>


<jsp:include> 액션 속성

속성 설명
page 인클루드 되는 소스의 상대경로
flush 버퍼가 비워지는 여부

 

 

4.6 <jsp:forward>

이 액션은 클라이언트가 요청한 자원에서 다른 자원으로 프로그램의 제어를 이동할 때 사용된다.
이를 포워딩이라 한다.
<jsp:forward> 은 <jsp:param> 를 자식 엘리먼트로 가질 수 있는데, 포워딩할 대상 자원으로 파라미터를 전달하기 위해서이다.
page 속성은 포워딩할 대상 자원의 상대주소이다.


<jsp:forward page="relativeURL">
  <jsp:param .../>
</jsp:forward>


4.7 <jsp:plugin>

<jsp:plugin> 은 다운로드나 애플릿,자바빈의 실행을 일으키는 HTML 코드를 생성하는데 사용된다.
이 액션은 한번 해석되어 <object> 나 <embed>로 바뀐다.
속성은 바뀌는 코드에 표현을 위한 설정데이터로 제공된다.

 

 

 

출처 : http://www.java-school.net/jsp/JSP

 

 

도움이 되셨다면 공감을 부탁드립니다. ^^ 



<jsp:plugin type="pluginType" code="classFile" codebase="relativeURL">
   <jsp:params>..
   </jsp:params>
</jsp:plugin>


<jsp:plugin>의 속성

속성 설명
type 인클루드할 플러그인 타입 예를 들면 applet
code 플러그인이 실행할 클래스의 이름
codebase 클래스의 절대 또는 상대경로