servlet등록이 잘못되어 있을 때를 말한다. servlet-name, servlet-classm url-pattern을 오타없이 정확히 기입했는지 확인하자.
2. 서블릿 어노테이션
생성한 servlet의 어노테이션에 오타가 있을 경우 서버가 시작되지 않는다. 때문에 어노테이션 부분을 잘못 썼는지 다시 한번 확인해 보자.
3. 포트번호(8080) 충돌
기본설정 포트번호인 8080에 다른 서버가 잡혀 있어서 톰캣서버가 이 포트번호에 접속하려는 경우 충돌이 발생하면 역시 에러가 난다. 톰캣의 conf폴더의 server.xml파일에서 포트번호를 다른 번호로 변경해주자(보통 8090이나 80를 사용한다).
4. 프로젝트 클린 안해서
프로젝트를 주기적으로 클린해주지 않으면 가끔씩 서버가 꼬이는 경우가 있다. 때문에 프로젝트 클린 또한 한 번 실시해주도록 한다.
5. 프로젝트에 서버 업로드 안해서
웹프로젝트에 서버가 업로드 되지 않아서 발생할 경우도 있다(이 때는 프로젝트 파일들의 http관련 클래스에 빨간줄이 그어져 있을 것이다). 해당 프로젝트를 우클릭 한 후 properties => java build path=> libraries => add library => server runtime => tomcat7을 등록한다.
public : 클래스의 안이든 바깥이든 어디에서나 이 main메소드가 호출될 수 있음을 뜻한다. 접근 제한자에 대한 자 세한 것은 문법 메뉴를 참고하시면 많은 정보를 얻을 수 있다.
static : mian()메소드가 메모리에 인스턴스되는 공간의 주소가 모두 똑같음을 나타냅니다.
프로그래밍을 처음 시작 하시는 분들이라면 이 static이라는 키워드의 기능에 대해 이해하기가 좀 어려울 것입니다. 지금부터 제가 설명하는 것을 자세히 읽어 보시면 왠만큼 이해는 될 것입니다. static키워드는 매번 자바 언어에서 객체들 이 생성되고 이용되는 과정에서 메모리의 기억 장소를 이용합니다. 매번 객체들이 생기고 저장되고 참조하는 과정들이 무진장 일어나죠. 그래서 메모리를 많이 잡아 먹게 됩니다. 이런 메모리 점유를 조금이나마 줄이고 수행 속도의 증가를 위해 static키워드를 지정함으로서 static으로 지정된 객체나 메소드에 대해서는 메모리의 똑 같은 자리(주소)를 계속해서 사용하므로 메모리의 낭비를 막을 수 있습니다. 그러나 주의하실 점은 이런 객체나 메소드는 정적으로 이용되므로 같은 static객체나 메소드에 의해 호출이 되며, 클래스의 초기 화시 맨 처음으로 메모리에 적재됩니다.
void : C언어나 C++언어를 해보신 분들이라면 지겹도록 많이 보았을 키워드지요. 자바에서 void의 기능은 이 메소드 여기에서는 main()메소드의 안에서 작업을 처리하고 main을 호출한 호출자에게 반환한(리턴값) 결과값이 아무 것도 없다는 것을 의미합니다.
main(String args[]) : main()메소드는 모든 자바 애플리케이션 프로그램에 꼭 들어가야 하는 문장이며, 캄파일하여 실행시킬 경우 자바 런타임 인터프리터가 제일 먼저 이 main()메소드를 찾아 실행을 하는 곳입니다. main() 메소드는 "String args[]"라는 한 개의 파라미터값을 갖도록 정의되어 있습니다. args는 실행시의 클래스에 전달되는 커맨드 라인 인자로서 String의 배열형으로 정의함으로서 여러개의 문자열을 받아들일 수 있습니다.
쉽게 말해, 자바 애플리케이션 프로그램을 자바 인터프리터(java)로 실행할 경우 실행 명령뒤에 문자 열을 인자로 줄 수 있는데 이것을 받아들이는 String형 배열입니다.
대소문자가 구분되며 길이에 제한이 없다. 예약어를 사용해서는 안 된다. 숫자로 시작해서는 안 된다. 특수문자는 '_' 와 '$'만을 허용한다. 파스칼 표기법 (PascalCase)과 카멜 표기법(camelCase)를 사용한다. PascalCase :모든 단어에서 첫 번째 문자는 대문자이며 나머지는 소문자이다. camelCase : 최초에 사용된 단어를 제외한 첫 번째 문자가 대문자이며 나머지는 소문자이다. 반의어는 반드시 대응하는 개념으로 사용해야 한다.
1. 패키지(Package) 명명 규칙 패키지명은 표준 패턴을 따라야 한다. Ex) [com].[Company].[Project].[TopPackage].[LowerPackage] 패키지명은 가급적 한 단어의 명사를 사용한다. Ex)좋은 예 : com.nexon.sudden.member.object Ex) 나쁜 예 : sudden.memberObject
2. 클래스(Class) 명명 규칙 클래스명에는 파스칼을 사용한다. Ex)public class HelloWorld {} 인터페이스에는 특별한 접두사나 접미사를 사용하지 않고 파스칼을 사용한다. Ex) public interface Animal {} 인터페이스를 구현한 클래스에는 특별한 접두사나 접미사를 사용하지 않고 파스칼을 사용한다. Ex)public class Tiger implements animal{} 추상 클래스에는 특별한 접두사 접미사를 사용하지 않고 파스칼을 사용한다. Ex) public abstract class Animal {}
3. 메소드(Method) 명명 규칙 메소드명에는 파스칼 표기법을 사용한다. Ex) public void SendMessage(String message) {} 속성에 접근하는 메소드명의 접두사는 'get','set'을 사용한다. Ex) public void setDisplayName Ex) public void getDisplayName 데이터를 조회하는 메소드명의 접두사는 find를 사용한다. Ex) public void findData(String data){}
데이터를 입력하는 메소드명의 접두사는 input을 사용한다. Ex) public void inputData(HashMap data){}
데이터를 변경하는 메소드명의 접두사는 modify를 사용한다. Ex) public voidmodifyData(HashMap data){}
데이터를 삭제하는 메소드명의 접두사는 delete를 사용한다. Ex) public void deleteData(String data){}
데이터를 초기화 하는 메소드명의 접두사는 initialize을 사용한다. Ex) public void initData(String data){}
반환값의 타입이 boolean인 메소드는 접두사로 is를 사용한다. Ex) public void isData(String Data){} 데이터를 불러오는 메소드명의 접두사는 load를 사용한다. Ex) public void loadData(){} 데이터가 있는지 확인하는 메소드명의 접두사는 has를 사용한다. Ex) public void hasData(){} 보다 지능적인 set이 요구될때 사용하는메소드명의 접두사는 register를 사용한다. Ex) public void registerAccount(){} 새로운 객체를 만든뒤 해당 객체를 리턴해주는메소드명의 접두사는 create를 사용한다. Ex) public void createAccount(){} 해당 객체를 다른 형태의 객체로 변환해주는메소드명의 접두사는 to를 사용한다. Ex) public void toString(){} 해당 객체가 복수인지 단일인지 구분하는 메서드명의 접미사는 s를 사용한다. Ex) public void getMembers(){} B를 기준으로 A를 하겠다는메소드명의 전치사는By를 사용한다. Ex) public void getUserByName(String name){}
반환값의 타입이 boolean인 메소드는 접두사로 is를 사용한다. Ex) public void isData(String Data){} 데이터를 불러오는 메소드명의 접두사는 load를 사용한다. Ex) public void loadData(){} 데이터가 있는지 확인하는 메소드명의 접두사는 has를 사용한다. Ex) public void hasData(){} 보다 지능적인 set이 요구될때 사용하는메소드명의 접두사는 register를 사용한다. Ex) public void registerAccount(){} 새로운 객체를 만든뒤 해당 객체를 리턴해주는메소드명의 접두사는 create를 사용한다. Ex) public void createAccount(){} 해당 객체를 다른 형태의 객체로 변환해주는메소드명의 접두사는 to를 사용한다. Ex) public void toString(){} 해당 객체가 복수인지 단일인지 구분하는 메서드명의 접미사는 s를 사용한다. Ex) public void getMembers(){} B를 기준으로 A를 하겠다는메소드명의 전치사는By를 사용한다. Ex) public void getUserByName(String name){}
4. 변수(Variable) 명명 규칙 변수와 메소드의 파라미터에는 카멜표기법을 사용한다. 변수에 약어를 사용하지 않고 모든 의미를 충분히 담는다. 한 글자로 된 이름을 사용하지 않는다. 선언된 지점에서 초기화하며, 가능한 사용범위를 최소화 한다. 숫자 0 레퍼런스 null 반복문에서 인덱스로 사용할 변수는 i,j,k 등으로 사용한다. Ex) for(int i = 0; i < 10; i++){} 지역변수와 멤버변수(전역변수)는 변수명 앞에 밑줄(_)을 사용하여 구별한다. boolean타입의 변수는 접두사로 is를 사용한다Ex) isCheck