Spring 3 에서 컨트롤러 메서드(Controller Method) 진입시 어노테이션(Annotation)을 활용한 인터셉터(Interceptor) 만들기

By | 10월 29, 2014

  1. 어노테이션 인터페이스 작성 @Retention(RetentionPolicy.RUNTIME) @Target(value = {ElementType.TYPE, ElementType.METHOD}) //클래스 혹은 메서드에 어노테이션 적용 public @interface SslCheck { boolean isBlock() default false; //어노테이션에 인수를 입력받아 활용하고 싶을 경우 메서드 정의 }     2. HandlerInterceptorAdapter를 상속받은 인터셉터 클래스를 작성하면서 어노테이션을 활용 public class SslCheckInterceptor extends HandlerInterceptorAdapter { //주로 preHandle()에 로직을 작성할 것이다. @Override public… Read More »

Spring 3 에서 response.sendRedirect()를 사용하여 SSL(https) 요청을 생성할 때 https가 되지 않고 http로 되는 문제에 대한 해결 방안

By | 10월 29, 2014

만약 ViewResolver로서 UrlBasedViewResolver를 상속받은 ViewResolver를 사용하고 있다면, ViewResolver의 xml 정의에 아래와 같이 redirectHttp10Compatible 멤버를 false로 셋팅해 주면 된다.   <bean class=”org.springframework.web.servlet.view.UrlBasedViewResolver” id=”tilesViewResolver”> <property name=”viewClass” value=”org.springframework.web.servlet.view.tiles3.TilesView” /> <property name=”redirectHttp10Compatible” value=”false” /> </bean>                  

javascript 정규식 치환 (replace()) 함수의 두 번째 인수로 function을 넣어서 escapeHtml() 함수 작성하는 예제

By | 10월 23, 2014

– 출처: http://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery –   javascript replace() 함수의 두 번째 인수로 함수를 넣을 수 있다는 것을 처음 알았다. ^ㅁ^;   var entityMap = { “&”: “&amp;”, “<“: “&lt;”, “>”: “&gt;”, ‘”‘: ‘&quot;’, “‘”: ”’, “/”: ‘/’ }; function escapeHtml(string) { return String(string).replace(/[&<>”‘\/]/g, function (s) { return entityMap[s]; }); }      

jQuery Deffered 에 관한 개념 정리

By | 10월 21, 2014

      * Promise 객체 – Promise 객체는 $o.promise()로 생성하거나 $.when()의 인수로 넣어질 경우 생성된다. – Promise 객체가 되면 객체에서 일어나는 일들을 모니터링하여, 이벤트가 종료되면 done()을 호출한다. (ex: fadeOut())                                                  

이클립스(Eclipse)에 jboss tools를 설치해서 사용시, 서버를 시작(start)하면 starting… 상태에서 서버가 기동되다가 일정 시간이 지나면 죽는(stopped) 현상에 대한 해결 방법

By | 10월 17, 2014

실제로 이 경우는, jboss 서버가 죽지는 않았지만, Eclipse에 설치된 jboos tool이 서버가 죽었다고 판단하는 것이다. 보통의 경우에는 이 경우가 발생하지 않는데, 발생하는 경우는 주로 설정파일(ex: standalone.xml)을 수정했을 경우이다.   내 경우에는, 원래 설정 파일(ex: standalone.xml)에 로컬서버의 IP가 localhost (혹은 127.0.0.1)로 되어 있는 것을, 내 로컬PC의 공인IP로 바꾸었을 경우에 발생하였다. (어차피 같은 장비이지만 다르게 인식하는 것… Read More »

유튜브(Youtube) 동영상을 다운로드(download) 할 수 있는 사이트

By | 10월 16, 2014

유튜브(YouTube) 동영상을 다운로드(download) 하기 위해서, 이런 저런 프로그램, 브라우저 확장프로그램 다 설치해 보았으나 여기만한 데가 없더라 >,  < !!     * 주의! 다운로드 화면에서 Download with accelerator and get recommendation offers 체크박스가 보인다면, 원하지 않는 프로그램을 설치하게 될 수도 있으니, 체크하지 않도록 하자!            

MS-DOS(도스창, Windows의 CMD창)에서 특정 파일을 현재일시(현재날짜)가 붙은 파일명으로 rename 하기

By | 10월 8, 2014

  @echo off for /F “usebackq tokens=1,2 delims==” %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if ‘.%%i.’==’.LocalDateTime.’ set ldt=%%j set ldt=%ldt:~0,4%-%ldt:~4,2%-%ldt:~6,2% %ldt:~8,2%:%ldt:~10,2%:%ldt:~12,6% => 2012-06-19 10:23:47.048 의 형식으로 할 경우 set ldt=%ldt:~0,4%%ldt:~4,2%%ldt:~6,2%%ldt:~8,2%%ldt:~10,2%%ldt:~12,2% => 20120619102347 의 형식으로 할 경우 RENAME C:\aaa\standalone.xml standalone_%ldt%.xml      

톰캣(Tomcat) 재기동(restart)시 세션 복구 기능(session persistence)을 사용하지 않도록 설정하기

By | 9월 11, 2014

톰캣으로 개발을 하다보면 서버를 재기동했음에도 불구하고, 사용자 세션이 살아 있는 것에 놀라는 경우가 있다. 이는 톰캣에서 제공하는 session persistence 라는 기능 때문인데 (7.0 버전 기준), 이 기능을 disable 시키는 방법을 적어 본다. (굳이 disable 해야 할 필요가 있겠냐마는 -_-…)     톰캣의 context.xml 을 보면, 아래의 항목이 기본적으로 주석처리 되어 있는 것을 볼 수 있는데,… Read More »

정적 자원 (js, css) 들을 브라우저에서 캐싱(cache) 하지 못하도록 처리하기.

By | 9월 11, 2014

  방법 1) 정적 자원 로딩(import) url 뒤에 버전을 나타내는 구분자 붙이기.   * 브라우저가 1분 이상 정적 자원들을 캐싱하지 못하도록 막고 싶을 경우, 공통 heaer jsp 파일 소스코드 예시 <% request.setAttribute(“buildVer”, DateUtil.getCurrentDate(“yyyyMMddHHmm”)); //현재일시의 DateFormat을 리턴해 주는 사용자정의 메서드 getCurrentDate()가 있다고 치자. %> <script src=”${contextPath}/js/common.js?${buildVer}”></script>           나머지 방법들은 기회가 되면…  … Read More »

