개발 등/JAVA 13

[JAVA] 파일 쓰기

간편하게 파일쓰는 법 StringBuffer fileName = new StringBuffer("c:\upload").append(File.seperator);BufferedWriter out = null;try {out = new BufferedWriter(new FileWriter(fileName.toString(), true)); // 이어쓰기out = new BufferedWriter(new FileWriter(fileName.toString())); // 덮어쓰기out.newLine(); // 줄바꿈(OS에 맞게 자동 개행문자 처리됨)out.write("abc");} catch (IOException ie) {ie.printStackTrace();} finally {if (out != null)..

개발 등/JAVA 2014.05.26

[JAVA] 모든 OS에서 서버의 고정IP 조회하기

WAS나 웹서버가 구동되는 서버 IP를 조회할 때 OS가 Windows 계열일 때는 String hostAddr = java.net.InetAddress.getLocalHost().getHostAddress();를 하면 문제가 없다. 그런데 UNIX나 LINUX에서 해당 소스를 구동하면 java.net.UnknownHostException 등의 에러가 나거나 제대로 된 IP를 반환하지 않는다.OS나 장치에 상관없이 고정 IP를 가져오기 위해선 String hostAddr = "";try {Enumeration nienum = NetworkInterface.getNetworkInterfaces();while (nienum.hasMoreElements()) {NetworkInterface ni = nienu..

개발 등/JAVA 2014.01.07

Exception in thread "main" java.lang.NoClassDefFoundError: (이클립스에서 생성한 JAVA 파일 콘솔에서 호출할 때 에러 발생)

이클립스에서 생성한 자바파일을 콘솔에서 호출할 때 Exception in thread "main" java.lang.NoClassDefFoundError: 호출할 클래스파일명이나 메인메서드가 정확하다는 가정하에서 이런 예외가 발생하면 classpath의 문제일 경우가 대부분이다.일반적으로 환경변수에 CLASSPATH가 제대로 세팅되어 있으면, 해당 클래스파일이 있는 폴더로 이동해서java 해당클래스파일명하면 해당 클래스의 메인메서드가 호출되어야 한다.하지만 환경변수에 세팅한 CLASSPATH와는 별도로 이클립스는 workspace를 따로 구성하여 잡기 때문에 이런 문제가 발생한다고 한다. 해결책은 다음과 같다. 예를 들어 d:\workspace\a-project\WebContents\WEB-INF\cla..

개발 등/JAVA 2013.08.06

[JAVA] 양력 및 음력 법정공휴일, 일요일 제외한 날짜 조회하기

http://apps.icu-project.org/icu-jsp/downloadPage.jsp?ver=4.8.1.1&base=j icu4j-4_8_1_1.jar 파일을 lib에 추가. * 변수를 선언하고 음력 및 양력에 해당하는 값을 배열로 저장한다.private Calendar cal;private ChineseCalendar chinaCal;private String[] solarArr;private String[] lunarArr; public DateUtil() {cal = Calendar.getInstance();chinaCal = new ChineseCalendar();solarArr = new String[]{"0101", "0301", "0505", "0606", "0815", "1225"..

개발 등/JAVA 2013.07.15

java.lang.ClassCastException: java.math.BigDecimal

DB에서 NUMBER 타입으로 된 칼럼을 SqlMapClient.queryForList()로 조회하여 java.util.HashMap에 담게 되면 BigDecimal 형태로 리턴한다. 그래서 형변환을 할 때에는 BigDecimal 형태로 해야 한다.일반적인 방식으로 Integer.parseInt((String)map.get("CLOUMN NAME"));하면 java.lang.ClassCastException: java.math.BigDecimal 예외가 발생한다. BigDecimal로 형변환한 후 다시 int 타입으로 형변환을 하면 된다.BigDecimal bd = (BigDecimal)map.get("CLOUMN NAME");int i = bd.intValue();

개발 등/JAVA 2013.06.26

java.lang.IllegalStateException: Cannot create a session after the response has been committed

Filter 클래스의 chain.doFilter(response, request)를 호출할 때 위의 에러가 발생한다면, 아마도 해당 Filter클래스나 이전에 호출되는 Filter 클래스에서 response 객체를 정상적으로 chain.doFilter()를 호출하기 전에 response.sendRedirect("/"); 등으로 호출했을 가능성이 많다.doFilter()에 들어가는 response 인자는 재가공되지 않은 상태여야 하므로, sendRedirect()등으로 호출한 다음엔 return;으로 처리해주어야 예외가 발생하지 않는다. 예) request.sendRedirect("/comm/main.do");return;

개발 등/JAVA 2013.03.05

Java Reflection을 이용하여 Class 정보 조회하기

Java의 Reflection 을 이용하여 객체의 정보를 조회한다. Test t = new Test(); Class class = t.getClass(); // Class로 형변환 String className = class.getName(); // package명까지 포함한 도메인명 String simpleClassName = class.getSimpleName(); // 도메인명만 포함된 클래스명 Field[] field = class.getDeclaredFields(); // 선언된 변수명을 Field 배열로 리턴 for(Field field : t.getClass().getDeclaredFields()){ Stirng fieldName = field.getName(); // 변수명 String f..

개발 등/JAVA 2012.05.10

JAVA 정규표현식 (이메일, 숫자, 아이디)

1. 이메일 형식 체크 String regex = "^[_a-zA-Z0-9-\\.]+@[\\.a-zA-Z0-9-]+\\.[a-zA-Z]+$"; 2. 숫자만 입력 체크 String regex = "^[0-9]+$"; // 정수형만 체크 String regex = "^[+-]?\\d*(\\.?\\d*)$"; //실수형까지 체크 3. 아이디 형식 체크 String regex = "^[a-zA-Z]{1}[a-zA-Z0-9_]{4,11}$"; 예) 시작은 영문으로만, '_'를 제외한 특수문자 안되며 영문, 숫자, '_'으로만 이루어진 5 ~ 12자 이하 4. HTML 걷어내기 String regex = "]+>";

개발 등/JAVA 2011.01.14