@WebServlet("url경로") class 서블릿 이름 extends HttpServlet { doGet() : GET 방식으로 요청이 들어왔을 때 doPost() : POST 방식으로 요청이 들어왔을 때 init() : 초기화 메서드. 객체 생성(생성자 실행) 후 바로 실행(한번만) destory() : 소멸 메서드 } 이외에도 서블릿에는 여러 메서드가 많이 있지만 doGet, doPost, init, destory가 가장 많이 쓰입니다.
결론은 '껐다 켜기'다. JDBC를 통해 DB를 연동하면 자바를 통해 SQL 문을 수행할 수 있다. 이때 PreparedStatement 객체를 만들어 SQL 문을 저장한다. 만약 SQL문이 update, delete, insert 중 하나면 PreparedStatement의 executeUpdate(); 메서드를 통해 SQL 문을 수행한다. DAO 클래스에서 급여(SAL) 칼럼의 값을 주어진 인상률(%) 만큼 높여주는 SQL 문을 수행하려고 시도했으나 좀처럼 말을 듣지 않았다. public void raiseSal(double rate) { Connection con = GetConnection.getConnection(); PreparedStatement pstmt = null; try { pstmt..
2가지 예외(Exception) 프로그램에 에러가 발생하면 자바는 동작을 멈추고 에러 메시지를 보낸다. 이를 자바가 예외를 발생시켰다고 말한다. 예외가 발생하면 예외를 발생시킨 코드가 실행되지 않을 뿐만 아니라 프로그램 자체가 동작할 수 없게 된다. 때문에 개발자는 이런 상황을 대비 해야 한다. 자바에서는 java.lang.Exception 클래스를 통해 예외를 관리한다. 자바의 모든 클래스는 java.lang.Exception을 상속받는다. 예외는 크게 두 가지로 분류된다. 일반 예외(Exception) 실행 예외(Runtime Exception) 이클립스 같은 IDE를 통해 코딩을 하다보면 빨간 줄로 코드가 컴파일될 수 없다는 경고가 종종 표시된다. 이처럼 자바 컴파일러가 소스 파일을 컴파일할 때 확..
자바에서 변수(Variable)는 '값을 저장하는 공간'으로 어찌 보면 간단한 개념이다. 사용법 자체도 직관적이기 때문에 코딩을 처음 배우는 사람도 보자마자 이해하는 데는 별 무리가 없다. 그렇지만 변수는 '지역변수'나 '참조 변수'처럼 특수한 형태로 세분화되기도 하고, '데이터 타입' '데이터 타입 변환(형변환)' 같은 개념도 엮여 있으며 코딩을 구성하는 매우 기본적인 단위인 만큼 개념을 정확히 이해할 필요가 있다. 정의 코딩을 통해 만들어진 프로그램은 기능을 수행하며 데이터를 메모리에 저장하게 된다. 이때 변수는 하나의 값을 저장할 수 있는 메모리의 공간으로서 역할을 수행한다. 데이터는 여러 타입을 가지고 있는데(정수, 실수, 참과거짓 등) 하나의 변수에는 한 가지의 타입만 저장할 수 있다. 선언 변..
정의 HashMap은 Map 인터페이스를 구현한 함수다. Collection Framework에 속해있다. 키(key)와 값(Value)으로 구성된 객체를 저장한다. 키는 중복을 허용하지 않으며 값은 중복 저장이 가능하다. 같은 키가 새롭게 저장되면 이전에 있던 키-값은 사라진다. HashMap에 데이터가 저장될 때 그 순서는 의미가 없다. 활용 HashMap은 여러 검색 방식 중 속도가 빠른 해싱 검색을 사용하기 때문에 많은 양의 데이터를 두고 검색할 때 더 빠른 결과를 얻을 수 있다. 이와 함께 키를 이용해서 그에 해당하는 값을 찾는 특성 때문에 전화번호부(전화번호-이름), 편의점 상품 관리(상품명-가격) 처럼 많은 데이터를 저장하고 쉽게 검색 관리해야 하는 기능을 구현할 때 사용할 수 있다. 사용법..
Collection Framework를 구성하는 인터페이스 중 자주 활용되는 ArrayList에 대해 정리한다. 배열과 비슷한 기능 수행 ArrayList는 이름에서도 알 수 있듯 배열(Array)의 기능을 수행한다. 그러면서도 일반적인 배열[]을 사용했을 때 동반되는 불편함인 배열의 크기 문제를 제거한다. 예를 들어 public static void main(String[] args) { int[] arr = new int[2]; arr[0] = 0; arr[1] = 1; arr[2] = 2; arr[3] = 3; for(int i = 0; i < arr.size(); i ++) { System.out.println(i); } 배열의 크기가 2인 arr에 3번째 인덱스 값을 넣으면 ArrayIndexO..
Properties를 통해 .properties .xml 등 파일을 수정 및 저장할 수 있다. 우선 Properties를 활용하기 위해 객체를 선언한다. import java.util.*; import java.io.*; class PropertiesEx { public static void main(String[] args) { Properties prop = new Properties(); // 객체 선언 위에서 보이듯 작업을 수행하기 위해서는 java.util.Properties java.io.IOException 등의 import가 필요한데, 편의상 java.util과 java.io의 하위 경로를 모두 import 해주도록 한다. prop.setProperty("this is test", "oka..
Generic Generic(제네릭)과 관련해 자료를 찾아보니 생각보다 깊은 내용이 다루어지고 있었다. 보통은 문법과 활용 예제를 설명하고 땡 하는 느낌이라면 Generic은 이 기능이 자바에 도입되기까지의 과정과 Generic 대신 다른 방법을 사용하면 겪는 부작용 등까지 파고드는 느낌이랄까. 사실 온전히 이해하지는 못했다. 그러나 현재 수준에선 일단 대략적인 흐름만 기억하고 넘어가기 위해 기록을 한다. Generic은 JDK 1.5 버전부터 도입됐다. 1.5 버전의 Release Date은 2004년이다. 현재 Generic의 중요도 치고는 비교적 가까운 시기에 탄생한 것으로 받아들이는 분위기 같다. 아무래도 아직 현업에 있는 시니어 개발자들이 1.5 이전 버전을 사용해본 경험이 있고 Generic ..
substring() substring() 메서드는 문자열의 일부분을 반환하는 메서드다. 예를 들어 "hello"라는 문자열 중 "hel"을 잘라내어 반환하는 식이다. JDK가 기본적으로 제공하는 String 클래스에 구현돼 있다. 원본 문서는 JDK API - substring() 에서 확인 가능하다. 형태는 두 가지다. substring(int beginIndex) subSequence(int beginIndex, int endIndex) int형 변수 하나만 받는 경우엔 해당 인덱스 번호부터 끝까지 자른다. 인덱스 번호는 0부터 시작하는 점에 주의한다. Ex) "unhappy".substring(2) returns "happy" int형 변수 두 개를 받는 형태는 앞에 받은 인덱스 번호부터 뒤에 받..
indexOf() 메서드는 JDK에 이미 존재하는 java.lang 패키지에 있는 Class String에 구현돼 있다. 별도 조치 없이 사용하면 된다. indexOf() indexOf()는 특정 문자 또는 문자열이 앞에서부터 처음 발견되는 인덱스를 반환한다. Hello에서 e라는 문자가 몇번째에 있나요? 같은 질문에 답하는 것이다. 만약 찾지 못하면 -1을 반환한다. 쓰임새는 매개변수 타입에 따라 4가지로 나뉜다. indexOf(int ch) indexOf(int ch, int fromIndex) indexOf(String str) indexOf(String str, int fromIndex) JDK API 문서를 확인하면 자세한 정보를 볼 수 있다. 활용법은 크게 복잡하지 않다. 상황에 따라 맞는 형..