동적으로 다른 클래스의 메서드와 필드값을 불러와서 사용해야 하는 경우, Java Reflection을 활용하면 가능하다. // 메서드------------------------------------------------------------------------- Method getSomethingMethod = ClassName.getClass().getDeclaredMethod("getSomething", String.class); getSomethingMethod.setAccessible(true); // private 함수 접근 허용. String someString = (String) getSomethingMethod.invoke("something"); // 불러올 메서드가 static일 때...
new로 객체 생성을 했을 때, 그 생성한 객체를 통해 bean 등록이 되어있는 service 객체를 사용하고 싶을 때가 있다. 예를 들어, Thread 안에서 서비스 객체를 불러서 쓰고 싶을 때가 그런 경우인데. 이때 Thread 클래스에서 그냥 @Autowired할 경우 nullpointerexcecption이 떨어진다. 그러면 어떻게 해야 하나? 만들어진 서비스 빈을 빈 네임으로 불러서 가져오면 된다. 1. Bean을 가져오기 위해서는 ApplicationContext가 일단 필요하다. import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.sprin..
웹프로젝트를 만들 때 보통 url-pattern을 "*.do"로 많이한다. "점 뒤에 특정 문자가 오면 서블릿을 타라"라는 뜻이기 때문에 반드시 *.do로 해야 하는 건 아니지만(*.aa *.bb 아무거나 상관없음), 네이버가 먼저 *.do를 사용하면서 *.do가 보편화 됐다고 한다. 그래서 보통 아무 생각없이 이 방법을 많이 사용한다. 하지만 url패턴을 좀더 간결하게 하고 싶고 추후 RestFul API를 제공하는 것도 염두에 두고 있다면 url패턴을 간결하게 가져갈 필요가 있다. 예를 들어 *.do로 하면 "http://www.cha.go.kr/cha/idx/Index.do"이렇게 요청해야 하지만, url패턴을 간결하게 하면 .do를 빼고 "http://www.cha.go.kr/cha/idx/Ind..
쿠키는 javascript로도 다룰 수 있지만, 자바스크립트로는 간단하게만 구현할 수 있어서 쿠키로 좀더 뭔가를 하기 위해선 자바를 사용할 수밖에 없다. 아래의 예들을 구현하기 위해 사용한 자바 소스를 공유한다. 오늘 본 상품을 조회할 때 - 구현 예 1. 쿠키 name은 "clickItems", value는 "300, 234, 154" 이런 식이 될 것이다. 상품을 클릭할 때마다 value에 ","를 붙이고 값이 늘어나는 식이다. 2. 화면상에서 쿠키값을 하나씩 forEach로 돌려서 링크를 걸어준다. 서버에 저장된 상품 이미지 파일명이 상품 번호면 쉽게 상품 이미지를 표출할 수 있을 것이다. 이걸 구현할 때 사용하는 메서드들이 아래의 CookieUtils클래스의 getValueList와 setCook..
스프링에서 제공하는 ReloadableResourceBundleMessageSource를 이용해서 공통 메시지를 처리해보도록 한다. 찾아보니까 깔끔하게 정리된 게 없어서 내가 정리한다 ㅡ.ㅡ 1. ReloadableResourceBundleMessageSource를 사용하기 위한 설정 context-message.xml classpath:/egovframework/message/message message 폴더 안에 message_en_US.properties, message_ok_KR.properties 두 개의 파일이 있다면, 접속하는 세션의 로케일에 따라 자동으로 로딩한다. message_ok_KR.properties errors.minlength={0} 은 {1}자 이상 입력해야 합니다. fail..
예전에는 API를 통해 데이터 하나를 받아오려면 Apache의 HttpClient를 이용해서 긴긴 코딩을 해줬어야 했다. 이제는 Spring의 RestTemplate을 사용하면 단 몇 줄로 코딩이 끝난다. 다음은 URL로 요청해서 받아오는 XML 데이터를 처리하는 예제다. Controller @Controller @RequestMapping({"/member"}) public class MemberController { @RequestMapping({"/memberList.do"}) public String memberList(Model model) { // Xml데이터를 response받을 API주소 String uri = "API주소"; // RestTemplate 생성 RestTemplate res..
tar.gz 파일로 받아서 압축을 풀고 하는 방법도 있지만, 귀찮으니까 rpm으로 간편하게 설치. 1. rpm 파일 다운로드 → http://www.oracle.com/technetwork/java/javase/downloads/index.html 비트에 맞게 rpm파일을 다운로드 한다. 다운로드한 파일을 알맞은 곳에 FTP로 전송한 뒤, rpm 명령어로 설치한다. # rpm -ivh jdk-8u60-linux-x64.rpm 그럼 위와 같이 쭈~욱 정상적으로 설치됨을 확인할 수 있다. # java --version 버전을 확인해보면, 잘 나온다. 이러면 설치 완료. 설치가 끝났으니 환경변수를 등록하자. # export JAVA_HOME=/usr/java/jdk1.8.0_60/# export PATH=$P..