[Java Console 게시판 만들기 - 3] - http://blog.whitelife.co.kr/165


윗 글의 게시판 소스 개선 입니다.


-  Java API 사용

  - List<E>

  - ArrayList<E>


기존 방식은 String 2차원 배열을 사용 했기 때문에 수동으로 Array가 꽉 찼을 경우 재 할당을 해야 했습니다. 개선 방안으로는 Java API 중 List가 있습니다. 내부적으로 배열을 증가 시키는 로직이 있습니다.


Bbs.java

import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;

public class Bbs {
  
	private Scanner s;
	private List<String[]> bbsList;

	private int seq;
	
	public Bbs() {
		this.s = new Scanner(System.in);
		this.bbsList = new ArrayList<String[]>();

		this.seq = 1;
	}

	public void readme() {
		System.out.println("1. 등록, 2. 상세보기, 3. 수정, 4. 삭제, 5. 목록, x. 종료");
	}

	public void exit() {
		System.out.println("프로그램을 종료 합니다.");
	}

	public String getInput() {
		return this.s.next();
	}

	public void create() {
		String no = String.valueOf(seq);
		
		System.out.println("input title...");
		String title = getInput();

		System.out.println("input content...");
		String content = getInput();

		String[] bbs = new String[3];
		bbs[0] = no;
		bbs[1] = title;
		bbs[2] = content;
		
		this.bbsList.add(bbs);

		this.seq++;

		System.out.println("등록이 완료 되었습니다.");
	}
	
	private String[] getSearch(String no) {
		for (String[] bbs : this.bbsList) {
			if (bbs != null && bbs[0].equals(no)) {
				return bbs;			
			}
		}

		return null;
	}

	public void read(String no) {
		if (no == null || no == "") {
			System.out.println("잘못 입력 하셨습니다.");
			return;
		}
	
		String[] bbs = this.getSearch(no);
		
		if (bbs == null) {
			System.out.println("게시글이 없습니다.");
			return;
		}
		
		System.out.println("no: " + bbs[0]);
		System.out.println("title: " + bbs[1]);
		System.out.println("content: " + bbs[2]);
	}

	public void update(String no) {
		if (no == null || no == "") {
			System.out.println("잘못 입력 하셨습니다.");
			return;
		}
	
		String[] bbs = this.getSearch(no);
		
		if (bbs == null) {
			System.out.println("게시글이 없습니다.");
			return;
		}

		System.out.println("input title...");
		String title = this.getInput();

		System.out.println("input content...");
		String content = this.getInput();

		bbs[1] = title;
		bbs[2] = content;

		System.out.println("수정이 완료 되었습니다.");
	}
	
	public void delete(String no) {
		if (no == null || no == "") {
			System.out.println("잘못 입력 하셨습니다.");
			return;
		}

		String[] bbs = this.getSearch(no);
		
		if (bbs == null) {
			System.out.println("게시글이 없습니다.");
			return;
		}
		
		this.bbsList.remove(bbs);

		System.out.println("삭제가 완료 되었습니다.");
	}

	public void getList() {
		for (String[] bbs : this.bbsList) {
			if (bbs != null) {
				System.out.println("no: " + bbs[0]);
				System.out.println("title: " + bbs[1]);
				System.out.println("content: " + bbs[2]);
			}
		}
	}

  public static void main(String[] args) {

	Bbs bbs = new Bbs(); 

	while(true) {
	        bbs.readme();		

		String choice = bbs.getInput();

		if (choice.equals("1")) {
			bbs.create();
		} else if (choice.equals("2")) {
			System.out.println("번호를 입력해 주십시오.");
			bbs.read(bbs.getInput());
		} else if (choice.equals("3")) {
			System.out.println("번호를 입력해 주십시오.");
			bbs.update(bbs.getInput());
		} else if (choice.equals("4")) {
			System.out.println("번호를 입력해 주십시오.");
			bbs.delete(bbs.getInput());
		} else if (choice.equals("5")) {
			bbs.getList();
		} else if (choice.equals("x")) {
			bbs.exit();
			break;
		} else {
			System.out.println("잘못 입력 하셨습니다.\n다시 입력해 주십시오.");
		}
    }   
  }
}