java 정규식(regex)을 사용하여 2회 이상 반복되는 정규식 패턴의 문자열을 각각 치환(replace)하는 예제

By | 5월 11, 2021

하려고 하는 작업 특정 문자열에서 메타문자 {WRAP}{/WRAP}로 감싸진 숫자를 찾아서 마스킹 처리를 하고 {WRAP}{/WRAP} 메타문자는 삭제하고 싶다. String dtl = "블라블라 {WRAP}123456{/WRAP} 어쩌구 저쩌구 {WRAP}987654{/WRAP} 마무으리 등등등…"; Matcher matcher = Pattern.compile("\\{WRAP\\}(\\d*)\\{/WRAP\\}"); // grouping을 하나 한 것에 주목 StringBuffer sb = new StringBuffer(); while(matcher.find()){ // 계속해서 결과를 찾아간다. //문자열 맨 앞에서부터 sb에 붙여나가면서 치환 처리까지 수행한다.… Read More »

jQuery에서 엘리먼트에 바인딩된 이벤트 조회하기

By | 8월 8, 2014

    //이벤트 조회(추출) var events = $._data($(‘#div1’)[0], ‘events’);   //바인딩된 이벤트 해제하기 $(‘#div1’).unbind(‘click’); //click 이벤트 해제     * 참고 jQuery를 사용하여 이벤트를 조회하는 것이나, 아니면 이벤트를 해제하는 것이나, 모두 jQuery를 통하여 바인딩된 이벤트만 조회/해제할 수가 있다. html 코드에 직접 등록한 이벤트의 경우에는 조회도 해제도 불가한 것으로 보인다. 그렇기 때문에 이벤트를 바인딩할 때는 나중을… Read More »

jqGrid의 페이징 기능 사용시, jqGrid의 기본 페이징 파라미터명과 서버의 페이징 파라미터 명이 다를 경우, 서버쪽 페이징 파라미터명을 jqGrid가 맞춰줄 수 있도록 하는 설정

By | 8월 8, 2014

  var P_PAGE = ‘pageNo’; //페이지번호 파라미터명 var P_TOTALCNT = ‘totRows’; //전체 조회 건수 파라미터명 var P_ROWSPERPAGE = ‘fetchRows’; //rowsPerPage 파라미터명 var P_TOTALPAGE = ‘totalPage’;     //jqGrid 기본 설정 $.extend($.jgrid.defaults, {   prmNames: { page: P_PAGE, rows: P_ROWSPERPAGE, totalrows: P_TOTALCNT },   jsonReader: { root: ‘data’,  //응답객체 이름 page: P_PAGE, total: P_TOTALPAGE, records: P_TOTALCNT,… Read More »

Spring 3.1 이 java 객체를 json으로 변환해 줄 때, 값이 없는 객체는 json에 빈문자("") 대신 "null" 문자열을 리턴해 주는데, 이를 빈문자("")로 리턴해 주도록 바꾸는 방법

By | 8월 5, 2014

– 출처 :  http://stackoverflow.com/questions/12934045/null-values-as-empty-strings-when-using-responsebody-annotation –   1. null serializer 를 작성한다. import java.io.IOException; import org.codehaus.jackson.JsonGenerator; import org.codehaus.jackson.JsonProcessingException; import org.codehaus.jackson.map.JsonSerializer; import org.codehaus.jackson.map.SerializerProvider; public class NullSerializer extends JsonSerializer<Object> { @Override public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { jgen.writeString(“”); } }     2. custom object mapper 를 작성한다.  (위에서 작성한 NullSerializer 사용) import… Read More »

jQuery UI dialog 를 닫을 때, cannot call methods on dialog prior to initialization; attempted to call method 'close 에러가 발생하는 경우

By | 7월 8, 2014

이 케이스에 대해서 인터넷에 여러가지 말들이 많이 있지만, 내 경우에는,  이미 기존 페이지에 include 되어 있던 javascript 라이브러리 들이, Dialog를 띄우면서 또 한 번 같은 document 내에 로딩되면서, Dialog를 생성했던 javascript context가 사라져 버린 경우였었다.   결국 dialog 내에 로딩되는 페이지에서 javascript 라이브러리가 include 되는 부분을 모두 제거했더니, Dialog도 잘 닫히고, 아무 문제가 없었다.  … Read More »

ADATA S102 8G USB 메모리를 Windows 7 설치용 부팅가능 USB로 만들기

By | 6월 26, 2014

  1. ADATA에서 제공하는 OStoGo를 설치하여 작성 시도함. => 아예 되지도 않음.. -_-;   2. UltraISO를 사용하여 작성 시도 => 초반에 살짝 에러가 난 후 정상 진행되나, 그 에러가 신경쓰여서 그냥 하지 않기로 함.   3. Windows 7 USB DVD Download Tool 사용 => 별 에러도 없고 잘 진행됨. 테스트해 보니 부팅도 잘 됨. =>… Read More »