목록DEV&OPS/Java (148)
삶 가운데 남긴 기록 AACII.TISTORY.COM
날짜 및 시간을 지정한 형식 yyyyMMddHHmmss( 년도월일시분초)으로 출력하는 예제 입니다. import java.text.SimpleDateFormat; import java.util.Date; public class CurrentDateTimeExample { public static void main(String[] args) { // 현재 날짜 및 시간 가져오기 Date currentDate = new Date(); // 원하는 형식으로 날짜 및 시간 포맷팅 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); String formattedDateTime = dateFormat.format(currentDate); //..
groovy groovy는 jvm용 스크립트언어이며 gradle은 groovy를 사용한 빌드 도구입니다. gradle 소프트웨어 내부에 groovy가 포함되어 있으므로 따로 설치 하지 않아도 됩니다만, 여기서는 groovy언어 연습용으로 설치해보도록 합시다. 그루비 다운로드 링크: https://groovy.apache.org/download.html
ORA-01704 JAVA로 ORACLE DBMS에 JDBC로 프로그램을 작성할 때, 문자열이 4000자가 넘어가면 일반 String statement로 insert/update시 ORA-01704를 발생시키며 안됩니다. 그럴 때 java.sql.Clob 클래스를 사용해서 preparedStatement.setClob()를 써서 구현하면 CLOB 데이터를 insert/update 할 수 있습니다. 예제는 아래와 같습니다. import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import ja..
자바에서 String을 치환할 때 보통 replace()와 replaceAll()을 사용합니다. 결론부터 말하자면 replaceAll()은 정규식이 올 수 있다는 것이 차이입니다. 일반적인 문자열을 치환할 때 속도가 빠른 replace() 사용하고 보다 복잡한 치환을 할 때는 정규식을 지원하는 replaceAll()을 사용합니다. 아래 예제에서 보면 replaceAll()은 . 이나 대괄호가 있으면 정규식으로 인식하여 replace()와 다른 결과가 나온다는 것을 알 수 있습니다. package test; public class ReplaceTest { public static void main(String[] args) { String sampleText = "co.kr//123-abcd//[/]-aa..
한글(UTF-8)설정 인텔리제이 설치 폴더\bin\idea64.exe.vmoptions 해당 파일의 마지막 줄에 아래와 같이 추가 합니다. -Dfile.encoding=UTF-8 프로젝트 SDK(JDK) 설정 인텔리제이 File > Project Structure 메뉴 Project Settings > Project 항목의 Project SDK 항목에서 프로젝트에 맞는 JDK를 선택합니다. Project Settings > Project 항목의 Project language level도 맞는 JDK 버전을 선택합니다. Project Settings > Modules 항목의 Language level도 맞는 JDK 버전을 선택합니다. Gradle 빌드 환경 설정 인텔리제이 File > Settings > ..
Spring MVC 프로젝트 구조 설명 src/main/java/ : 자바 소스 경로 src/main/resources/ : 실행시 자동 참고되는 경로(주로 설정파일, log4j.xml 등등) src/test/java/ : 테스트 자바 코드 경로 src/test/resources/ : 테스트 관련 설정 파일 경로 src/webapp/WEB-INF/spring/appServlet/ : sevlet-context.xml 외 spring 설정 파일 src/webapp/WEB-INF/spring/ : root-context.xml 외 spring 설정 파일 src/webapp/WEB-INF/views/ : MVC 패턴 중 view 페이지(jsp) 들이 위치 한 경로 src/webapp/WEB-INF/ : tom..
여기서는 한국어와 영어만을 대상으로 합니다. properties 파일 작성 Spring MVC 프로젝트에서... src/main/resources 경로에 message_ko.properties 와 message_en.properties 파일을 생성합니다. 그러면 빌드와 배포를 했을 때 WEB-INF/classes 경로(classpath)에 프로퍼티 파일들이 생성됩니다. 이 프로퍼티 파일들은 유니코드로 저장되며, 이클립스를 전자정부프레임워크를 사용하거나 properties editor 플러그인을 사용하면 자동으로 유니코드를 한국어로 표기해줍니다. Help > Install New Software... > Add... Name : properties editor Location : http://propedi..
html 파일에 한글 설정 server.xml 한글 설정 GET방식에서는 질의 문자열들을 URI에 포함되기 때문에 URI인코딩 처리 작업을 해야 합니다. server.xml 파일에 URIEncoding="UTF-8" 프로퍼티를 설정합니다. web.xml 한글 설정 encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true encodingFilter /* POST 전송 방식은 요청 body에 담아 전달됩니다. CharacterEncodingFilter는 http상 주고받는 데이터의 헤더 값을 인코딩합니다. Servlet에서 request.setCharacterEncoding("ut..
JDK 설치 오라클 사이트에서 JDK를 다운받아서 설치합니다. 여기서는 JDK11을 기준으로 합니다. 설치한 후에는 환경 변수에서 JAVA_HOME 을 등록하고 JDK가 설치된 경로를 지정해줍니다. 환경변수의 PATH에는 %JAVA_HOME%bin 으로 저장합니다. 설정이 완료된 뒤에는 명령프롬프트(cmd)에서 javac 명령어를 입력해서 컴파일러가 정상 실행되는지 확인합니다. 이클립스(STS, 전자정부프레임워크) 설정 Lombok 라이브러리의 안정성 때문에 이클립스를 JRE환경이 아닌 JDK환경에서 구동되도록 설정을 변경합니다. eclipse.ini(혹은 sts.ini) 파일의 상단에 아래와 같은 내용을 추가합니다. (윈도우 경로 기준) -vm JDK설치경로\bin\javaw.exe 이클립스 한글 인코..
관점 지향(Aspect Oriented Programming) 로깅 보안/인증 트랜잭션 리소스 풀링 에러 검사 / 처리 정책 멀티 스레드 안전 관리 데이터 영속처리 위 항목들은 소프트웨어 개발 시 발생하는 공통적인 문제들입니다. 핵심 관심(core concern)은 업무 로직을 말합니다. 횡단 관심(cross-cutting concern)은 위에서 언급한 로깅이나 보안등 공통 시스템 로직을 말합니다. 이처럼 업무 기능과 시스템 기능간에 결합성을 제거하도록 분리하여 작성하는 방법을 관점 지향이라고 합니다. 관점 지향 용어 advice : 관점이 언제, 무엇을 하는지를 정의 joinpoint : 관점이 실행될 수 있는 위치들 pointcut : joinpoint 중에서 advice 하는 위치(어디서) asp..
Spring bean을 XML로 관리 할 수 있지만, bean객체가 많아지면 XML 설정도 많아져 불편해집니다. 그래서 나온 방법이 auto wiring(bean 연결) 과 annotation wiring(bean 연결) 입니다. annotation wiring 어노테이션 와이어링을 사용하기 위해서는 context를 관리하는 XML 설정 파일에 context 네임스페이스를 추가해야 합니다. 이렇게 패키지 이름을 component-scan 으로 지정해주면 Spring이 자동으로 bean을 스캔해서 발견해줍니다. @Autowired Spring의 기본 의존성 주입을 위한 어노테이션입니다. 필드, 생성자, setter 메서드에 사용할 수 있습니다. 타입 와이어링을 시도 한 후 실패하면 이름 와이어링으로 후보 ..
의존성 주입(Dependency Injection) 의존성 주입은 디자인 패턴으로 제어의 역전(Inversion of Control)을 구현하기 위한 방법중의 하나입니다. 객체를 직접 생성하는 것이 아닌 외부에서 생성하여 주입 받는 방법을 말합니다. 클래스들은 서로 연결되어 있어서 의존성(dependency)이 강합니다. 그래서 인터페이스를 통해 클래스 사이의 직접적인 의존성을 제거해서 서로 느슨하게 결합하도록 유도하는 것입니다. 그래서 요구사항이 변경되어 클래스를 수정하게 될 때 의존하고 있던 클래스에 영향을 끼치지 않으면서 클래스를 수정할 수 있게 해주는 것입니다. IoC 컨테이너는 시스템의 모든 인스턴스 객체를 관리하고 인스턴스 객체들 사이의 의존성이 있으면 주입하는 일을 담당합니다. 일반적인 자바..
페이징 처리시 게시물 10개를 기준으로 10페이지씩 표기하는 방법을 기준으로 개발하는 것이 보통입니다. endPage endPage = (int)(Math.ceil(cri.getPage() / (double)displayPageNum) * displayPageNum); cri.getPage()는 현재 페이지 번호를 의미합니다. displayPageNum은 화면 하단에 페이징 버튼의 갯수를 의미합니다. 현재 페이지가 3일 때 : Math.ceil(3/10)*10 = 10 즉, endPage는 10입니다. 현재 페이지가 20일 때 : Math.ceil(20/10)*10 = 20 즉, endPage는 20입니다. 현재 페이지가 21일 때 : Math.ceil(21/10)*10 = 30 즉, endPage는 3..
Spring bean 스프링 프레임워크가 관리하는 클래스들의 인스턴스 객체들을 Spring bean 이라고 합니다. Spring bean 설정 방법 XML로 설정 할 때에는 아래 처럼 설정합니다. 어노테이션을 이용해서 설정할 때에는 아래처럼 클래스 위에 @Configuration 어노테이션을 설정하고, 메서드 위에는 @Bean 어노테이션을 설정해 줍니다. 패키지 경로는 net.aacii.app 으로 가정합니다. import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import net.aacii.app.service.SampleService; import ne..
java.lang.ClassNotFoundException: sun.misc.GC 이클립스에서 톰캣을 실행할 때 가끔 볼 수 있는 이 오류는 톰켓 버전과 JDK 버전이 맞지 않을 때 발생하는 오류입니다. 예를 들어 Tomcat 8을 사용중일 때 JDK가 11이 설치되었을 때 발생할 수 있습니다. sun.misc.GC는 java9부터 제외되었기 때문입니다. PC에 JDK8과 JDK11이 둘 다 설치되어 있다는 가정하에 이클립스에서 JDK 버전을 바꿔주는 방법으로 해결합니다. 이클립스 > Window > Preferences > Java > Installed JREs 위 화면에서 우측 Search... 버튼을 눌러 JDK8이 설치된 경로를 찾은 후에 설정을 체크하면 오류가 해결됩니다. 만약 프로젝트가 다양해..