'Java' 카테고리의 다른 글

Google Guava 라이브러리 사용하기  (0) 2014.07.24
Java Reflection 활용하기  (0) 2013.11.18
Java Console 게시판 만들기 - 3  (0) 2013.11.12
Java Console 게시판 만들기 - 2  (0) 2013.11.11
Java Console 게시판 만들기  (1) 2013.11.10


[Java Console 게시판 만들기 - 2] - http://blog.whitelife.co.kr/163


윗 글의 게시판 소스 개선 입니다.


-  Object 형태로 변경

-  게시판 Array가 꽉 찼을 경우 동적 Array 생성


이제는 게시글을 제한 없이 입력이 가능 합니다.


Bbs.java

import java.util.Scanner;

public class Bbs {
  
	private Scanner s;
	
	private String[][] bbses;
	private int seq;
	private int gindex;
	
	public Bbs() {
		this.s = new Scanner(System.in);

		this.bbses = new String[9][];
		this.seq = 1;
		this.gindex = 0;
	}

	public void addArray() {
		String[][] temp = this.bbses;
		
		this.bbses = new String[(int)temp.length + 10][];
		System.arraycopy(temp, 0, this.bbses, 0, temp.length);
	}

	public void readme() {
		System.out.println("1. 등록, 2. 상세보기, 3. 수정, 4. 삭제, 5. 목록, x. 종료");
	}

	public void exit() {
		System.out.println("프로그램을 종료 합니다.");
	}

	public String getInput() {
		return this.s.next();
	}

	public void create() {
		if (gindex == bbses.length) {
			this.addArray();
		}

		String no = String.valueOf(seq);
		
		System.out.println("input title...");
		String title = getInput();

		System.out.println("input content...");
		String content = getInput();

		String[] bbs = new String[3];
		bbs[0] = no;
		bbs[1] = title;
		bbs[2] = content;

		this.bbses[this.gindex++] = bbs;
		this.seq++;

		System.out.println("등록이 완료 되었습니다.");
	}
	
	private String[] getSearch(String no) {
		for (String[] bbs : this.bbses) {
			if (bbs != null && bbs[0].equals(no)) {
				return bbs;			
			}
		}

		return null;
	}

	private int getIndex(String no) {
		for (int i=0; i<this.bbses.length; i++) {
			String[] bbs = this.bbses[i];
			
			if (bbs != null && bbs[0].equals(no)) {
				return i;
			}
		}
		
		return -1;
	}

	public void read(String no) {
		if (no == null || no == "") {
			System.out.println("잘못 입력 하셨습니다.");
			return;
		}
	
		String[] bbs = getSearch(no);
		
		if (bbs == null) {
			System.out.println("게시글이 없습니다.");
			return;
		}
		
		System.out.println("no: " + bbs[0]);
		System.out.println("title: " + bbs[1]);
		System.out.println("content: " + bbs[2]);
	}

	public void update(String no) {
		if (no == null || no == "") {
			System.out.println("잘못 입력 하셨습니다.");
			return;
		}
	
		String[] bbs = this.getSearch(no);
		
		if (bbs == null) {
			System.out.println("게시글이 없습니다.");
			return;
		}

		System.out.println("input title...");
		String title = this.getInput();

		System.out.println("input content...");
		String content = this.getInput();

		bbs[1] = title;
		bbs[2] = content;

		System.out.println("수정이 완료 되었습니다.");
	}
	
