우리가 HTML로 어떤 양식의 데이터를 전송할 때 반드시 다음과 같은 형식으로 form 태그를 달아 주어야 한다. 여기서 우리는 '이 태그 안에 있는 폼 데이터들은 action 속성에 명시된 index.jsp 스크립트 파일에 의해서 method 속성에 명시된 get 방식으로 처리하시오.'라는 말로 받아들일 수 있다. 여기서 항상 궁금했던 부분이 있다. method 속성이다. 이 속성은 get 과 post 이 두 가지를 값으로 가질 수 있다. 그렇다면 각 값을 달리했을 때의 차이점을 알아보도록 하자. GET vs POST 별 생각 없이 긴 글은 post, 몇 개의 짧은 데이터들은 get 방식으로 사용한다고 지금까지 생각했었다. 하지만 문득 겨우 이런 이유로 나눠놨을까? 하는 생각이 들었다. 찾아보니 각 방..
자바에서 문자열을 다루고 싶을 때 우리는 별 의심없이 String 클래스를 사용하곤 한다. 하지만 상황에 따라서 어떤 문자열 클래스를 사용하느냐에 따라 자원을 더 절약할 수 있고, 능률이 올라갈 수 있는 법이다. 따라서 여러 문자열 클래스에 대해 정리해 보도록 하겠다. String vs StringBuffer vs StringBuilder 위 세 클래스는 모두 문자열 클래스이다. 자바에서는 왜 이렇게 다양한 클래스들을 만들어 놓았을까? 각 클래스의 차이점을 아래 코드를 통해 확인해 보도록 하자. public class StringTest { public static void main(String[] args) { String str = new String("Hello"); StringBuffer strb..
문득 우리가 웹페이지를 생성하기 위해 사용하는 HTML이 어떻게 탄생하게 되었는지 궁금해져서 이 글에 정리해볼까 한다. 아래의 그림은 대략적인 HTML의 발전과정을 연도별로 그린 것이다. SGML(Standard Generalized Markup Language) - HTML의 근본 먼저 처음에 HTML이 생겨나게 된 목적은 하나이다. 웹페이지의 컨텐츠들을 다양한 환경(브라우저)에서 열람을 해도 동일하게 볼 수 있도록 하나의 표현 언어를 생성할 필요성이 생겨난 것이다. 그 약속된 언어의 표현을 정의하려다 보니 이미 존재하는 SGML이라는 것이 눈에 띄었다. SGML(Standard Generalized Markup Language)이라는 것은 문서용 마크업 언어를 정의하기 위한 메타언어이다. 즉 웹페이지..
자바에서 String 클래스를 사용하면서 하나의 의문점이 생겨서 이 글에 정리해보도록 한다. 보통 초기화를 할 때 두 가지 방법이 존재한다. 직접 문자열 상수를 넣거나, new 연산자를 이용하여 사용하는 것이다. 그 형태는 아래와 같다. String s = "Hello World!";String s = new String("Hello World!"); 위 문법을 적용시킨 코드를 통해 자세히 알아보도록 하자. public class StringTest { public static void main(String[] args) { String s1 = "Hello World!"; String s2 = new String("Hello World!"); System.out.println(s1); System.ou..
우분투에서 작업하던 자바 프로젝트 파일을 압축하여 윈도우에서 프로젝트를 열었다. 그런데 이런 현상이 일어났다. 영어는 잘 보이는데 한글이 이상한 문자로 보이는 것이다. 그래서 이 해결방법을 찾아보니 인코딩 형식의 차이였다. 위 스크린샷에서 확인할 수 있듯이 우분투에서는 기본적으로 텍스트 편집기의 인코딩 방식이 UTF-8로 지정되어 있었다. 그렇다면 윈도우에서 이클립스의 기본 텍스트 편집기의 인코딩 방식은 무엇일까? 위 스크린샷을 확인하면 알 수 있듯이, 윈도우 환경에서는 MS949방식을 기본으로 선택하고 있기 때문에 각 인코딩 방식의 차이로 한글의 표현방식이 달라서 한글이 깨져서 보이는 것이다. 이는 인코딩 방식을 동일하게 설정하주면 알 수 있다. UTF-8에 대하여 조금 더 알고 싶다면 아래 링크에 정..
오버로딩(Overloading) 오버로딩(Overloading)이라는 뜻은 사전적으로 '과적하다.'라는 뜻이다. C언어에서는 함수명이 고유하게 존재해야 한다. 즉 하나의 함수가 하나의 기능만을 구현해야 한다는 것이다. 하지만 자바에서는 하나의 메소드 이름으로 여러 기능을 구현하기 때문에 '과적하다.'라는 뜻의 이름을 붙여준 것으로 보인다. 오버로딩의 정의는 자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다. 오버로딩의 조건 메소드의 이름이 같고, 매개변수의 개수나 타입이 달라야 한다. 주의할 점은 '리턴 값만' 다른 것은 오버로딩을 할 수 없다는 것이다. 아래의 코드를 통해서 예를 들어보자..
제어자 클래스, 메소드, 변수의 앞에 public, final 이런식으로 선언부를 제외하고 앞에 붙어있는 것들을 보았을 것이다. public static void main(String[] args) { // TODO Auto-generated method stub } 이클립스에서 자동으로 main을 생성하면 위와같은 형식의 main메소드가 생성된다. void main(String[] args)까지는 이해할 수 있겠다. 근데 앞에 붙어있는 public과 static은 어떤 역할을 하는 것일까? 이들은 제어자라고 불린다. 선언부에 함께 사용되어 부가적인 의미를 부여하는 역할을 한다. 대표적으로 접근 제어자가 있고, 그 이외에 다른 기능을하는 제어자들이 존재한다. 이 개시물에서는 접근 제어자만 다뤄보도록 하겠..
먼저 프로그램에서 오류라는 것은 무엇일까? 오류라는 것은 프로그램이 비정상적으로 종료되거나 잘못된 행동을 하는 경우가 있는데, 이러한 행동들의 원인을 프로그램 오류(Program Error)라고 한다. 에러 이러한 에러들은 발생 시점에 따라 컴파일 에러와 런타임 에러로 나눌 수 있다. 컴파일 에러는 말 그대로 컴파일 시에 발생하는 에러이고, 런타임 에러는 실행중에 나타나는 에러이다. 그리고 덧붙여서 논리적 에러가 있는데, 이는 프로그램의 실행에는 문제가 없으나 의도와 다른 행동을 하는 것을 말한다. 컴파일 에러 - 컴파일 시 발생하는 에러런타임 에러 - 실행중에 발생하는 에러논리적 에러 - 실행에는 문제가 없으나 의도와는 다른 행동을 하는 것 우리가 프로그래밍을 할 때, 다양한 IDE를 사용하는데 그것은..