forTokens는 쉽게말해 "split"기능이라고 생각하시면 되겠습니다. "forTokens"태그는 JSTL의 c태그에 속합니다. 이 태그의 이해를 돕고자 파일확장자에 따른 이미지들을 보여주는 예를 들어보도록 하겠습니다. 조건은 다음과 같습니다. 확장자가 hwp일경우에는 한글파일이므로 한글이미지를보여주고 xls나 xlsx의 파일명일 경우에는 엑셀이미지..
이번에 포스팅해 드릴 내용은 API방식에서 주로 사용하는 JSON오브젝트를 생성한 후 사용자페이지에서 받아보는 방법과 사용자 페이지에서 보낸 문자열로 만들어진 JSON을 OBJECT로 변환하는 코드를 구현해보도록 할까 합니다. 라이브러리는 JSON SIMPLE이라는 라이브러리를 이용하여 작업을 해보도록 하겠습니다. 라이브러리 다운로드는 https://c..
일반적으로 웹화면에서 이미지태그의가로/세로를 지정합니다. 화면에 일정하게 보여줘야하는 이미지인경우 어떤이미지는 크고, 작고... 뒤죽박죽이면 안되기 때문입니다. 작은 사이즈의 넓이,높이를 고정하는거는 이미지만 깨질뿐 속도에는 별 영향이 없는걸로 알고있습니다. 그 반대로 큰 이미지를작은 사이즈로 구겨넣으려고 할 경우 버벅거릴 경우가 존재합니다 이럴 경우를 위..
forTokens는 쉽게말해 "split" 기능이라고 생각하시면 되겠습니다.
"forTokens"태그는 JSTL의 c태그에 속합니다.
이 태그의 이해를 돕고자 파일확장자에 따른 이미지들을 보여주는 예를 들어보도록 하겠습니다.
조건은 다음과 같습니다.
확장자가 hwp일경우에는 한글파일이므로 한글이미지를보여주고
xls나 xlsx의 파일명일 경우에는 엑셀이미지를 보여주고
마지막으로 js파일일경우 자바스크립트이미지를 보여준다
위 조건으로 코드를 작성해보도록 하겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <!-- 임의의 파일명을 위하여 filename이라는 변수에 value set --> < c:set var = "originalfilename" value = "jquery.min.js" /> <!-- 확장자가 대문자일경우를 고려하여 소문자로 파일명 변경 --> < c:set var = "lowerfilename" value = "${fn:toLowerCase(originalfilename)}" /> <!-- 문자열들을 .으로 split 한후 c:forTokens을이용하여 문자열들을 iterator한다 --> < c:forTokens var = "ext" items = "${lowerfilename}" delims = "." varStatus = "status" > <!-- 파일명중간에 "." 이 존재할수도 있으니 항상 status.last(마지막번째) 를 실행해주어야 한다 --> < c:if test = "${status.last}" > < c:choose > < c:when test = "${ext eq 'xls' || ext eq 'xlsx'}" > <!-- 엑셀파일일경우 --> ${originalfilename}(엑셀파일이미지) </ c:when > < c:when test = "${ext eq 'hwp'}" > <!-- 한글파일일경우 --> ${originalfilename}(한글파일이미지) </ c:when > < c:when test = "${ext eq 'js'}" > <!-- 자바스크립트파일일경우 --> ${originalfilename}(자바스크립트파일이미지) </ c:when > </ c:choose > </ c:if > </ c:forTokens > |
코드의 originalfilename에 value값을
각각의 파일명을 변경하여서 테스트를 해보도록 하겠습니다.
테스트 결과 정상적으로 조건에 따른 파일 확장자 구분이 완료되었습니다.
fortoken에 대해서 이해가 가셨나요? ^^??
다음 포스팅에서 뵙도록 하겠습니다 (--)(__)
by 개발로짜
POI라이브러리를 이용하여 엑셀파일(xls,xlsx) 에 데이터 넣어서 파일로 만들기 (1) | 2014.10.07 |
---|---|
DTO,VO에 정의되어있는 변수명 및 갯수에 관계없이 변수명과 value값 한방에 가져오기 (0) | 2014.10.07 |
Map객체의 key값을 읽어서 value값 한번에 추출하기 (0) | 2014.10.07 |
JSON 라이브러리를 이용하여 object생성과 문자열을 object형으로 변환해보기 (0) | 2014.10.06 |
ImageIO를 이용하여 자바 썸네일 이미지 생성코드 구현하기 (1) | 2014.10.06 |
이번에 포스팅해 드릴 내용은 API방식에서 주로 사용하는
JSON오브젝트를 생성한 후 사용자페이지에서 받아보는 방법과
사용자 페이지에서 보낸 문자열로 만들어진 JSON을 OBJECT로 변환하는 코드를
구현해보도록 할까 합니다.
라이브러리는 JSON SIMPLE이라는 라이브러리를 이용하여
작업을 해보도록 하겠습니다.
라이브러리 다운로드는
https://code.google.com/p/json-simple/downloads/list
상단 URL에 접속하여 받도록 하겠습니다.
오늘날짜 기준으로 확인결과 최신버전은 json-simple-1.1.1.jar 파일이네요 ㅎㅎㅎ
이클립스에서 Dynamic Web Project를 생성 후 lib 폴더에 다운받은 라이브러리를 include 해주겠습니다.
제가 세팅은 프로젝트 및 파일의 경로는 다음과 같습니다
코드작성을 위해 생성한 jsonobject.jsp라는 파일에 다음과 같이 코드를 작성하였습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | //최상단 json객체 JSONObject jsonroot= new JSONObject(); //가상의 list객체 (db에서 조회한 결과라고 가정) ArrayList<Map<String,Object>> selectlist= new ArrayList<Map<String,Object>>(); Map<String,Object> dbmap= null ; for ( int i= 0 ;i< 20 ;i++){ dbmap= new HashMap<String,Object>(); dbmap.put( "data" , "가상의DB데이터" +i); selectlist.add(dbmap); } //json 배열목록을 담아줄 jsonarray 객체생성 JSONArray jsonList= new JSONArray(); //가상DB목록을 JSON배열목록에 출력하기 위한 임의의 JSON오브젝트 JSONObject jsontmp= null ; //DB에서 조회한 값을 반복문을 이용하여 객체 하나씩 뽑아온다 for (Map<String,Object> selectone : selectlist){ Set<String> key=selectone.keySet(); //MAP의 KEY/VALUE를 통하여 JSON임시객체에 담아준후 for (Iterator<String> iterator=key.iterator();iterator.hasNext();){ String tmpekey=(String) iterator.next(); String tmpvalue=(String) selectone.get(tmpekey); jsontmp= new JSONObject(); jsontmp.put(tmpekey, tmpvalue); } //JSON배열목록에 추가 jsonList.add(jsontmp); } //db목록 json set jsonroot.put( "result" ,jsonList); //성공여부 jsonroot.put( "success" , true ); PrintWriter pw=response.getWriter(); pw.print(jsonroot); pw.flush(); pw.close(); |
관련 라이브러리 IMPORT는 생략하도록 하겠습니다!
그럼 한번 실행을 하여서 결과가 어떻게 나오는지 확인해 보도록 하겠습니다.
위와같이 json 형태로 정상적으로 만들어져서
출력되는 결과를 확인하였습니다.
다음으로는 클라이언트 페이지에서 넘어온 json문자열을 object타입으로
변환하는 작업을 해보도록 하겠습니다.
json 은 2가지 방법으로 만들어질수가 있습니다.
1.{key:value}의 object형식
2. [{key:value}]의 array형식
이두가지로 구분이 되겠는데
방법을 나누어서 코드를 작성해보도록 하겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | //사용자페이지에서 넘겨준 가상의 문자열 json data (request.getparameter을 이용하여 받았다고 가정합니다) String requestgetparameter= "{\"jsonstring1\":\"가상의문자열데이터1\",\"jsonstring2\":\"가상의문자열데이터2\"}" ; if (requestgetparameter.substring( 0 , 1 ).equals( "{" )){ //단순 object형식일 경우 JSONValue.parse를 이용해줍니다 Object jsonobject=JSONValue.parse(requestgetparameter); JSONObject jsonobj=(JSONObject)jsonobject; System.out.println( "[JSON 오브젝트파싱후 각각의 KEY로 VALUE값 출력]" ); System.out.println(jsonobj.get( "jsonstring1" )); System.out.println(jsonobj.get( "jsonstring2" )); } //서버에서 request.getparameter()로 받은 데이터라 가정 String requestgetparameter2= "[{\"jsonstring\":\"가상의문자열배열데이터1\"},{\"jsonstring\":\"가상의문자열배열데이터2\"}]" ; if (requestgetparameter2.substring( 0 , 1 ).equals( "[" )){ Object jsonarray=JSONValue.parse(requestgetparameter2); JSONArray jsonarr=(JSONArray)jsonarray; System.out.println( "[반복문을 돌려서 JSON 배열 파싱후 각각의 KEY로 VALUE값 출력]" ); for ( int i= 0 ;i<jsonarr.size();i++){ JSONObject jsonobj=(JSONObject)jsonarr.get(i); System.out.println(jsonobj.get( "jsonstring" )); } } |
JAVA 서버페이지에서 작업한다는 가정이므로
콘솔로 결과값들을 출력해보았습니다.
위 코드들을 응용하셔서 JSON 파싱에 필요하실때 사용하시면 되실거 같습니다 ^^
다음 포스팅때 뵙겠습니다!! ㅎㅎ
by 개발로짜
69123a15d0ab25684d6cabefbfc388a1
POI라이브러리를 이용하여 엑셀파일(xls,xlsx) 에 데이터 넣어서 파일로 만들기 (1) | 2014.10.07 |
---|---|
DTO,VO에 정의되어있는 변수명 및 갯수에 관계없이 변수명과 value값 한방에 가져오기 (0) | 2014.10.07 |
Map객체의 key값을 읽어서 value값 한번에 추출하기 (0) | 2014.10.07 |
JSTL의 c:forTokens을 이용하여 확장자명 찾기 (0) | 2014.10.06 |
ImageIO를 이용하여 자바 썸네일 이미지 생성코드 구현하기 (1) | 2014.10.06 |
일반적으로 웹화면에서 이미지태그의 가로/세로를 지정합니다.
화면에 일정하게 보여줘야하는 이미지인경우
어떤이미지는 크고, 작고...
뒤죽박죽이면 안되기 때문입니다.
작은 사이즈의 넓이,높이를 고정하는거는
이미지만 깨질뿐 속도에는 별 영향이 없는걸로 알고있습니다.
그 반대로 큰 이미지를 작은 사이즈로 구겨넣으려고 할 경우 버벅거릴 경우가 존재합니다
이럴 경우를 위하여 큰사이즈의 이미지를 축소하는 작업이 필요합니다.
썸네일생성이라고 하는데 이부분에 대하여 간단하게 구현을 해보도록 하겠습니다.
위 이미지를 가지고 썸네일을 만들어볼까 합니다
위치 + 경로는 ("D:\original_image.jpg") 입니다.
용량이 1MB이상이고 크기는 1936 x 1296 입니다.
해당 이미지를 가로(100) X 세로(100) 사이즈로 구겨 넣을 경우
보기도 않좋고 상당히 느리게 로딩이 됩니다.
(물론 네트워크 환경에 따라서 그럴수도 아닐수도 있습니다 ^^;;)
그럼 썸네일 코드를 작성해보도록 하겠습니다.
JDK1.6 이상 사용가능한 코드로 알고있습니다. ^^
패키지명 - com.thumbnail
클래스명 - Thumbnail
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public class Thumbnail { public static void main(String args[]){ try { //썸네일 가로사이즈 int thumbnail_width = 100 ; //썸네일 세로사이즈 int thumbnail_height = 100 ; //원본이미지파일의 경로+파일명 File origin_file_name = new File( "D:" +File.separator+ "original_image.jpg" ); //생성할 썸네일파일의 경로+썸네일파일명 File thumb_file_name = new File( "D:" +File.separator+ "thumbnail_image.jpg" ); BufferedImage buffer_original_image = ImageIO.read(origin_file_name); BufferedImage buffer_thumbnail_image = new BufferedImage(thumbnail_width, thumbnail_height, BufferedImage.TYPE_3BYTE_BGR); Graphics2D graphic = buffer_thumbnail_image.createGraphics(); graphic.drawImage(buffer_original_image, 0 , 0 , thumbnail_width, thumbnail_height, null ); ImageIO.write(buffer_thumbnail_image, "jpg" , thumb_file_name); System.out.println( "썸네일 생성완료" ); } catch (Exception e) { e.printStackTrace(); } } } |
생성된 썸네일 파일을 한번 보도록 할까요?
이미지 사이즈를 줄인것도 아니고 순수하게 위 코드를 이용하여 생성한 파일입니다.
1MB가 됐던 파일이 위 코드를 통하여 5KB로 줄었고
사이즈 역시 100 x 100으로 생성이 되었습니다.
프로젝트에 유용하게 사용하시길 ^^
by 개발로짜
POI라이브러리를 이용하여 엑셀파일(xls,xlsx) 에 데이터 넣어서 파일로 만들기 (1) | 2014.10.07 |
---|---|
DTO,VO에 정의되어있는 변수명 및 갯수에 관계없이 변수명과 value값 한방에 가져오기 (0) | 2014.10.07 |
Map객체의 key값을 읽어서 value값 한번에 추출하기 (0) | 2014.10.07 |
JSTL의 c:forTokens을 이용하여 확장자명 찾기 (0) | 2014.10.06 |
JSON 라이브러리를 이용하여 object생성과 문자열을 object형으로 변환해보기 (0) | 2014.10.06 |
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.