2014년 11월 26일 수요일

[심심풀이]Struts Bean 커스텀 태그[자바개발자교육/자바교육/자바강좌/자바,Spring교육잘하는곳/자바,spring교육추천/자바실무교육/JAVA/JAVA교육/JAVA스프링학원/JAVA실무교육]

Struts Bean 커스텀 태그 

자바 빈과 관련된 프로퍼티에 접근 하는데 이용되며 페이지 scope 속성들과 변수의 기술을 통해 페이지의 나머지 부분에서 쉽게 접근 할 수 있도록 자바 빈을 정의하는데 사용 됩니다. 

또한 Bean 태그 라이브러리의 태그들에서는 요청 쿠키, 헤더 그리고 파라미터 값을 기반으로 하는 새로운 빈을 생성 해야 하는 경우 편리하게 이용 할 수 있는 메커니즘도 제공 합니다. 

아래는 Bean 태그 라이브러리의 커스텀 태그들 입니다. 


Custom tags within the Bean tag library 

cookie : 지정한 요청 쿠키의 값에 근거해 변수를 정의 
define : 지정한 빈 프로퍼티에 값에 근거해 변수를 정의 
header : 지정한 요청 헤더의 값에 근거해 변수를 정의 
include : 동적인 애플리케이션 요청의 응답을 로드해 빈으로 이용 할 수 있게 함 
message  : 국제화된 메시지를 표시 
page : 지정한 아이템을 빈으로써 페이지 문맥에서 꺼냄 
parameter : 지정한 요청 파라미터에 근거해 변수를 정의 
resource : 웹애플리케이션의 자원을 로드해 빈으로 이용 할 있게 함 
size : Collection 또는 Map 요소의 개수를 포함한 빈을 정의 
struts : 지정한 스트럿츠 내부 설정 객체를 빈으로 
write : 지정한 빈 프로퍼티의 값을 표시 


1.define 태그 

지정한 빈의 프로퍼티 값을 꺼내 현재 페이지의 나머지 부분에서 접근 할  수 있도록 정의 합니다.반환되는 프로퍼티 값이 자바 원시 데이터 타입인 경우를 제외하고는 형 변환이 일어 나지 않습니다. 단 자바 원시데이터 타입인 경우엔 이 원시 데이터 타입의 래퍼형으로 변환 됩니다. (int 형이면 Integer로…) 


[예:게시판의 VIEW 구현 시 이용] 

<td width=490 style= "padding-left:10 "> 
<bean:define id="content” name="boardForm" property="boardValue.content"/ > 
<%= BoardUtils.convertHtmlBr((String)content) %> 
< / t d > 

2.header 태그 

name으로 지정된 요청 헤더 값을 꺼내 String 타입의 페이지 scope 속성으로 정의 

multiple 속성에 null이 아닌 값을 설정 한 경우 id 속성은 HttpServletRequest.getHeader() 대신 HttpServletRequest.getHeaders()를 호출하여 얻은 결과값을 포함 합니다. 

[예제: 아래 예제는 요청 헤더와 헤더 값을 출력 합니다.] 

<%@ page pageEncoding="euc-kr" %> 
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> 
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> 
<html> 
<body> 
<% 
java.util.Enumeration names = 
((HttpServletRequest) request).getHeaderNames(); 