	public void delete(String no) {
		if (no == null || no == "") {
			System.out.println("잘못 입력 하셨습니다.");
			return;
		}

		int index = this.getIndex(no);

		if (index == -1) {
			System.out.println("게시글이 없습니다.");
			return;
		}

		this.bbses[index] = null;
		this.gindex--;

		int length = this.bbses.length;				

		for (int i=0; i<length; i++) {
			
			if (index == 0) {
				break;
			}

			if (index == length-1) {
				break;
			}					

			if (i > index) {
				if (i < length) {
					this.bbses[i-1] = this.bbses[i];
					this.bbses[i] = null;
				}
			}
		}

		System.out.println("삭제가 완료 되었습니다.");
	}

	public void getList() {
		for (int i=0; i<this.bbses.length; i++) {
			if (this.bbses[i] == null) continue;				

			System.out.println("index: " + i);
			System.out.println("no: " + this.bbses[i][0]);
			System.out.println("title: " + this.bbses[i][1]);
			System.out.println("content: " + this.bbses[i][2]);
		}			
	}

    public static void main(String[] args) {

		Bbs bbs = new Bbs(); 

		while(true) {
			bbs.readme();		

			String choice = bbs.getInput();

			if (choice.equals("1")) {
				bbs.create();
			} else if (choice.equals("2")) {
				System.out.println("번호를 입력해 주십시오.");
				bbs.read(bbs.getInput());
			} else if (choice.equals("3")) {
				System.out.println("번호를 입력해 주십시오.");
				bbs.update(bbs.getInput());
			} else if (choice.equals("4")) {
				System.out.println("번호를 입력해 주십시오.");
				bbs.delete(bbs.getInput());
			} else if (choice.equals("5")) {
				bbs.getList();
			} else if (choice.equals("x")) {
				bbs.exit();
				break;
			} else {
				System.out.println("잘못 입력 하셨습니다.\n다시 입력해 주십시오.");
			}
        }	
    }
}



[Java Console 게시판 만들기] - http://blog.whitelife.co.kr/161 


윗 글의 게시판 소스 개선 입니다.


기존 main 함수로 작성 했던 부분을 기능별로 분리하여 작성 하였습니다. 


bbs.java

import java.util.Scanner;

public class bbs {
  
	private static Scanner s = new Scanner(System.in);
	
	private static String[][] bbses = new String[9][];
	private static int seq = 1;
	private static int gindex = 0;
	
	public static void readme() {
		System.out.println("1. 등록, 2. 상세보기, 3. 수정, 4. 삭제, 5. 목록, x. 종료");
	}

	public static void exit() {
		System.out.println("프로그램을 종료 합니다.");
	}

	public static String getInput() {
		return s.next();
	}
	
	public static void create() {
		if (gindex == bbses.length) {
			System.out.println("게시글이 꽉 찼습니다.\n삭제 후 이용해 주세요.");
			return;
		}

		String no = String.valueOf(seq);
		
		System.out.println("input title...");
		String title = getInput();

		System.out.println("input content...");
		String content = getInput();

		String[] bbs = new String[3];
		bbs[0] = no;
		bbs[1] = title;
		bbs[2] = content;

		bbses[gindex++] = bbs;
		seq++;

		System.out.println("등록이 완료 되었습니다.");
	}
	
	private static String[] getSearch(String no) {
		for (String[] bbs : bbses) {
			if (bbs != null && bbs[0].equals(no)) {
				return bbs;			
			}
		}

		return null;
	}

	private static int getIndex(String no) {
		for (int i=0; i<bbses.length; i++) {
			String[] bbs = bbses[i];
			
			if (bbs != null && bbs[0].equals(no)) {
				return i;
			}
		}
		
		return -1;
	}

	public static void read(String no) {
		if (no == null || no == "") {
			System.out.println("잘못 입력 하셨습니다.");
			return;
		}
	
		String[] bbs = getSearch(no);
		
		if (bbs == null) {
			System.out.println("게시글이 없습니다.");
			return;
		}
		
		System.out.println("no: " + bbs[0]);
		System.out.println("title: " + bbs[1]);
		System.out.println("content: " + bbs[2]);
	}

