이전 포스트에서 이클립스에서 톰캣을 실행시키는 방법과 그 이유를 설명했다. 이번엔, 이클립스에서 웹 프로젝트를 만드는 2가지 방법을 설명하려고 한다. 이클립스 웹 프로젝트를 만들려면 1) 이클립스에서 직접 웹 프로젝트를 만들 수도 있고, 2) Gradle 도구를 사용하여 이클립스 웹 프로젝트를 만들 수도 있다. 그러면 두 가지를 다 해보면서 뭐가 더 좋은지도 설명하고 끝내도록 하게따-. 1. 이클립스에서 Dynamic Web Project 만들기 이클립스에서 아래와 같이 Dynamic Web Project를 만들어 준다. 그러면 이런 창이 뜨는데, 먼저 원하는 프로젝트 명을 입력해준다. 프로젝트 다 만들었으면 웹 애플리케이션을 서버실행 환경에 배치해야 한다. 이거슬 해줘야 이전 포스트에서 설명한 그 tm..
톰캣을 실행할 때 직접 톰캣이 설치된 폴더로 가서 톰캣을 직접 실행시키는 방법도 있지만! 이클립스에서 편하게 실행시키고 끄고 할 수가 있다. 이번 포스트에서는 이클립스에서 톰캣을 실행시키기 위해 해주어야 하는 작업들을 포스팅 해볼까 한다. 유후-. 1. 톰캣 서버가 설치된 폴더를 등록하기먼저 톰캣을 이클립스에서 실행하려고 하면, 톰캣이 내 컴퓨터 어디에 저장되어있는지 이클립스가 알야아 한다. 그래서 제일 먼저 해야 할 일은, 설치된 폴더를 찾아서 등록해주는 것이다. 그럼 해볼가. Eclipse의 설정에서 Server > Runtime Environments 에 들어가보자. 그러면 아래와 같은 화면이 뜰거시다. 여기서 Add 버튼을 눌러보자. 그럼 아래와 같은 창이 또 뜨는데, 저기에서 내 컴퓨터에 있는 ..
미니 Web Application Server(WAS)를 짜려다보니... HTTP의 요청 프로토콜과 응답 프로토콜에 대한 이해가 먼저 필요했다. 왜냐면 HTTP는 요청과 응답의 한 세트로 모든 일이 일어나기 때문! 그래서 이번 포스트에서는 요청 프로토콜에 대해 다뤄보도록 하겠다. 요청 프로토콜(Request Protocol)HTTP 요청 형식은 다음과 같다. Request-Line CRLF { 메시지헤더 CRLF } * CRLF message-body 참고로 CRLF는 줄바꿈을 말한다. 그니까 '엔터'치는거 말이다. Request-Line이 한 줄 오고 줄 바꿈 후, 메시지 헤더가 온다.메시지 헤더에는 general, request, entity header가 있는데, 이 3개는 여러 개가 올 수 있다...
ODBC(Open Database Connectivity) ? 오늘은 DBMS와 통신을 할 때 흔히 사용하는 ODBC에 대해 정리해보겠다. 먼저 ODBC의 정의는 데이터베이스에 접근하기 위한 소프트웨어의 표준 규격이다. 이렇게 정의만 보고서도 "아~ 그러쿠나" 하는 천재가 아니니까 나는.왜, 뭘 위해 이런 규격이 있는건지 알아보겠다. 1. 소켓 통신응용프로그램은 DBMS와 데이터를 주고 받는 통신이란 것을 한다. 이 말은 응용 프로그램 상에서 실행 중인 프로세스와, DBMS에서 실행 중인 프로세스가 서로 통신을 한단 얘기다. 이렇게 프로세스와 프로세스 사이에 데이터를 주고 받는 방식은 여러가지가 있는데, 가장 기본적인 방식이 바로 "소켓 통신"이다. 소켓 통신 방법은 대략 이렇다.소켓을 생성해서 연결을 ..
자바 메모리 구조 이전 포스트에서 자바의 메모리 구조는 크게 메소드 영역, 힙 영역, 스택 영역으로 나뉘어 있다는 것과, 메소드 영역이 뭔지 살짝 알아봤다. 이번에는 힙 영역과 스택 영역은 뭔지, 각각 어떤 역할을 하는지, 좀 헷갈리니까 친절히 코드로 비교도 해볼까 한다. 2. 스택 영역(Stack Area) 스택 영역에는 지역변수와 매개변수가 저장된다. 그렇담 지역변수는 뭐고, 매개변수는 뭔가여. 한글로 접하니까 오히려 헷갈리는데 지역변수 = 로컬변수(local variable), 매개변수 = 파라미터(parameter)라고 들으면 아~~ 뭐야. 할 것임. 이래도 모르겠으면 로컬변수는 메소드 내에서 선언된 변수들, 매개변수는 메소드에 아규먼트로 넘겨주는 값들로 이해하고 넘어가자. 로컬변수와 매개변수의 ..
다시 힘을내어 포스팅을 해보려고 한다. 아자아자! 비록 구글 너가 애드센스 승인을 빨리 안해주지만 나는 힘을내어 포스팅할거야. 오늘 다루려고 하는 것은 자바의 메모리 구조이다. 메모리 구조가 어떻게 되어 있고, (메모리 구조가 여러 영역으로 나누어져 있는데 그 영역이) 어떻게 다른지를 아주 짧고 간단하게 스쳐지나가듯 짚도록 하겠다. 자바의 메모리 구조 이전 포스트였던가. 자바 가비지 컬렉터를 이야기하면서 JVM이 실행되면 OS가 JVM에게 필요한 메모리를 할당해준다고 했다. 컴퓨터 프로그램이 실행되기 위해 필요한 메모리를 우리는 '메인 메모리'라고 한다. 우리말로는 주기억장치쯤 되시겠다. 물리적으로는 우리가 램(RAM)이라고 부르는 아이다. 이 메인메모리를 관리하는게 OS이고, JVM(자바 버추얼 머신!..
자바의 가비지 컬렉터(Garbage Collector) 즉, 쓰레기 수집 기능을 이해하려면 메모리에 대한 이해가 먼저다.1. 자바 실행 프로그램인 JVM과 메모리메모리는 OS가 관리하는데, 모든 프로그램들은 OS 위에서 돌아간다. 그리고 프로그램이 돌아가려면 당연 메모리가 있어야 한다. 때문에 프로그램들은 OS에게 "나 메모리좀 줘" 하고 요청을 한다. 자바의 실행 프로그램인 JVM도 예외는 아니다. 이 친구도 메모리가 필요하면 OS에게 요청해야한다. 메모리좀 달라고. 그런데 OS가 처음부터 자기가 가진 메모리 전부를 줘버리면, 다른 프로그램들에게 줄 메모리가 없게 된다. 때문에 각 프로그램에게 메모리의 일정부분만 빌려주는(?) 방식으로 관리가 된다. A 프로그램 JVM B 프로그램 - 이렇게 OS가 메..
나는 맥북 유저인데..이클립스에서 자바로 프로그램 개발하다가 짜증이 치솟아 내가 해결책을 찾아야겠다는 어떤 오기가 발동해버렸다. 짜증의 원인은 대략 이러하다.이클립스에 한글 입력 시, 마지막 글자를 입력하고 엔터나 스페이스를 누르지 않으면 마지막 문자가 사라지고마는 문제가 있다. 요렇게 한글을 쳐 넣는데 커서가 '스' 글자 앞에 놓인 것을 볼 수 있다.여기서 무심코 -> 버튼을 눌렀더니 하하. 이런 일이 일어났다. 내가 입력한 '스'는 안드로메다로 가뻐려따.. 그리하여 구글신에게 여쭌 결과 여러 방법을 알려주었는데, 이 글을 보고있다면 낚이지 마시라. 그 어떤 해결책도 없으며 이클립스 너가 해결해주지 않으면 우린 계속 한글을 입력한 다음에 스페이스나 엔터를 꼭꼭 입력해주어야 한다는 사실. 내가 해본 삽질..
자바에서 패키지를 사용하지 않고, 다른 클래스에서 정의한 메소드를 사용한다고 해보자. 경로: src/a.javapublic a { public static void wow() { System.out.println("a.class 실행결과로 A가 나왔습니다!"); } } 경로: src/haha/b.java public b { public static void wow() { System.out.println("b.class 실행결과로 B가 나왔습니다!"); } } 이렇게 정의된 자바파일이 있다고 해보자. a.java파일은 src 폴더 바로 밑에 있고, b.java파일은 src폴더 밑에 있는 haha폴더 밑에 있다.그런데 이 두 파일은 모두 'wow'라는 이름의 메소드를 정의하고 있다. 명령창에서 각각 이 두..
java 파일과 class 파일 구분하여 관리하기 왜 구분해야 하지?source code 파일(.java)과 byte code 파일(.class)이 한 폴더에 함께 있는 것은 바람직하지 못하다.배포할 때에는 실행파일인 바이트코드 파일, 즉 class파일만 배포하는데 여기에 소스코드 파일인 java 파일이 섞여 있으면 관리하기가 불편하기 때문이다. 따라서 두 종류의 파일을 서로 다른 폴더로 분리시켜야 한다. 어떻게 구분하지?구분하는 방법은 쉽다.class파일은 컴파일이 완료되면 생성된다. 그 말은 컴파일 할 때 옵션을 줘서 어느폴더에 저장될지 지정해주면 된다는 말씀이다. 폴더를 지정해주기 전에, 그 폴더를 만들어줘야 한다.있지도 않은 폴더에 무언가를 담을 수는 없으니까. 보통은. 일반적으로는. 대부분은.소..