JSP를 사용하여 하나의 프로젝트를 하면 알게모르게 수많은 Tag Library를 사용하게 된다. Tag Library란? 자바 코드를 캡슐화 하여 JSP에서 간단하게 사용할 수 있게 해주는것을 말한다. 이런 수많은 Tag Library들을 사용을 함에도 불구하고 분명 아쉽고 부족한 기능들은 있다. 이럴때는 내가 직접 만들어서 사용하면 된다. 어렵지 않다. 자주 쓰일것 같은 공통기능 같은 것들은 한번 만들어 보도록 하자. 일단 큰 그림을 보도록 하자. jsp가 렌더링되다가 위와 같은 이라는 tag를 만났다. (ct 라는건 custom tag의 약자로 테스트를 위해 임의로 만든 tag 명이다.) 그럼 이건 jsp 파일에 정의된 ct tag가 가르키는 /WEB-INF/tld/customtag.tld 파일을 ..
자주 쓰이는 String prototype 에 대한 정리 (긁어모으기!) /** * 문자열 replaceAll */ String.prototype.replaceAll = function (target, replacement) { return this.split(target).join(replacement); }; /** * trim (공백 제거) */ String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ""); }; /** * ltrim */ String.prototype.ltrim = function() { return this.replace(/^\s+/, ""); }; /** * rtrim */ String.prototype...
웹어플리케이션을 개발하면 거의 필수적으로 하는 것이 바로 클라이언트 IP를 획득하는 것이다. 왜냐? 누가 뭘 하는지 알아야 문제가 생겼을때 대처가 가능하기 때문이다. 어떻게 IP를 얻어올수 있는가? public static String getClientIp(HttpServletRequest req) { String ip = req.getHeader("X-Forwarded-For"); if (ip == null) { ip = req.getRemoteAddr(); } return ip; } 이렇게 간단하게 IP 정보를 획득할 수 있다. 그냥 req.getRemoteAddr() 을 통해서 가져올수도 있지만 내 웹서버를 통해서 들어오는 경우면 클라이언트 IP를 가져오는게 아닌 웹서버의 IP를 가져오기 때문에 클..
요즘 JAVA 버전이 참 정신없이 나오고 있다. 6개월에 한번씩 버전업데이트라니... 유료화 되면서 구독형 라이센스니 뭐니 해가지고 신경써야 되는게 늘었다... 개발환경을 구성해야 하는 입장에서는 발빠르게 대응을 해야하는데 쉽지 않다. 꽤 오랜기간 JAVA 8을 사용하다가 이제 놓아주고 JAVA 11로 넘어가야하는 상황이다. OpenJDK를 써야 하지만 자바 애플릿같은걸 나는 쓰지 않기 때문에 큰 무리는 없게 전환이 가능할 것으로 예상이 되었다. 실제로도 Oracle JDK냐 OpenJDK냐는 migration을 하는데 크게 영향이 없었다. 그만큼 OpenJDK의 성능이나 기능 모두 문제없이 성장했다. JDK 10 JDK 10 JDK 10 is the open-source reference impleme..
라디오버튼(input type="radio") 을 핸들링 시 크롬에서는 정상동작하지만 IE에서는 비정상으로 동작하는 경우가 있다. 바로 다음과 같은 경우이다. .attr("checked", true); 이렇게 작성을 하면 IE에서는 정상동작하지 않는 경우가 있다. 이럴 경우에는 다음과 같이 조치해주면 된다. .prop("checked", true); 이 둘의 명확한 차이에 대해 잘 기술해 놓은 포스팅이 있어서 관심있는 사람은 참조하면 큰 도움이 될것이다. .prop(), .attr()의 차이 jQuery를 통해서 동적으로 화면 구성을 만들일이 많다. 그런 경우, selector를 통해 선택한 element나 append 하면서 새롭게 생성하는 element에 특정한 속성을 지정하게 되는 경우가 많은데 이..
javascript에서 window.open() 으로 popup을 띄울때 스크롤바가 생성이 되지 않는 현상이 있다. 물론 크롬에서는 문제 없이 잘 된다. 항상 이놈의 IE가 문제를 일으킨다. 문제가 발생한 원인은 IE에서는 스크롤바에 대한 옵션이 필수이기 때문이다. 따라서 window.open()에 스크롤바 옵션을 넣어주면 된다. window.open(abc.html, 'popup'); 위처럼 넣으면 크롬은 스크롤바 옵션에 대해 기본으로 설정을 하는 반면 IE는 그렇지 않다. window.open(abc.html, 'popup', 'scrollbars=yes'); 따라서 이렇게 변경을 해주거나 혹은 scrollbars=1 을 사용해도 된다.
어떤 클래스를 리눅스 서버에 배포를 했더니 위와 같은 오류가 서버 로그에 출력이 되었다. 오류 내용은 java.awt.HeadlessException: no x11 display variable was set but this program performed an operation which requires it .... 생전 처음보는 오류라 이것은 뭔가 했더니 GUI 환경이 지원되지 않는 곳에서 GUI 관련 API(Java Swing, JavaFx, Java AWT 등)를 사용했을때 발생하는 오류라고 한다. 자바 코드에 이런 메소드를 사용하지는 않았는지 확인해본 결과.. 누군가가 javax.swing 의 메소드를 사용하고 있었다. 이부분을 제거하면 위의 오류는 해결된다.