	public static void update(String no) {
		if (no == null || no == "") {
			System.out.println("잘못 입력 하셨습니다.");
			return;
		}
	
		String[] bbs = getSearch(no);
		
		if (bbs == null) {
			System.out.println("게시글이 없습니다.");
			return;
		}

		System.out.println("input title...");
		String title = getInput();

		System.out.println("input content...");
		String content = getInput();

		bbs[1] = title;
		bbs[2] = content;

		System.out.println("수정이 완료 되었습니다.");
	}
	
	public static void delete(String no) {
		if (no == null || no == "") {
			System.out.println("잘못 입력 하셨습니다.");
			return;
		}

		int index = getIndex(no);

		if (index == -1) {
			System.out.println("게시글이 없습니다.");
			return;
		}

		bbses[index] = null;
		gindex--;

		int length = bbses.length;				

		for (int i=0; i<length; i++) {
			
			if (index == 0) {
				break;
			}

			if (index == length-1) {
				break;
			}					

			if (i > index) {
				if (i < length) {
					bbses[i-1] = bbses[i];
					bbses[i] = null;
				}
			}
		}

		System.out.println("삭제가 완료 되었습니다.");
	}

	public static void getList() {
		for (int i=0; i<bbses.length; i++) {
			if (bbses[i] == null) continue;				

			System.out.println("index: " + i);
			System.out.println("no: " + bbses[i][0]);
			System.out.println("title: " + bbses[i][1]);
			System.out.println("content: " + bbses[i][2]);
		}			
	}

  public static void main(String[] args) {
	while(true) {
		readme();		

		String choice = getInput();

		if (choice.equals("1")) {
			create();
		} else if (choice.equals("2")) {
			System.out.println("번호를 입력해 주십시오.");
			read(getInput());
		} else if (choice.equals("3")) {
			System.out.println("번호를 입력해 주십시오.");
			update(getInput());
		} else if (choice.equals("4")) {
			System.out.println("번호를 입력해 주십시오.");
			delete(getInput());
		} else if (choice.equals("5")) {
			getList();
		} else if (choice.equals("x")) {
			exit();
			break;
		} else {
			System.out.println("잘못 입력 하셨습니다.\n다시 입력해 주십시오.");
		}
     }	
  }
}



최근 들어 자바란 아이에게 신경을 별로 쓰지 못 했다. ㅎㅎ

생각 없이 코딩을 하던 중 String 비교를 하는데 비교가 되지 않아서 equals 함수를 써서 해결을 했다. 무심했던 것 일까...


test.java

public class test {
  public static void main(String[] args) {

    String a = "test";
    String b = "test";
    String c = new String("test");
    String d = new String("test");

    System.out.println("a: " + System.identityHashCode(a));
    System.out.println("b: " + System.identityHashCode(b));
    System.out.println("c: " + System.identityHashCode(c));
    System.out.println("d: " + System.identityHashCode(d));

    System.out.println("a == b: " + (a == b));
    System.out.println("a equals b: " + a.equals(b));
    System.out.println("c == d: " + (c == d));
    System.out.println("c equals d: " + c.equals(d));
  }
}

실행 결과

a: 1579880541
b: 1579880541
c: 1564441079
d: 1918924532
a == b: true
a equals b: true
c == d: false
c equals d: true

c == d 부분을 보면 hash 값이 다른 것을 볼 수 있다. 당연히 주소 값을 비교 하기 때문이다. 뻘짓을 하다니 완전 좌절 했다. ㅋ


게시판을 만들어 보자 


기능 정의

게시글의 최대 수는 9개로 제한 한다. 아래는 세부 기능 이다.


1.  등록

2.  상세 보기

3.  수정

4.  삭제

5.  리스트 보기

6.  종료


Sample

게시 글 항목은 번호, 제목, 내용 간단하게 3가지로 간다.


no: 1

title: title

content: content

 

Code

bbs.java

import java.util.Scanner;

public class bbs {
  
