Programming

; develop a program

Front-End/HTML & CSS

[Front-End] HTML 입력 양식

Clloud_ 2022. 10. 20. 11:16
반응형

이번 포스팅에서는 HTML의 입력 양식에 대하여 공부를 해보고자 한다.

 


Form 요소

웹 페이지에서는 form 요소를 사용하여 사용자로부터 입력을 받을 수 있다.

사용자가 입력한 데이터를 서버로 보낼 때에도 form 요소를 사용한다.

<form action="처리할 페이지 주소" method="get|post"></form>

 

action 속성은 입력받은 데이터를 처리할 서버 상의 스크립트 파일의 주소를 명시한다.

전달받은 데이터를 처리하는 스크립트 파일을 폼 핸들러(form-handler)라고 한다.

 

method 속성은 입력받은 데이터를 서버에 전달할 방식을 명시한다.

사용자가 form 요소를 통해 입력한 데이터는 action 속성에 명시된 위치로 method 속성의 방식을 통해 전달된다.

method 속성을 통해 명시할 수 있는 form 요소의 전달 방식은 GET 방식POST 방식으로 나누어진다.

 


GET 방식

주소에 데이터(data)를 추가하여 전달하는 방식을 말한다. (URL의 뒤에 이어 붙는다.)

데이터가 주소 입력창에 그대로 나타나며, 전송할 수 있는 데이터의 크기 또한 제한적이다.

한글이나 특수문자를 전송할 경우 URL 형식에 맞지 않는 데이터는 인코딩(Encoding)이 반드시 필요하다.

검색 엔진의 쿼리(query)와 같이 크기가 작고 중요도가 낮은 정보를 보낼 때 주로 사용한다.

 


POST 방식

데이터(data)를 별도로 첨부하여 전달하는 방식을 말한다. (HTTP body에 넣어 전달한다.)

데이터가 외부에 드러나지 않으며, 전송할 수 있는 데이터의 크기 또한 제한이 없다. (암호화가 되지는 않는다.)

보안성 및 활용성이 GET 방식보다 좋다.

 


GET 방식과 POST 방식의 차이점

POST 방식은 GET 방식과 달리, 브라우저에서 캐싱(Caching)이 불가능하다.

즉, GET 방식으로 구현할 경우 웹 크롤러(Web Crawler)가 그것에 접근하여 마음대로 실행할 가능성이 있다.

 

만약에 웹 페이지에 게시판의 수정, 삭제 기능을 GET으로 구현했다면 의도치 않게 글이 수정 혹은 삭제될 수 있다.

그러므로 서버의 값이나 상태를 변경하는 경우에는 POST로 구현하는 것이 적절하다.

GET은 SQL 쿼리의 SELECT와 같은 단순 조회에만 이용하는 것이 좋다.

 

get&#44; post&#44; get 방식&#44; post 방식&#44; web&#44; url&#44; web crawler&#44; sql&#44; select

 


다양한 타입의 input 요소

HTML에서는 다양한 타입의 input 요소를 사용하여 사용자로부터 입력을 받을 수 있다.

form 요소 그 자체는 웹 페이지에 나타나지 않지만 form 요소에 포함된 다양한 input 요소를 통해 사용자의 입력을 받을 수 있다.

 

텍스트 입력(text)

<input> 태그의 type 속성 값을 "text"로 설정하면, 사용자로부터 한 줄의 텍스트를 입력받을 수 있다.

더보기

예제

<form action="/examples/media/request.php">
    검색할 내용을 입력하세요 :
    <input type="text" name="search">
</form>

 


비밀번호 입력(password)

<input> 태그의 type 속성 값을 "password"로 설정하면, 사용자로부터 비밀번호를 입력받을 수 있다.

비밀번호를 입력받기 때문에 화면에는 입력받은 문자나 숫자 대신 별표나 작은 원 모양이 표시된다.

더보기

예제

<form>
    ID: <input type="text" name="id"><br>
    비밀번호: <input type="password" name="pw">
</form>

 


라디오 버튼(radio)

<input> 태그의 type 속성 값을 "radio"로 설정하면, 사용자로부터 여러 개의 옵션(option) 중에서 단 하나의 옵션만을 입력받을 수 있다.

서버로 정확한 입력을 전송하기 위해서는 반드시 모든 input 요소의 name 속성이 같아야 한다.

checked 속성을 이용하여 여러 개의 옵션 중에서 처음에 미리 선택되는 옵션을 지정할 수 있다.

더보기

예제

<form>
    <input type="radio" name="lecture" value="html" checked> HTML <br>
    <input type="radio" name="lecture" value="css"> CSS <br>
    <input type="radio" name="lecture" value="javascript"> Javascript <br>
    <input type="radio" name="lecture" value="python"> Python
</form>

 


체크박스(checkbox)

<input> 태그의 type 속성 값을 "checkbox"로 설정하면, 사용자로부터 여러 개의 옵션 중에서 다수의 옵션을 입력받을 수 있다.

체크박스는 라디오 버튼과는 달리 여러 개의 옵션을 한 번에 입력받을 수 있다.

서버로 정확한 입력을 전송하기 위해서는 반드시 모든 input 요소의 name 속성이 같아야 한다.

checked 속성을 이용하여 여러 개의 옵션 중에서 처음에 미리 선택되는 옵션을 지정할 수 있다.

disabled 속성을 이용하여 해당 옵션을 선택할 수 없게 설정할 수도 있다.

더보기

예제

