<form> 태그는 사용자로부터 입력을 받을 수 있는 HTLM 입력 폼(form)을 정의할 때 사용합니다.
<form> 요소는 다음과 같은 요소들을 하나 이상 포함할 수 있습니다.
- <label>
- <input>
- <select>
- <textarea>
- <fieldset>
- <button>
- <option>
- <optgroup>
React나 Vue 같은 Single Page Application 에서는 form 테그는 사용하지 않는다.
데이터 입력시 화면전환이 일어나기 때문이다. 사용자에게 불편함을 초래함
화면 전환이 일어나지 않으려면 비동기적으로 통신을 하여야한다.
저장을 누르는 순간 데이터가 서버로 전송이 되기 때문임
<form> 태그의 action 속성
<form> 태그의 action 속성은 폼 데이터(form data)를 서버로 보낼 때 해당 데이터가 도착할 URL을 명시합니다.
<label>
<label> 태그는 사용자 인터페이스(UI) 요소의 라벨(label)을 정의할 때 사용합니다.
<label> 요소는 for 속성을 사용하여 다른 요소와 결합할 수 있으며, 이때 <label> 요소의 for 속성값은 결합하고자 하는 요소의 id 속성값과 같아야 합니다. 또한, <label> 요소를 결합하고자 하는 요소 내부에 위치시키면 for 속성을 사용하지 않더라도 해당 요소와 결합시킬 수 있습니다.
이러한 <label> 요소는 브라우저에 의해 일반적인 텍스트로 랜더링되지만, 사용자가 마우스로 해당 텍스트를 클릭할 경우 <label> 요소와 연결된 요소를 곧바로 선택할 수 있어 사용자의 편의성을 높일 수 있습니다.
사용자로부터 입력을 받을 수 있는 입력 필드(input filed)를 정의할 때 사용합니다. <input> 요소는 사용자가 데이터를 입력할 수 있는 입력 필드를 선언하기 위해 <form> 요소 내부에서 사용됩니다. 이러한 입력 필드는 <input> 요소의 type 속성값을 달리함으로써 여러 가지 모양으로 나타낼 수 있습니다.
input 요소에 들어 갈 수 있는 type button, checkbox, color, date, datetime-local, email, file, hidden, image, month, number, password, radio, range, reset, search, submit, tel, text, time, url, week
<div>
HTML 문서에서 특정 영역(division)이나 구획(section)을 정의할 때 사용합니다. <div> 요소는 여러 HTML 요소들을 하나로 묶어주어 CSS로 스타일을 변경하거나 자바스크립트로 특정 작업을 수행하기 위한 일종의 컨테이너(container)로 자주 사용됩니다. 또한, CSS와 함께 웹 페이지의 레이아웃(layout)을 설정하는데도 종종 사용됩니다.
name
같은 이름을 가져도 상관없는 속성이다. 같은 이름을 주면 동일한 옵션 그룹인 것을 인지한다. 자바스크립트에서 name을 가져 쓰는 경우가 있다.
checkbox
다중 선택을 할 수 있다.
<div><!-- id 값을 for에 넣는 순간 lable 문자를 눌러도 체크가 가능해진다. --><inputtype="checkbox"name="chk_lang"id="chk_html" /><labelfor="chk_html">HTML</label><inputtype="checkbox"name="chk_lang"id="chk_css" /><labelfor="chk_css">CSS</label><inputtype="checkbox"name="chk_lang"id="chk_js" /><labelfor="chk_js">JavaScript</label></div>
<form> 태그의 method 속성은 폼 데이터(form data)가 서버로 제출될 때 사용되는 HTTP 메소드를 명시합니다.
method 속성은 속성값으로는 GET과 POST 두 가지 중 하나를 선택할 수 있습니다.
get url에 폼 데이터를 추가하여 서버로 전달하는 방식입니다. url에 전송하는 데이터가 노출이 되고 전송할 수 있는 데이터 크기가 제한이 있음. 쿼리 문자열(query string)에 포함되어 전송되므로, 길이의 제한이 있습니다. 브라우저에 의해 캐시되어(cached) 저장됩니다. 보안상 취약점이 존재하므로, 중요한 데이터는 POST 방식을 사용하여 요청하는 것이 좋습니다. 주소에 데이터 노출 post 폼 데이터를 별도로 첨부하여 서버로 전달하는 방식입니다. 브라우저에 의해 캐시되지 않으므로, 브라우저 히스토리에도 남지 않습니다. 쿼리 문자열과는 별도로 전송됩니다. 데이터의 길이에 대한 제한도 없으며, GET 방식보다 보안성이 높습니다. 데이터가 노출 되지 않고, HTTP 요청의 body에 데이터를 담아서 전송되고 전송할 수 있는 데이터 크기에 제한 없음 URL에 전송하는 데이터가 노출되지는 않지만, 결국은 개발자 도구 같은 소프트웨어를 통해서 전송하는 데이터를 확인할 수 있습니다. 그러므로 전송하는 데이터는 암호화하는 것이 좋습니다. 예를들어 https 프로토콜 사용.
main.html
<button type="submit">저장</button>을 누르는 순간 이 페이지에 입력된 정보들이 test.html로 넘어가게 된다.
댓글