  public static void main(String[] args) {
   
  	Scanner s = new Scanner(System.in);

	String[][] bbses = new String[9][];
	int seq = 1;
	int gindex = 0;

	while(true) {
			
		System.out.println("1. create, 2. read, 3. update, 4. delete, 5. list, x. exit");

		String choice = s.next();

		if (choice.equals("1")) {
				
			if (gindex == bbses.length) {
				System.out.println("게시글이 꽉 찼습니다.\n삭제 후 이용해 주세요.");
				continue;
			}

			String no = String.valueOf(seq);
				
			System.out.println("input title...");
			String title = s.next();

			System.out.println("input content...");
			String content = s.next();

			String[] bbs = new String[3];
			bbs[0] = no;
			bbs[1] = title;
			bbs[2] = content;

			bbses[gindex++] = bbs;
			seq++;

			System.out.println("Complete...");
		} else if (choice.equals("2")) {
				
			System.out.println("input no...");
			String no = s.next();					
				
			boolean flag = false;		

			for (String[] bbs : bbses) {
				if (bbs != null && bbs[0].equals(no)) {
					System.out.println("no: " + bbs[0]);
					System.out.println("title: " + bbs[1]);
					System.out.println("content: " + bbs[2]);
					flag = true;
					break;
				}
			}

			if (!flag) {
				System.out.println("게시글이 없습니다.");
			}
		} else if (choice.equals("3")) {
				
			System.out.println("input no...");
			String no = s.next();					
				
			boolean flag = false;		

			for (String[] bbs : bbses) {
				if (bbs != null && bbs[0].equals(no)) {
					System.out.println("input title...");
					String title = s.next();

					System.out.println("input content...");
					String content = s.next();

					bbs[1] = title;
					bbs[2] = content;

					flag = true;
					break;
				}
			}
				
			if (flag) {
				System.out.println("Complete...");
			} else {
				System.out.println("게시글이 없습니다.");
			}
		} else if (choice.equals("4")) {

			System.out.println("input no...");
			String no = s.next();					
				
			int index = -1;			
			boolean flag = false;		
				
			if (gindex == 0) {
				System.out.println("입력된 게시글이 없습니다.");
				continue;
			}

			for (int i=0; i<bbses.length; i++) {
				String[] bbs = bbses[i];

				if (bbs != null && bbs[0].equals(no)) {
					bbses[i] = null;
					index = i;
					gindex--;
					flag = true;
					break;
				}
			}
				
			if (flag) {
					
				int length = bbses.length;				

				for (int i=0; i<length; i++) {
						
					if (index == 0) {
						break;
					}

					if (index == length-1) {
						break;
					}					

					if (i > index) {
						if (i < length) {
							bbses[i-1] = bbses[i];
							bbses[i] = null;
						}
					}
				}

				System.out.println("Complete...");
			} else {
				System.out.println("게시글이 없습니다.");
			}

		} else if (choice.equals("5")) {
			for (int i=0; i<bbses.length; i++) {
				if (bbses[i] == null) continue;				

				System.out.println("index: " + i);
				System.out.println("no: " + bbses[i][0]);
				System.out.println("title: " + bbses[i][1]);
				System.out.println("content: " + bbses[i][2]);
			}			
		} else if (choice.equals("x")) {
			System.out.println("프로그램을 종료 합니다.");
			break;
		} else {
			System.out.println("잘못 입력 하셨습니다.\n다시 입력해 주십시오.");
		}
	}	
  }
}

실행 결과


1. create, 2. read, 3. update, 4. delete, 5. list, x. exit

1

input title...

111

input content...

222

Complete...

1. create, 2. read, 3. update, 4. delete, 5. list, x. exit

1

input title...

333

input content...

444

Complete...

1. create, 2. read, 3. update, 4. delete, 5. list, x. exit

1

input title...

555

input content...

666

Complete...

1. create, 2. read, 3. update, 4. delete, 5. list, x. exit

5

index: 0

no: 1

title: 111

content: 222

index: 1

no: 2

title: 333

content: 444

index: 2

no: 3

title: 555

content: 666

1. create, 2. read, 3. update, 4. delete, 5. list, x. exit