<form>
    <input type="checkbox" name="lecture" value="html" checked> HTML <br>
    <input type="checkbox" name="lecture" value="css"> CSS <br>
    <input type="checkbox" name="lecture" value="javascript"> Javascript <br>
    <input type="checkbox" name="lecture" value="python" disabled> Python
</form>

 


파일 선택(file)

<input> 태그의 type 속성 값을 "file"로 설정하면, 사용자로부터 파일을 전송받을 수 있다.

accept 속성을 이용하여 입력받을 수 있는 파일의 확장자 및 종류를 명시할 수 있다.

더보기

예제

<form>
    <input type="file" name="upload_file" accept="image/*">
</form>

 


선택 입력(select)

select 요소는 여러 개의 옵션이 드롭다운 리스트(drop-down list)로 되어 있으며, 그중에서 단 하나의 옵션만을 입력받을 수 있다.

option 요소는 드롭다운 리스트에서 선택할 수 있는 각각의 옵션을 명시한다.

selected 속성을 이용하여 드롭다운 리스트 중에서 처음에 미리 선택되는 옵션을 지정할 수 있다.

더보기

예제

<select name="animal">
    <option value="tiger"> 호랑이
    <option value="lion" selected> 사자
    <option value="dog"> 강아지
    <option value="cat"> 고양이
</select>

 


문장 입력(textarea)

textarea 요소는 사용자로부터 여러 줄의 텍스트를 입력받을 수 있다.

rows 속성과 cols 속성을 이용하여 textarea 요소의 크기를 자유롭게 지정할 수 있다.

더보기

예제

<textarea name="message" rows="7" cols="20">
    문장을 입력하세요.
</textarea>

 


버튼 입력(button)

button 요소는 사용자가 누를 수 있는 버튼을 나타낸다.

더보기

예제

<button type="button" onclick="alert('버튼을 클릭하셨습니다.')">
    버튼을 눌러주세요.
</button>

 


전송 버튼(submit)

<input> 태그의 type 속성 값을 "submit"으로 설정하면, 사용자로부터 입력받은 데이터(data)를 서버의 폼 핸들러로 제출하는 버튼을 만들 수 있다.

폼 핸들러(form-handler)란 입력받은 데이터를 처리하기 위한 서버 측의 웹 페이지를 의미한다.

폼 핸들러의 주소는 form 요소의 action 속성을 이용하여 명시할 수 있다.

더보기

예제

<form action="/examples/media/request.php">
    원하시는 색상을 입력해주세요. : <br>
    <input type="text" name="color" value="색상"><br><br>
    <input type="submit" value="전송">
</form>

 


필드셋(fieldset)

fieldset 요소는 form 요소와 관련된 데이터들을 하나로 묶어주는 역할을 한다.

legend 요소는 fieldset 요소 안에서만 사용할 수 있으며, fieldset 요소의 제목을 나타낸다.

더보기

예제

<form action="/examples/media/request.php">
    <fieldset>
        <legend>입력 양식</legend>
        이름 : <br>
        <input type="text" name="username"><br>
        이메일 : <br>
        <input type="text" name="email"><br><br>
        <input type="submit" value="전송">
    </fieldset>
</form>

 


Input 요소의 속성

input 요소의 여러 속성을 사용하면 사용자가 입력하는 방식을 더욱 다양하게 제어할 수 있다.

 

value 속성

value 속성은 input 요소의 입력 필드(input field)에 나타나는 초기값을 설정한다.

더보기

예제

<form>
	지역: <input type="text" name="local" value="서울">
</form>

 


readonly 속성

readonly 속성은 사용자가 입력 필드를 볼 수는 있으나, 수정할 수는 없도록 설정한다.

disabled 속성과 다른 점은 전송 버튼(submit)을 누르면 초깃값이 서버로 전송된다는 점이다.

더보기

예제

<form>
    지역: <input type="text" name="local" value="서울" readonly>
</form>

 


disabled 속성

disabled 속성은 사용자가 입력 필드를 아예 사용할 수 없도록 설정한다.

disabled 속성이 설정된 입력 필드는 사용할 수도 없고, 클릭할 수도 없다.

readonly 속성과는 달리 전송 버튼(submit)을 눌러도 초깃값이 서버로 전송되지 않는다.

더보기

예제

<form>
    지역: <input type="text" name="local" value="서울" disabled>
</form>

 


maxlength 속성

maxlength 속성은 입력 필드에 입력할 수 있는 문자의 최대 길이(length)를 설정한다.

더보기

예제

<form>
    이름: <input type="text" name="student_name" value="홍길동" maxlength="8">
</form>

 


size 속성

size 속성은 입력 필드에 보이는 input 요소의 크기(size)를 설정한다.

maxlength 속성과는 달리 입력 필드가 한 번에 보여줄 수 있는 문자의 최대 개수만을 의미한다.

입력될 수 있는 문자의 최대 길이는 maxlength 속성 값에 따라 달라지며, size 속성과는 전혀 무관하다.

더보기

예제

<form>
    이름: <input type="text" name="student_name" value="홍길동" size="15">
</form>

 


반응형

'Front-End > HTML & CSS' 카테고리의 다른 글

[CSS] px | em | rem  (0) 2023.05.29
[CSS] flex 태그  (0) 2023.05.29
[Front-End] HTML 공간 분할  (0) 2022.10.19
[Front-End] HTML 기본 요소(2)  (0) 2022.10.19
[Front-End] HTML 기본 요소(1)  (0) 2022.10.19