while (names.hasMoreElements()) { 
String name = (String) names.nextElement(); 
%> 

<bean:header id="head" name="<%= name %>"/> 
 <br>Header Name : <%= name %> = <%= head %> 
  
<% 

%> 
</body> 
</html> 

[결과] 

Header Name : accept = */* 
Header Name : accept-language = ko,en;q=0.5 
Header Name : accept-encoding = gzip, deflate 
Header Name : user-agent = Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322) 
Header Name : host = localhost 
Header Name : connection = Keep-Alive 
Header Name : cookie = JSESSIONID=EF8A4D1130ADFD06F6E78BE2A7BA9801 

3.include 태그 

지정한 애플리케이션 컴포넌트(또는 외부의URL)에 내부적으로 요청을 보내 수행 하고 이때 얻은 응답을 String 타입의 빈으로 만듭니다. 이때 생성된 빈은 id 속성의 값을 변수 명으로 가지며 페이지 scope에 저장 됩니다. 

이 태그는 <jsp:include>와 비슷합니다. 그러나 표준 <jsp:include>에서는 해당 컴포넌트를 수행해서 얻은 응답을 직접 출력 스트림에 쓰는 반면 Bean 태그라이브러리의 include 태그에서는 페이지 범위를 가지는 빈으로 저장하는 것이 차이가 있습니다. 

아래 처럼 include 태그를 이용해서 페이지 범위의 빈에 저장 

<bean:include id="footerSpacer" page="/long/path/footerSpacer.jsp"/> 

이제 페이지의 적절한 곳에서 <bean:write>를  이용하여 출력 할 수 있습니다. 

<bean:write name="footerSpacer" /> 

[예제-test.jsp] 
<%@page pageEncoding="euc-kr" %> 
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> 
<html> 
<body> 
<bean:include id="inc" page="/include.jsp"/> 
<br> 
원래 페이지의 내용...<br> 
<bean:write name="inc"/> 
<br>========================<br> 
<bean:write name="inc"/> 
</body> 
</html> 

[include.jsp] 
include되는 페이지의 출력... 


4.message 태그 

스트럿츠 태그 라이브러리에서 가장 널리 이용되는 태그 중 하나이며 지정된 메시지 키를 이용하여 국제화된 메시지를 꺼내와 출력 스트림에 출력 합니다. “{0}”와  같은 파라미터 치환을 5개까지 허용 합니다. 

메시지를 꺼내오기 위해서는 key 속성을 사용하여 직접 지정 할 수도 있으며 name과 property 속성을 사용하여 빈에서 간접적으로 꺼내 올 수도 있습니다. 그리고 bundle 속성에는 MessageResources 객체를 얻어 올 수 있는 애플리케이션 범위의 빈의 이름을 지정 할 수도 있습니다. Locale 속성을 지정하지 않은 경우 필요한 locale은 세션에서 키 Action.LOCALE_KEY를 사용하여 얻습니다. 

아래는 간단한 예 입니다. 

<head> 
<html:base/> 
<title><bean:message key="title.login"/></title> 
    </head> 

5.parameter 태그 

지정된 요청 파라미터의 값을 꺼내 String 타입의 페이지 범위의 속성으로 정의 합니다. 만약 multiple 속성에 null 이 아닌 값이 설정 될 경우에는 getParamter() 대신 getParameters() 메소드를 호출하고 String[] 타입의 페이지 범위 속성을 정의 합니다. 

<bean:parameter id="param1" name="param1"/> 
<bean:parameter id="param2" name="param2" multiple="true"/> 
<bean:parameter id="param3" name="param3" value="UNKNOWN VALUE"/> 


6.resource 태그 

지정된 웹 에플리케이션 자원의 값을 꺼내 input 속성의 값에 따라 InputStream이나 String 타입의 한 형태로 사용 할 수 있게 합니다. input 속성의 값이 null이 아닌 값인 경우 InputStream을 생성하며 그 외에는 String으로 로딩 합니다. 

<bean:resource id="webxml" name="/WEB-INF/web.xml"/> 

얻어진 정보를 JSP 페이지에서 보기 위해서는 아래처럼 하면 됩니다. 

<pre> 
<bean:write name="webxml" filter=”true” /> 
</pre> 

[예제] 
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> 
<html> 
<body> 
<bean:resource id="webxml" name="/WEB-INF/web.xml"/> 
<pre> 
<bean:write name="webxml" filter=”true” /> 
</pre> 
</body> 
</html> 

7.write 태그 

빈 프로퍼티의 값을 꺼내 String 형태로 출력하는 태그로써 자주 사용되는 것입니다. 즉 자바 빈에서 속성 값을 get 하는 것 입니다. 만약 filter 속성이 “true” 이면 “<” 인 경우 <로 변환 됩니다.



 [100%환급,개발자전문]빅데이터/SQL/자바/스프링/안드로이드/닷…오라클자바…12-272624
 [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육…오라클자바…12-111895
53 [평일100%환급7건]Spring,자바&JSP,안드로이드,웹퍼블리싱,C#닷… 오라클자바…03-151714
52 [주말]C#,ASP.NET마스터 오라클자바…01-311823
51 [기업100%환급,평일주간]SQL기초에서스키마오브젝트,PLSQL,힌트… 오라클자바…01-312674
50 [평일주간야간,주말]C기본&자료구조,알고리즘 오라클자바…01-311428
49 [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정-… 오라클자바…01-191751
48 [평일야간,주말]안드로이드개발자과정(Android기초실무) 오라클자바…01-111638
47 [평일야간,주말주간야간]JAVA,Network&JSP&Spring,MyBatis,Hiber… 오라클자바…01-032154
46 [100%환급,개발자전문]빅데이터/SQL/자바/스프링/안드로이드/닷… 오라클자바…12-272624
45 [평일주간]NoSQL,MongoDB,빅데이터기초과정 오라클자바…12-191858
44 [평일주간야간, 주말]웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX… 오라클자바…12-141828
43 [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… 오라클자바…12-111895
42 [평일주간]빅데이터하둡기초과정(BigData Hadoop) 오라클자바…12-091489
41 [평일야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 오라클자바…12-011718
40 [기업100%환급]오라클&자바웹스프링신입과정3주(SQL,JAVA,JSP,Se… 오라클자바…12-011897
39 [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) 오라클자바…12-011363

댓글 없음:

댓글 쓰기