1. JSTL core 선언법
JSP 상단에
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
2. value 가져오는 법
controller 단에서 request.setAttribute("aaa",aaa);
같은 식으로 넣어 줬다면
JSP 단에서 ${aaa) 라고 호출해 주면 된다.
DTO (set,get 메소드방식) 으로 되어 있는 객체의 값을 불러오기 위해선
${aaa.bbb) 이런식으로 참조 방식으로 가져오면 된다.
3. if 문
<c:if test="${TagDTO.TAG_SELECTED!=null && TagDTO.TAG_SELECTED!=''}">
~~~~~
</c:if>
4. 조건문 (if~else 가 choose,otherwise 라는 방식의 태그로 표현된다)
<select name="TAG_NM2">
<c:forEach var="TagDTO" items="${SecondDefaultList}">
<c:choose>
<c:when test="${TagDTO.TAG_SELECTED!=null && TagDTO.TAG_SELECTED!=''}">
<option value="${TagDTO.TAG_NM}" selected>${TagDTO.TAG_NM}</option>
</c:when>
<c:otherwise>
<option value="${TagDTO.TAG_NM}">${TagDTO.TAG_NM}</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
5. 반복문
위의 예제에서 보다 시피 c:forEach 태그로 사용한다.
forEach 태그에는 몇가지 attribute 가 있는데
5-1. var : 태그 안에서 변수로 사용될 이름 (list 안에 들어가 있을 변수를 표현할 이름임)
5-2. items : list 이름 (위의 예제에서 처럼 request 객체 안에서 list 형식의 변수를 가져오는게 일반적임)
지원되는 collection 클래스 - Collection, Map, Iterator, Enumeration, Array형식,
5-3. begin : 시작 번호 (list for문 돌릴 시작 index)
5-4. end : 마지막 번호 (list for문 돌릴 마지막 index)
5-5. step : 한번 loop 돌때 index 를 몇개 증가 시킬 것인가(표시 안해주면 1씩 증가됨)
5-6. varStatus : loop 상태를 알아보는 변수
<c:forEach items="${ProductDTO.tags}" varStatus="status" var="Tags">
이렇게 설정 하였을 경우 태그 안에서
${status.current} -> 현재 반복 라운드 아이템
${status.index} -> 현재 반복 라운드의 제로 기반(zero-based) 인덱스 (시작이 0부터라는 뜻)
${status.count} -> 현재 반복 라운드의 1 기반(one-based) 인덱스 (시작이 1부터라는 뜻)
${status.first} -> 현재 라운드가 반복을 통한 첫 번째 패스임을 나타내는 플래그(결과는 당연히 true, false 형태)
${status.last} -> 반복현재 라운드가 반복을 통한 마지막 패스임을 나타내는 플래그 (결과는 당연히 true, false 형태)
${status.begin} -> begin 애트리뷰트의 값
${status.end} -> end 애트리뷰트의 값
${status.step} -> step 애트리뷰트의 값
이런 방식으로 사용할 수 있다.
varStatus 는 c:forEach 태그 안의 Attribute에서도 쓸 수 있다.
예를들어 <c:forEach items="${ProductDTO.tags}" varStatus="status" var="Tags" begin="${status.begin}" end="${status.end}">
도 가능하다.
TRACKBACK :: http://shonm.tistory.com/trackback/378
JDOM 이라는 API 를 통해 간단히 XML 을 만들 수 있다.
아래 코드를 보면 바로 이해가 될 것으로 보인다.
(String 으로 출력 하는 방식과 file 로 만드는 방식을 모두 정리 하였다.)
import java.io.FileOutputStream;
import java.io.IOException;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
public class XmlGene {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Document doc = new Document();
Element root = new Element("generator");
Element pack = new Element("package");
Element pack_name = new Element("package-name");
root.addContent(pack);//root element 의 하위 element 를 만들기
pack.addContent(pack_name); //package element 의 하위로 package-name 만들기
pack_name.setText("com.ysci.theme.aaa");
//package-name element 에 value 값을 text 로 넣어 주기
doc.setRootElement(root);
try {
FileOutputStream out = new FileOutputStream("d:\\test.xml");
//xml 파일을 떨구기 위한 경로와 파일 이름 지정해 주기
XMLOutputter serializer = new XMLOutputter();
Format f = serializer.getFormat();
f.setEncoding("UTF-8");
//encoding 타입을 UTF-8 로 설정
f.setIndent(" ");
f.setLineSeparator("\r\n");
f.setTextMode(Format.TextMode.TRIM);
serializer.setFormat(f);
serializer.output(doc, out);
out.flush();
out.close();
//String 으로 xml 출력
// XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat().setEncoding("UTF-8")) ;
// System.out.println(outputter.outputString(doc));
} catch (IOException e) {
System.err.println(e);
}
}
}
===============================================================================
결과는
<?xml version="1.0" encoding="UTF-8"?>
<generator>
<package>
<package-name>com.ysci.theme.aaa</package-name>
</package>
</generator>
와 같이 나온다.
TRACKBACK :: http://shonm.tistory.com/trackback/377
Spring 에서는 SP EL 이라는 강력한 커스텀 태그가 있다.
그리고 자동으로 Properties 파일을 읽어서 JSP 파일이든 JAVA 파일이든
읽어 줄 수 있다. (spring 3.0 이상 버전 기준)
바로 사용 방법을 알아 보도록 하자.
1. properties 파일 작성 (config.properties)
css.path=/cms_developer_poc/css
js.path=/cms_developer_poc/js
root.path=/cms_developer_poc
2. dispacher-servlet.xml 에 properties 파일 설정
<!-- for config file load, using SpEL -->
<util:properties id="config" location="classpath:conf/spring/config.properties" />
3. JSP 파일에 사용
<script src="<spring:eval expression="@config['js.path']"/>/jquery-1.7.1.js" type="text/javascript"></script>
4. JAVA 파일 사용
@Value("#{config['root.path']}")
public String RootPath;
properties 에서 사용된 key 값으로 불러와 주기만 하면 되므로
상당히 간단하다.
여기서 문제는 한글이 지금 상태에서는 안된다는 것이다.
properties 파일은 기본적으로 아스키 값인데 한글은 유니코드로 입력이 되어야 하므로
입력이 안되는 문제가 발생하는 것인데
이클립스 에서라면 간단한 해결 방법이 있다.
1. 이클립스 상단의 Help 메뉴의 install New Software 항목으로 가자
2. http://propedit.sourceforge.jp/eclipse/updates/
라는 properties edit 라는 플러그인 Update URL 을 등록 시킨다.
3. 위의 사이트에서 Properties edit 플러그인을 받아서 설치하면
properties 파일들을 열어서 보여줄 때는 유니코드로 보여주고
저장될 때는 아스키값으로 저장되는 magic 을 보여준다.
4. 정상적으로 잘 설치가 되었는지 확인 하기 위해
상단 메뉴 Window > Preferences > General > Editors > File Associatios 에서
*.properties 파일이 Properties Editor (default) 인지 확인 하면 된다.
위의 결과 한글로 잘 볼 수가 있게 된다.
TRACKBACK :: http://shonm.tistory.com/trackback/376