자주 이용되는 속성: 입력 데이터를 서버로 보내기 위한 설정
| 속성 | 설명 | 필수 여부 |
|---|---|---|
| action | 입력 데이터 처리할 서버측 파일 경로(URL) | 선택 |
| method | 입력 데이터의 전송 방법(HTTP 전송 방식) | 선택 |
| name | 폼을 식별하기 위한 이름 | 선택 |
| target | 서버측 처리 결과를 진행할 프레임 | 선택 |
| enctype | 입력 데이터의 MIME 타입 | 선택 |
| accept-charset | 입력 데이터의 문자 인코딩 | 선택 |
login.jsp 호출 과정:
HTTP 요청: 사용자 입력 데이터("kim", "111") 와 함께 login.jsp 호출 -> URL 형식
HTTP 응답: 404 not found 에러 출력
HTTP 요청: JSP 서비스 요청하기 위한 기본 URL
http://localhost:8080/<파일경로>
<파일경로>의 세 부분 구성
- 프로젝트 이름: 하나의 서버에 여러 응용 서비스 동작, 서비스 구분을 위해 필요
- 파일 이름: 요청된 JSP 파일
- 쿼리 스트링: 사용자가 입력한 파라미터 리스트
<쿼리스트링>의 구성
- 각각의 사용자 입력 파라미터를
<name>=<value>형식 (name은<input>- 입력, 파라미터 구분은 &
- 파일 이름, 쿼리 스트링 구분은 ?
- 아이디와 패스워드에 kim, 111 입력시 최종 URL: http://localhost:8080/Hello/login.jsp?id=kim&ps=111
- 확장자가 html일 경우:
-요청된 html 파일을 디렉토리에서 찾아 클라이언트로 전송
-HTTP 응답 메시지에는 검색된 html 파일의 코드 포함
- 확장자가 jsp일 경우:
-요청된 jsp 파일 실행
-응답 메시지에는 jsp 파일의 실행 결과가 포함
- 확장자가 없을 경우:
-요청된 이름에 해당하는 Java 서블릿 파일을 찾아 실행
-응답 메시지에는 서블릿 파일의 실행 결과가 포함되어 전송
- 파일이 없을 경우:
-응답 메시지에 404 에러 메시지를 출력하는 html 코드를 포함
HTTP 응답 코드
응답 코드 메시지 설명 200 OK 요청이 성공적으로 수행됨 400 Bad Request 요청에 문법 오류가 있어 서버가 이해할 수 없음 403 Forbidden 요청한 리소스에 대한 클라이언트 접근 권한이 없음 404 Not Found 요청받은 리소스를 서버가 찾을 수 없음 500 Internal Server Error 서버 내부 오류 발생 503 Server Unavailable 서버가 요청을 처리할 준비가 되지 않음
HTTP 요청 메시지 헤더- 시작 라인
ex) GET/Hello/login.jsp?id=kim&ps=111 HTTP/1.1
- HTTP 전송 방식: 입력 데이터 전송 방식(주로 GET, POST)
- GET: 요청받은 URL을 검색, 실행하고 응답
- POST: GET와 유사, 파라미터가 바디 부분에 포함되어 전달
- URL : 입력 데이터가 전송될 서버측 파일의 경로, 쿼리 스트링(입력 파라미터 리스트)
- HTTP 버전: HTTP/1.1
HTTP 요청 메시지 헤더 - 나머지 라인
- Host: 서버의 IP 주소
- User- Agent: 브라우저 버전
- Accept:브라우저에서 처리 가능한 데이터 형식(MIME 타입으로 표시)
- Referer: HTTP 요청을 생성한 호출자(클라이언트측 파일 경로)
- Accept-Encoding: 브라우저에서 지원 가능한 압축 형식
- Accept-Language: 브라우저에서 지원 가능한 언어 종류
시작 라인: HTTP 버전과 응답 코드
- Content Type: 바디 컨텐츠 형식
- text/html은 HTML 파일이 응답 페이지로 전달됨을 의미
- charset=utf-8
- Content-Language: 바디 컨텐츠 언어
- Content-Length: 바디 컨텐츠의 길이(byte)
- Date: 응답 메세지 생성 시간
GET 방식: form 태그 정의 시 method 속성 값을 정의하지 않으면, GET 방식으로 간주. 그러나 아이디와 문자 그대로 드러난다는 단점이 존재.
POST 방식: 아이디와 문자가 가려져서 출력됨.
| 구분 | GET 방식 | POST 방식 |
|---|---|---|
| 전송형태 | 쿼리 스트링이 HTTP 요청 메시지 헤더의 URL을 통해 전송 | 쿼리 스틔링이 HTTP 요청 메시지의 바디를 통해 전송 |
| 보안 | 지원되지 않음(URL 창을 통해 사용자 입력값이 노출) | 지원됨 |
| 전송량 | 메세지 헤더 크기에 따라 제한(4KB) | 제한없음 |
| 속도 | 상대적으로 빠름 | 상대적으로 느림 |