ILoveCoffee, ILoveJava 29

apache HttpClient 로 request 시 403 forbidden 에러 발생

증상 - httpclient-4.2.3.jar 버전에서 오류 발생 - 일부 사이트(zendesk) 에서 제공했던 API를 호출하려고 할때 403 forbidden 에러와 함께 html body 소스가 리턴 - 일부 사이트(zendesk) 경우 www.cloudflare.com/ 를 이용하고 있고 cloudflare 에서 막는 것으로 보임 httpclient-4.4 를 사용하는 다른 프로젝트에서는 정상적으로 통신되어 httpclient 자체의 문제가 아닌 서버에서 설정으로 해결해야 하는 문제일 것으로 생각되었는데, 그것이 아니였음. 해당 버전(4.2.3) 에 문제가 있거나 현재 올라가 있는 라이브러리자체에 문제가 있는 것으로 보임. 해결 - Httpclient 대신 HttpsURLConnection 라이브..

getRequestURL jsp / servlet / java 현재 경로 알아내기

Context : ex) http://localhost:8080/board/list.jsp return => /board ( 프로젝트 context path 만 가져온다 ) El(표현언어) 사용시 : ${pageContext.request.contextPath} URL : URI : ex) http://localhost:8080/board/list.jsp return => /board/list.jsp ( 프로젝트 context path와 파일 경로까지 가져온다 ) Path : 전달 파라미터 : 전달 파라미터 Map으로 return : String u = javax.servlet.http.HttpUtils.getRequestURL(request).toString(); javax.servlet.Servlet..

Calendar 객체에서 주, 요일(일~토)를 이용한 날짜 변환

자바에서 자주사용하는 객체가 있다면 그건 java.util.Date 그리고 그 다음이 java.util.Calendar 일 것이다. 그 중에서 날짜를 변환 하기 위해 사용되는 객체는 java.util.Calendar 객체일 것인데, 일반적으로 날짜를 변환 하려 할 경우 년, 월, 일 을 Set 하는 방법으로 변환 하곤 했다. 이 방법은 기초중에 기초 가장 자주사용하고 그렇기 때문에 설명할 필요도 없는 쉬운 방법인데... 모든 프로젝트가 그렇듯이 쉬운것이 없다. 항상 프로젝트는 예상밖에 니즈를 필요로 한다. (그래서 경력이 있는 개발자는 노하우가 쌓여있는 고급인력이 되는것이 겠지만...^^) 스케쥴을 담은 명단을 저장한다고 가정하자, 그런데 문제는 고객은 일반적인 생각을 하는 사람이 아니다. 그 사람은 요..

java.util.regex.Pattern 설명 (Regular Expression > Methods of the Pattern Class)

지금까지 우리는 test harness를 이용하여 패턴 객체를 생성하고 그들의 기본 폼을 이용하였다. 이번 섹션에서는 좀더 향상된 기술로 플래그와 함깨 패턴을 생성하거나 포함된 플래그 표현들을 이용할 것이다. 우리가 아직 논의하지 않은 몇가지 유용한 추가적인 내용들에 대해서 논의할 것이다.Creating a Pattern with FlagsPattern 클래스는 플래그를 제공하는 새로운 compile 메소드를 가지고 있다. 플래그 파라미터는 비트 마스크 처리가 되며 다음과 같이 public static field들로 구성되어 잇다.Pattern.CANON_EQ 규칙에 의해서 같은지 검사하도록 한다. 이 플래그가 지정되면 2개의 캐릭터는 매치를 수행할때 전체가 규칙에 의해서 분해를 수행한 것이 매칭이 되..

EL Expression Language

2011-12-14 : 추가 : 빈(bean) 임의의 method 호출 =============================================================================================== EL Expression Language 은 &{memberName} 이렇게 써놓으면 모든 부분의 속성을 검색해서 찾아냅니다. 페이지->요청->세션->컨텍스트 순서대로요 그리고 이렇게 빈 프로퍼티를 읽어오는 스크립틀릿 표현식을 ${person.name} 바로 이렇게 읽어올 수 있습니다. 자바 빈 set/get 으로 된 프로퍼티 말이죠.. ^^ 빈의 임의의 메소드에 접근 방법은 만약 Person 이라는 빈에 아래 메소드가 public boolean hasCar(Str..

OAuth

OAuth란? Open API를 사용하기 위해선 인증이 필요합니다. 인증방식의 표준이 없기 때문에 제 각각의 방법으로 개발되고 있는 실정인데요 구글의 AuthSub, AOL의 OpenAuth, 야후의 BBAuth OAuth는 제각각의 인증방식을 표준화하고 가장 좋은 방법만 가져다 만들었습니다. 즉 매쉬업 서비스로 만들어진 어플리케이션이 다른 어플리케이션의 사용자 정보를 접근할 수 있는 표준화된 방법을 제공하는 스펙입니다. OAuth 인증방식을 이해하기 위해선 용어를 미리 숙지하셔야 합니다. ◦ 서비스 프로바이더(Service Provider) – OPENAPI를 제공하는 서비스를 말합니다. ◦ 사용자(users) - 서비스 프로바이더 혹은(그리고) 컨수머를 사용하는 이를 말합니다. ◦ 컨수머(Consum..

java의 synchronized 분석

요즘 jsr 133 자바 메모리 모델을 보고 있는데, 처음에 lock거는 부분에 대해 나오더군요. 자바에서 lock을 거는 것은 보통 synchronized 구문을 이용하는데, 일반적인 자바 책에서는 "synchronized를 걸면 동시 접속이 안된다." 까지만 나와 있었는데, 보다가 보니 재미있는 부분들이 있어서 정리해볼랍니다. synchronized (anObject){ // code!! } 위와 같은 구문은 anObject를 기준으로 잡습니다. 그렇기 때문에 완전히 다른 객체끼리도 동기화가 가능합니다. 다음은 제가 주로 사용하는 디버깅 코드입니다. synchronized (java.lang.Object.class) { System.out.println("===========디버깅 시작했다~=====..

java:comp/env

고수는 아니지만.. 아는것만 답변드리자면 java:comp/env는 리소스 이름앞에 붙는 접두사정도로 생각하시면 됩니다. web.xml파일에 엘리먼트를 설정해주죠. JDBC를 예를들면 DB Connection jdbc/myhome javax.sql.DataSource Container 뭐 이런식이 될텐데 위의 jdbc/myhome라는 리소스이름을 lookup으로 찾을때 리소스 이름앞에 붙이는 접두사 라고 생각하시면 됩니다. 그리고 창우님께서 하신 방법으로 하는것도 표준입니다. 첫번째 방법이나 두번째 방법이나 별 차이없습니다.^^ 그리고 한번 읽어보시면 도움될듯한 링크 하나 http://www.ibm.com/developerworks/kr/library/j-jndi/ java:comp/env은 모든 설정된..