날짜 연산 처리: Calendar를 활용한 날짜 조작
자바에서 날짜에 일수를 더하거나 빼야 할 경우 Calendar 클래스를 사용하는 것이 표준적인 방법이다. 아래 예제는 현재 날짜에 하루를 추가하는 코드이다.
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
Date currentDate = new Date();
Calendar calendar = new GregorianCalendar();
calendar.setTime(currentDate);
calendar.add(Calendar.DAY_OF_MONTH, 1); // 하루 추가
Date nextDay = calendar.getTime();
문자열과 날짜 간 변환: SimpleDateFormat 활용
SimpleDateFormat은 문자열과 java.util.Date 간의 형식화된 변환을 지원한다. 주의할 점은 포맷 지정 시 소문자 mm는 분을 의미하므로, 월을 표현하려면 대문자 MM을 사용해야 한다.
// 문자열 → 날짜
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String inputDate = "2008-04-24";
Date parsedDate = formatter.parse(inputDate);
// 날짜 → 문자열
Date now = new Date();
String outputDate = formatter.format(now);
세션 유효 시간 설정 방법
웹 애플리케이션에서 세션의 만료 시간을 설정하는 방법은 두 가지가 있다.
- web.xml 설정: 전역적으로 기본 세션 타임아웃을 분 단위로 지정한다.
<session-config>
<session-timeout>30</session-timeout> <!-- 30분 후 만료 -->
</session-config>
- 코드 내 동적 설정: 특정 세션 객체에 대해 초 단위로 시간을 설정한다.
session.setMaxInactiveInterval(1800); // 30분 (초 단위)
URL 디코딩과 인코딩 처리
웹 요청에서 한글이나 특수문자가 포함된 파라미터를 안전하게 처리하기 위해 UTF-8 기반 디코딩이 필요하다.
import java.net.URLDecoder;
String decodedValue = URLDecoder.decode(encodedString, "UTF-8");
기본 자료형과 문자열 간 변환
자주 사용되는 타입 변환 메서드들은 다음과 같다.
// String → 숫자형
double d = Double.parseDouble("1467000000");
int i = Integer.parseInt("123");
// int → String
String str1 = String.valueOf(i);
String str2 = Integer.toString(i);
String str3 = "" + i; // 간단한 문자열 연결 방식
// char → String
String charStr = String.valueOf('A');
현재 날짜 정보 추출
시스템에서 현재 년, 월, 일 값을 정수로 가져오거나 형식화된 문자열로 출력할 수 있다.
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1; // 0부터 시작하므로 +1
int day = cal.get(Calendar.DAY_OF_MONTH);
// 오늘 날짜 문자열 (기본 형식)
String today = java.text.DateFormat.getDateInstance().format(new Date());
// SQL DATE 형식으로 변환
java.sql.Date sqlDate = new java.sql.Date(System.currentTimeMillis());
두 날짜 사이의 시간 차이 계산
두 Date 객체 사이의 차이를 밀리초 단위로 계산하고, 이를 초 단위로 변환할 수 있다.
Date start = new Date();
Thread.sleep(3000); // 3초 대기
Date end = new Date();
long diffInSeconds = (end.getTime() - start.getTime()) / 1000;
System.out.println("경과 시간(초): " + diffInSeconds);
문자열 자르기: substring 사용법
substring(int begin, int end)는 시작 인덱스에서 끝 인덱스 직전까지의 부분 문자열을 반환한다. 인덱스는 0부터 시작한다.
String source = "0123456789";
String result = source.substring(0, 2); // "01" 반환
대소문자 변환
문자열의 대소문자를 쉽게 변환할 수 있다.
String text = "ABC34cccddee";
System.out.println(text.toLowerCase()); // 전부 소문자
System.out.println(text.toUpperCase()); // 전부 대문자
MySQL 사용자 권한 부여 및 데이터베이스 접근
명령행 도구에서 MySQL에 접속하여 사용자에게 특정 데이터베이스에 대한 권한을 부여하는 명령어는 다음과 같다.
GRANT CREATE, SELECT, INSERT, UPDATE, DELETE ON dbname.* TO 'username'@'localhost' IDENTIFIED BY 'password';
성공 시 Query OK, 0 rows affected (0.02 sec)와 같은 메시지가 출력된다. 따옴표는 사용하지 않으며, 식별자와 값은 홑따옴표나 공백 없이 입력해야 한다.
SQL Server에서 다중 행 삽입 전략
한 번에 여러 개의 레코드를 삽입하는 효율적인 방법들이 존재한다.
- 방법 1: 개별 INSERT 문
INSERT INTO MyTable(ID, NAME) VALUES (1, '123');
INSERT INTO MyTable(ID, NAME) VALUES (2, '456');
INSERT INTO MyTable(ID, NAME) VALUES (3, '789');
- 방법 2: UNION ALL 활용
INSERT INTO MyTable(ID, NAME)
SELECT 4, '000'
UNION ALL SELECT 5, '001'
UNION ALL SELECT 6, '002';
- 방법 3: VALUES 절의 다중 행 삽입 (SQL Server 2008 이상)
INSERT INTO MyTable(ID, NAME)
VALUES (7, '003'), (8, '004'), (9, '005');
세 번째 방법은 구문이 간결하고 성능 면에서도 유리하여, 지원 환경에서는 권장되는 방식이다.