4. Form 태그

Hyun·2022년 10월 20일

4.1. Form 태그

자주 이용되는 속성: 입력 데이터를 서버로 보내기 위한 설정

속성설명필수 여부
action입력 데이터 처리할 서버측 파일 경로(URL)선택
method입력 데이터의 전송 방법(HTTP 전송 방식)선택
name폼을 식별하기 위한 이름선택
target서버측 처리 결과를 진행할 프레임선택
enctype입력 데이터의 MIME 타입선택
accept-charset입력 데이터의 문자 인코딩선택

4.2. HTTP 개요

login.jsp 호출 과정:

HTTP 요청: 사용자 입력 데이터("kim", "111") 와 함께 login.jsp 호출 -> URL 형식
HTTP 응답: 404 not found 에러 출력

HTTP 요청: JSP 서비스 요청하기 위한 기본 URL

http://localhost:8080/<파일경로>

<파일경로>의 세 부분 구성

  • 프로젝트 이름: 하나의 서버에 여러 응용 서비스 동작, 서비스 구분을 위해 필요
  • 파일 이름: 요청된 JSP 파일
  • 쿼리 스트링: 사용자가 입력한 파라미터 리스트

http://localhost:8080/Hello/login.jsp<쿼리스트링>

<쿼리스트링>의 구성

  • 각각의 사용자 입력 파라미터를 <name>=<value>형식 (name은 <input>
  • 입력, 파라미터 구분은 &
  • 파일 이름, 쿼리 스트링 구분은 ?
  • 아이디와 패스워드에 kim, 111 입력시 최종 URL: http://localhost:8080/Hello/login.jsp?id=kim&ps=111

HTTP 응답 과정: 요청된 파일 확장자에 따른 서버의 처리 과정

  1. 확장자가 html일 경우:
    -요청된 html 파일을 디렉토리에서 찾아 클라이언트로 전송
    -HTTP 응답 메시지에는 검색된 html 파일의 코드 포함

  2. 확장자가 jsp일 경우:
    -요청된 jsp 파일 실행
    -응답 메시지에는 jsp 파일의 실행 결과가 포함

  3. 확장자가 없을 경우:
    -요청된 이름에 해당하는 Java 서블릿 파일을 찾아 실행
    -응답 메시지에는 서블릿 파일의 실행 결과가 포함되어 전송

  4. 파일이 없을 경우:
    -응답 메시지에 404 에러 메시지를 출력하는 html 코드를 포함

HTTP 응답 코드

응답 코드메시지설명
200OK요청이 성공적으로 수행됨
400Bad Request요청에 문법 오류가 있어 서버가 이해할 수 없음
403Forbidden요청한 리소스에 대한 클라이언트 접근 권한이 없음
404Not Found요청받은 리소스를 서버가 찾을 수 없음
500Internal Server Error서버 내부 오류 발생
503Server Unavailable서버가 요청을 처리할 준비가 되지 않음

HTTP 요청

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 응답

시작 라인: HTTP 버전과 응답 코드

  • Content Type: 바디 컨텐츠 형식
    • text/html은 HTML 파일이 응답 페이지로 전달됨을 의미
    • charset=utf-8
  • Content-Language: 바디 컨텐츠 언어
  • Content-Length: 바디 컨텐츠의 길이(byte)
  • Date: 응답 메세지 생성 시간

4.3. GET vs. POST

GET 방식: form 태그 정의 시 method 속성 값을 정의하지 않으면, GET 방식으로 간주. 그러나 아이디와 문자 그대로 드러난다는 단점이 존재.
POST 방식: 아이디와 문자가 가려져서 출력됨.

구분GET 방식POST 방식
전송형태쿼리 스트링이 HTTP 요청 메시지 헤더의 URL을 통해 전송쿼리 스틔링이 HTTP 요청 메시지의 바디를 통해 전송
보안지원되지 않음(URL 창을 통해 사용자 입력값이 노출)지원됨
전송량메세지 헤더 크기에 따라 제한(4KB)제한없음
속도상대적으로 빠름상대적으로 느림

0개의 댓글