x

프로그램을 종료 합니다.


심플한 게시판이 실행 되는 것을 확인 할 수 있다.


긴 글을 읽어 주셔서 감사합니다. 


 

Java 실행 시 아래 와 같은 예외가 발생 할 경우 Java Version 을 맞춰 줘야 한다.

 

Exception in thread "main" java.lang.UnsupportedClassVersionError: httpsclient : Unsupported major.minor version 51.0
 at java.lang.ClassLoader.defineClass1(Native Method)
 at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
 at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
 at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
 at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
 at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: httpsclient. Program will exit.

 

버전 예외 표

 version

exception 

 1.7

 51.0

 1.6

 50.0

 1.5

 49.0

 

해결 방법

- Linux

 

whitelife@whitelife:~/work_java/myapp$ sudo update-alternatives --config java
[sudo] password for whitelife:
대체 항목 java에 대해 (/usr/bin/java 제공) 2개 선택이 있습니다.

  선택       경로                                          우선순  상태
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-oracle/jre/bin/java          1063      자동 모드
  1            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      수동 모드
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java          1063      수동 모드

기본 사항[*]을 사용하려면 엔터, 다른 것을 사용하려면 번호를 입력하십시오: 1
update-alternatives: /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 사용해서 수동 모드에서 /usr/bin/java (java) 제공. 

 

위 표에 맞는 버전으로 적용 한 후 다시 실행 하면 해결 된다.

 

'Java' 카테고리의 다른 글

Java Console 게시판 만들기 - 3  (0) 2013.11.12
Java Console 게시판 만들기 - 2  (0) 2013.11.11
Java Console 게시판 만들기  (1) 2013.11.10
JDBC로 Query 작성하기 (Mysql)  (0) 2012.12.19
Date 함수 관련  (0) 2012.12.03


mysql-connector-java-5.1.22-bin.jar


Java로 Dbms에 접속하여 데이터를 가지고오는 행위를 할 때에 JDBC를 이용한다. JSP 페이지에서 작성을 했고 Apache Tomcat을 이용 하였다. 라이브러리 파일은 WebContent/WEB-INF/lib 폴더에 넣도록 한다. 파일로 첨부 하였다. 간단한 예제를 살펴 보도록 하자.



<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%
   
    // STEP1: mysql 드라이버 로드
    Class.forName("com.mysql.jdbc.Driver");

    // STEP2: Connection 생성
    Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/whitelife", "whitelife", "whitelife");

    // STEP3: Query 작성
    PreparedStatement preparedStatement = connection.prepareStatement("select * from tb_test where test_no = ?");
   
    // STEP4: 조건 처리
    preparedStatement.setInt(1, 2);

    // STEP5: 실행 -> 결과 값 받기
    ResultSet resultSet = preparedStatement.executeQuery();
   
    // STEP6: 결과 값 보기
    while (resultSet.next()) {
        out.println(resultSet.getInt("test_no"));
        out.println(resultSet.getString("title"));
        out.println(resultSet.getString("content"));
        out.println(resultSet.getString("create_date"));
    };
   
    resultSet.close();
   preparedStatement.close();
   connection.close();


%>



간단하게 작성 해보았다. 중요한건 Java Application 에서 Dbms 로 Connection 을 했다는건 즉 명시적으로 연결을 끊어 줘야 한다. 굵은 코드 부분은 꼭 작성 해야 한다. out.println 은 JSP 내장객체를 이용 한 것 이다. 웹 브라우저 화면에 출력이 된다.



Java로 유용하게 쓸수있는 Date 함수를 정리 해보았다. 아래의 코드를 참고.


소스



package kr.whitelife.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

/**
 * <p>
 *     2012-12-03 날짜 관련 유틸
 * </p>
 *
 * @author whitelife
 * @see Calendar
 * @see Date
 * @see SimpleDateFormat
 * @see String
 * @see ParseException
 * @since 1.6
 * @version 0.1.1
 */
public class DateUtil {
  
    /**
     * DateFormat 생성
     * @param pattern
     * @return
     */
    private static SimpleDateFormat createSimpleDateFormat(String pattern) {
        if (pattern == null) {
            return new SimpleDateFormat();
        } else {
            return new SimpleDateFormat(pattern, Locale.KOREAN);
        }
    }
   
    /**
     * Calender 생성
     * @param date
     * @return
     */
    private static Calendar createCalender(Date date) {
        Calendar calendar = Calendar.getInstance(Locale.KOREAN);
        calendar.setTime(date);
       
        return calendar;
    }
  
    /**
     * 현재 날짜 문자열 리턴
     * @param pattern
     * @return
     */
    public static String nowDateToString(String pattern) {
        return createSimpleDateFormat(pattern).format(new Date());
    }
  
    /**
     * 날짜 문자열 리턴
     * @param pattern
     * @param date
     * @return
     */
    public static String dateToString(String pattern, Date date) {
        return createSimpleDateFormat(pattern).format(date);
    }
  
    /**
     * 현재 날짜 문자열 리턴 [yyyy-MM-dd]
     * @return
     */
    public static String nowDateToBasicString() {
        return createSimpleDateFormat("yyyy-MM-dd").format(new Date());
    }
  
    /**
     * 날짜 문자열 리턴 [yyyy-MM-dd]
     * @param date
     * @return
     */
    public static String dateToBasicString(Date date) {
        return createSimpleDateFormat("yyyy-MM-dd").format(date);
    }
  
    /**
     * 현재 날짜 문자열 리턴 [yyyyMMdd]
     * @return
     */
    public static String nowDateToBasic2String() {
        return createSimpleDateFormat("yyyyMMdd").format(new Date());
    }
  
    /**
     * 날짜 문자열 리턴 [yyyyMMdd]
     * @param date
     * @return
     */
    public static String dateToBasic2String(Date date) {
        return createSimpleDateFormat("yyyyMMdd").format(date);
    }
  
    /**
     * 문자열 입력 후 날짜 객체 리턴
     * @param pattern
     * @param source
     * @return
     */
    public static Date stringToDate(String pattern, String source) {
        try {
            return createSimpleDateFormat(pattern).parse(source);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }
    }
  
    /**
     * 문자열 입력 후 날짜 객체 리턴 [yyyy-MM-dd]
     * @param pattern
     * @param source
     * @return
     */
    public static Date stringToBasicDate(String source) {
        try {
            return createSimpleDateFormat("yyyy-MM-dd").parse(source);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }
    }
  
    /**
     * 문자열 입력 후 날짜 객체 리턴 [yyyyMMdd]
     * @param pattern
     * @param source
     * @return
     */
    public static Date stringToBasic2Date(String source) {
        try {
            return createSimpleDateFormat("yyyyMMdd").parse(source);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }
    }
  
    /**
     * 이전 년도 구하기 [현재 날짜 기준]
     * @param year
     * @return
     */
    public static Date prevYear(int year) {
        return prevYear(year, new Date());
    }
  
    /**
     * 이전 년도 구하기
     * @param year
     * @param date
     * @return
     */
    public static Date prevYear(int year, Date date) {
        Calendar calendar = createCalender(date);
        calendar.add(Calendar.YEAR, year * -1);
      
        return calendar.getTime();
    }
  
    /**
     * 이후 년도 구하기 [현재 날짜 기준]
     * @param year
     * @return
     */
    public static Date nextYear(int year) {
        return nextYear(year, new Date());
    }
  
    /**
     * 이후 년 구하기
     * @param year
     * @param date
     * @return
     */
    public static Date nextYear(int year, Date date) {
        Calendar calendar = createCalender(date);
        calendar.add(Calendar.YEAR, year);
      
        return calendar.getTime();
    }
  
    /**
     * 이전 달 구하기 [현재 날짜 기준]
     * @param month
     * @return
     */
    public static Date prevMonth(int month) {
        return prevMonth(month, new Date());
    }
  
    /**
     * 이전 달 구하기
     * @param month
     * @param date
     * @return
     */
    public static Date prevMonth(int month, Date date) {
        Calendar calendar = createCalender(date);
        calendar.add(Calendar.MONTH, month * -1);
      
        return calendar.getTime();
    }
  
    /**
     * 이후 달 구하기 [현재 날짜 기준]
     * @param month
     * @return
     */
    public static Date nextMonth(int month) {
        return nextMonth(month, new Date());
    }
  
    /**
     * 이후 달 구하기
     * @param month
     * @param date
     * @return
     */
    public static Date nextMonth(int month, Date date) {
        Calendar calendar = createCalender(date);
        calendar.add(Calendar.MONTH, month);
      
        return calendar.getTime();
    }
  
    /**
     * 이전 날짜 구하기 [현재 날짜 기준]
     * @param day
     * @return
     */
    public static Date prevDay(int day) {
        return prevDay(day, new Date());
    }
  
    /**
     * 이전 날짜 구하기
     * @param day
     * @param date
     * @return
     */
    public static Date prevDay(int day, Date date) {
        Calendar calendar = createCalender(date);
        calendar.add(Calendar.DATE, day * -1);
      
        return calendar.getTime();
    }
  
    /**
     * 이후 날짜 구하기 [현재 날짜 기준]
     * @param day
     * @return
     */
    public static Date nextDay(int day) {
        return nextDay(day, new Date());
    }
  
    /**
     * 이후 날짜 구하기
     * @param day
     * @param date
     * @return
     */
    public static Date nextDay(int day, Date date) {
        Calendar calendar = createCalender(date);
        calendar.add(Calendar.DATE, day);
      
        return calendar.getTime();
    }
  
    /**
     * 이전 시 구하기
     * @param hour
     * @param date
     * @return
     */
    public static Date prevHour(int hour, Date date) {
        Calendar calendar = createCalender(date);
        calendar.add(Calendar.HOUR, hour * -1);
      
        return calendar.getTime();
    }
  
    /**
     * 이후 시 구하기
     * @param hour
     * @param date
     * @return
     */
    public static Date nextHour(int hour, Date date) {
        Calendar calendar = createCalender(date);
        calendar.add(Calendar.HOUR, hour);
      
        return calendar.getTime();
    }
  
    /**
     * 이전 분 구하기
     * @param minute
     * @param date
     * @return
     */
    public static Date prevMinute(int minute, Date date) {
        Calendar calendar = createCalender(date);
        calendar.add(Calendar.MINUTE, minute);
      
        return calendar.getTime();
    }
  
    /**
     * 이후 분 구하기
     * @param minute
     * @param date
     * @return
     */
    public static Date nextMinute(int minute, Date date) {
        Calendar calendar = createCalender(date);
        calendar.add(Calendar.MINUTE, minute);
      
        return calendar.getTime();
    }
  
    /**
     * 이전 초 구하기
     * @param second
     * @param date
     * @return
     */
    public static Date prevSecond(int second, Date date) {
        Calendar calendar = createCalender(date);
        calendar.add(Calendar.SECOND, second);
      
        return calendar.getTime();
    }
  
    /**
     * 이후 초 구하기
     * @param second
     * @param date
     * @return
     */
    public static Date nextSecond(int second, Date date) {
        Calendar calendar = createCalender(date);
        calendar.add(Calendar.SECOND, second);
      
        return calendar.getTime();
    }
   
}



사용 방법



public static void main(String[] args) {
    System.out.println(dateToString("yyyy-MM-dd a HH:mm:ss", DateUtil.nextYear(1)));
    System.out.println(DateUtil.nowDateToBasicString());
    System.out.println(DateUtil.nowDateToBasic2String());
}



결과



2013-12-03 오후 16:17:06
2012-12-03
20121203



다른 함수 들도 위와 같은 방법으로 이용 하면 된다.

좋은 의견이나 개선점은 댓글로 부탁 드려요 !!!


+ Recent posts