---
title: "HTML 정리 04"
date: "2019-01-28"
tags: ["HTML"]
status: archived
verified: false
---

---

## input tag - text type

* **text type일 때 disabled와 readonly 속성을 적용한 모습**
     * rdisabled는 값 수정 불가, 서버로 전송 안됨
     * readonly는 값 수정 불가, 서버로 값 전송 됨.

```html
<input type="text" name="test" disabled="disabled"  value="disabled"/><br/>
<input type="text" name="test" readonly="readonly"  value="readonly"/><br/>
```

![01](/md/legacy-assets/Web/HTML/04/01.webp)

* **size**속성으로 입력 필드의 길이를 조절가능
     * 보여줄 글자 수 이긴 하지만 정확히 안떨어짐
     * 융통성있게 크기를 맞추면 된다.
* **maxlength**는 입력가능한 글자 수
     * size와 maxlength는 아무런 관련이 없다!
* **value**는 아무값도 입력하지 않았을 때 서버로 전송할 값
     * 값이 입력되면 입력된 값이 넘어간다.

```html
<input type="text" name="id" size="3" maxlength="5" value="ABCDE"/>
```

![02](/md/legacy-assets/Web/HTML/04/02.webp)

* **placeholder** 속성은 HTML5에서 추가된 속성
  * 사용자가 값을 입력하기 전까지 안내 문자열을 보여줄 때 사용

```html
<input type="text" name="id2" size="5"  placeholder="아이디"/><br/>
<input type="password" name="pass2" size="5"  placeholder="비밀번호"/>
```

![03](/md/legacy-assets/Web/HTML/04/03.webp)

## input tag - password type
* **비밀번호나 외부에 값을 노출시키지 말아야할 데이터를 입력받을 때 사용**
     * 속성은 text와 동일
* text와 다르게 password는 한글이 입력되지 않는다.
		* 다른 곳에 한글 입력 후 복사 붙여넣기로 입력은 가능

```html
<input type="password" name="pass" size="10"  maxlength="7" value="비밀번호"/>
```

![04](/md/legacy-assets/Web/HTML/04/04.webp)

## input tag - checkbox type

* **보기로 준비된 값 중 사용자가 여러개를 선택하여 입력할 때 사용**
* **value속성값이 서버로 전송될 값!**
* **name을 동일하게 설정하면 group으로 묶여진다.**
     * 배열로 처리됨(일괄처리 가능)
     * **웹은 이름이 같으면 무조건 배열로 처리된다.**
* checked는 특정 checkbox가 선택이된 상태로 제공할 때 사용
     * 4.0.1까지는 checked 권장, HTML5에서는 checked="checked"를 권장

```html
<strong>좋아하는 과일 입력</strong><br/>
<input type="checkbox" name="fruit"  value="사과"/>사과(가을)<br/>
<input type="checkbox" name="fruit" value="배"  checked="checked"/>배(가을)<br/>
<input type="checkbox" name="fruit"  value="딸기"/>딸기(봄)<br/>
<input type="checkbox" name="fruit"  value="포도"/>포도(여름)<br/>
```

![05](/md/legacy-assets/Web/HTML/04/05.webp)

## input tag - radio type

* **보기로 준비된 값 중 사용자가 한개를 선택하여 입력할 때 사용**
* name을 동일하게 설정하면 group으로 묶여진다.
     * 배열로 처리됨

```html
<input type="radio" name="gender" value="남자"  checked="checked">남자<br/>
<input type="radio" name="gender" value="여자">여자<br/>
```

![06](/md/legacy-assets/Web/HTML/04/06.webp)

## input tag - hidden type

* **사용자에게 값을 노출시키지 않고 값을 전달할 때 사용**
     * JavaScript에서 값을 변경한 후 서버로 전송하는 경우 많이 사용됨
     * 화면에 그려지진 않지만 소스보기로 확인 가능

```html
<input type="hidden" name="addr" value="서울시 강남구  역삼동" />
```

![07](/md/legacy-assets/Web/HTML/04/07.webp)

## input tag - image type
* **이미지를 제공할 때 사용자가 클릭하면 서버로 전송하게 된다.**
     * **submit기능**
          * form 태그 안에 모든 HTML Form Control들이 가진 값을 서버로 전송하는 일
          * image태그는 검증하는 과정을 거치지 않고 보내지기 때문에 **사용을 권장 안함.**

```html
<input type="image" src="../common/sist_logo.jpg"  />&lt;클릭가능<br/>
<img src="../common/sist_logo.jpg" />&lt;img태그,  클릭불가
```

![08](/md/legacy-assets/Web/HTML/04/08.webp)

## input tag - file type

* **파일 전송할 때 사용**
* JavaScript에서 값 변경을 할 수 없는 HTML Form Control

```html
<input type="file" name="update"/>
```

![09](/md/legacy-assets/Web/HTML/04/09.webp)

## input tag - submit,reset,button type

* **사용자가 클릭하여 동작할 수 있는 버튼 류 HTML Form Control**
* **form 태그의 하위태그(자식태그)로 존재해야만 동작**
* **submit**
     * **HTML Form Control의 값을 서버로 전송하는 기능**
     * 브라우저마다 정해진 라벨이 존재
* **reset**
     * **HTML Form Control의 값을 초기화하는 기능**
     * 브라우저마다 정해진 라벨이 존재
* **button**
     * **버튼 모양**
     * JavaScript에서 유효성 검증을 해야하는 경우
     * 기본 라벨이 없음

```html
<input type="submit" />
<input type="reset" />
<input type="button" />
```

![10](/md/legacy-assets/Web/HTML/04/10.webp)

```html
<input type="submit" value="전송"/>
<input type="reset" value="초기화"/>
<input type="button" value="버튼"/>
```

![11](/md/legacy-assets/Web/HTML/04/11.webp)

## 웹서버와 웹클라이언트의 요청/응답

![12](/md/legacy-assets/Web/HTML/04/12.webp)

## Form tag

* **HTML Form Control의 값을 서버로 전송하는 일을 하는 태그**
     * input 태그들을 form태그로 감싸면 submit, button, reset이 동작하게 된다.
* **action 속성**
     * **값을 받을 페이지의 URL**
          * Servlet명, JSP명, ..
* **name 속성**
     * JavaScript에서 접근할 이름
* **method 속성**
     * **전송방식(GET/POST)**

```html
<form action="값을 받을 페이지의 URL" name="JavaScript에서 접근할 이름"
    method="전송방식">
    <input />
    ...
</form>
```

## 전송방식

* **GET**
     * **주소창으로 데이터를 전송하는 방식**
          * 보안이 되지 않는다.
          * 중요하지 않은 데이터를 전달할 때 사용
          * 255자 이하의 소용량 데이터를 전송할 때 사용
               * 파일은 전송할 수 없다.
     * 주소창에 URL을 직접 입력, anchor tag, form태그의 method 속성값을 get으로 줬을 때, JavaScript에 location.href로 이동할 때 GET방식으로 전송

![13](/md/legacy-assets/Web/HTML/04/13.webp)

* **POST**
   * **HTTP header를 통해서 데이터를 전송하는 방식**
        * 보안이 된다.
        * 256자 이상의 대용량 데이터를 전송할 때 사용
             * 파일을 전송할 수 있다. 
             * enctype="multipart/form-data"로 변경
   * 반드시 form태그 method 속성값이 post인 경우에만 POST방식으로 전송

![14](/md/legacy-assets/Web/HTML/04/14.webp)


## label tag

* **택스트의 용도를 알려주기 위해서 사용하는 태그**

```html
<label>이름</label><input type="text" size="5" length="5" />
```

![15](/md/legacy-assets/Web/HTML/04/15.webp)

## fieldset tag

* **HTML Form Control을 묶어주기 위해 사용하는 태그**
* **legend** 태그를 fieldset 하위태그로 넣으면 Java Swing의 titled border 라벨처럼 표시가능

```html
<form action="test.jsp" method="get" >
<fieldset>
<legend>HTML Form Control연습</legend>
...
</fieldset>
</form>
```

![16](/md/legacy-assets/Web/HTML/04/16.webp)

## select tag

* **radio와 비슷, 정해진 값 중 하나만 선택하여 전송할 때 사용**
     * name속성은 식별하기 위한 이름
     * option 태그의 value값은 서버로 전송되는 값
          * option태그의 selected 속성으로 선택이된 상태로 나오게 할 수 있다.

```html
<label>지역 선택</label>
<select name="loc">
     <option selected="selected">----- 지역 선택 -----</option>
     <option value="서울">서울시</option>
     <option value="경기">경기도</option>
     <option value="강원">강원도</option>
     <option value="충청">충청도</option>
     <option value="경상">경상도</option>
     <option value="전라">전라도</option>
     <option value="제주">제주</option>
</select>
```

![17](/md/legacy-assets/Web/HTML/04/17.webp)

* size는 보여줄 옵션의 개수

```html
<select size="5">
     <option>SKT</option>
     <option>KT</option>
     <option>LGT</option>
</select>
```

![18](/md/legacy-assets/Web/HTML/04/18.webp)

## textarea tag

* **많은 양의 문자열을 입력할 때 사용**
* rows 속성은 보여줄 행 수
* cols 속성은 한줄에 쓸 글자수

```html
<textarea rows="5" cols="30" name="ta">쓰고 싶은 내용</textarea>
```

![19](/md/legacy-assets/Web/HTML/04/19.webp)

## HTML5에서 추가된 HTML Form Control들

* ie에서 지원하지 않기 때문에 쓰일 일은 많이 없다..

```html
<input type="OOO"/>
```

* **의미적**
     * email, tel
* **기능적**
     * date(날짜)
     * color(색선택)
     * number(숫자)
     * range(범위)
* **의미적인 type들은 text type과 차이점은 없지만 소스볼 때 가독성을 높이기 위해 사용**

```html
<div>
     <strong>의미적 Form Control</strong><br/>
     <!-- 디자인은 text와 같지만 소스보기할 때
     입력값이 무엇인지 의미적으로 전달하는 Control들 -->
     <label>이름</label>
     <input type="text" name="name"  placeholder="이름"/><br/>
     <label>이메일</label>
     <input type="email" name="email"  placeholder="이메일"/><br/>
     <label>전화번호</label>
     <input type="tel" name="tel"  placeholder="전화번호"/><br/>
     <label>사이트 URL</label>
     <input type="url" name="url"  placeholder="URL"/><br/>
</div>
```

![20](/md/legacy-assets/Web/HTML/04/20.webp)

* **기능적인 date type**
     * value 속성값이 "년-월-일" 형식의 값이 입력되면 해당 날짜정보가 입력되어 보여진다.
          * 날짜 형식이 아니면 value값인식을 못 함 (value 속성 안쓴것과 동일 결과)

```html
<div>
     <strong>기능을 가진 HTML Form Control</strong><br/>
     <label>날짜</label>
     <input type="date" name="date" value="2018-10-19"/>
</div>
```

![21](/md/legacy-assets/Web/HTML/04/21.webp)

* **month 타입**은 년-월까지만 선택가능 

```html
<input type="month" name="mon" value="2018-10"/>
```

![22](/md/legacy-assets/Web/HTML/04/22.webp)

* **datetime-local 타입**은 "년-월-일 시:분:초" 형식의 값을 가진다.

```html
<input type="datetime-local" name="date"/>
```

![23](/md/legacy-assets/Web/HTML/04/23.webp)

* **color 타입**
     * 색 선택가능
     * value속성값으로 RGB값을 넣어줄 수 있다.

```html
<label>색선택</label>
<input type="color" name="col" value="#FF0000"/>
```

![24](/md/legacy-assets/Web/HTML/04/24.webp)


* **number 타입**
     * 숫자를 위아래 화살표 클릭으로 값변경이 가능

```html
<label>숫자</label><br/>
<input type="number" name="num"/>
```

![25](/md/legacy-assets/Web/HTML/04/25.webp)


* **range 타입**
     * min 속성으로 최소값
     * max 속성으로 최대값
     * value 속성은 현재값 설정이 가능

```html
<label>범위</label>     
0<input type="range" name="ran" min="0" max="100" value="12"/>100
```

![26](/md/legacy-assets/Web/HTML/04/26.webp)

## media tags

* **HTML5 이전**
     * **embed tag**
          * 영상, 음악 파일 모두 재생할 수 있다.
* **HTML5에서 제공하는 태그**
     * **audio tag**
          * 음악만 재생
     * **video tag**
          * 동영상만 재생
          * 지원 코덱이 다르기 때문에 브라우저에 따라 재생여부가 다름

## embed tag

```html
<embed src="미디어 파일의 경로" width="넓이" height="높이" controller="true"/>
```
* **controller 속성**을 true로 주면 컨트롤바가 추가됨

```html
<label>음악파일</label>
<embed src="media/audio.mp3" controller="false"  autoplay="false"/>
<br/>
<label>동영상파일</label>
<embed src="media/video.mp4" controller="true"  width="300" height="300" autoplay="false"/>
```

![27](/md/legacy-assets/Web/HTML/04/27.webp)

![28](/md/legacy-assets/Web/HTML/04/28.webp)

## audio tag

```html
<audio src="음악파일의 경로" controls="controls" />
```

* **audio 태그는 source 태그를 하위 태그로 줘도 된다.**
     * 위에 source태그의 음악파일이 재생될 수 없다면 아래 source태그가 가진 음악파일이 재생된다.
          * **순서대로 재생되는게 아니라 첫번째 소스가 재생이 안되면 다음 소스가 재생이 되도록한 것.**
          * mp3가 안되면 wav파일이 재생되도록 한 것 처럼

```html
<audio controls="controls">
    <source src="음악파일 경로"/>
    <source src="음악파일 경로"/>
    ...
</audio>
```

* 다음과 같이 코딩하면 만약 브라우저가 재생을 지원 안하면 "당신의 브라우저는 이 태그를 지원하지 않습니다."가 출력된다.
```html
<div>
     <audio autoplay="autoplay" controls="controls">
          <source src="media/audio.mp3"/>
          당신의 브라우저는 이 태그를 지원하지 않습니다.
     </audio>
</div>
```

![29](/md/legacy-assets/Web/HTML/04/29.webp)

## video tag

```html
<video src="동영상파일 경로" width="" height="" controls="controls" />
```

* audio처럼 source를 줄 수 있다

```html
<video controls="controls" width="" height="">
    <source src="동영상파일 경로" />
    <source src="동영상파일 경로" />
    ...
</video>
```

```html
<div>
     <video autoplay="autoplay" width="200"  controls="controls">
          <source src="media/video.mp4"/>
          당신의 브라우저는 이 태그를 지원하지 않습니다.
     </video>
</div>
```

![30](/md/legacy-assets/Web/HTML/04/30.webp)

## HTML5에서 지원되는 태그

* **mark tag**
     * 하이라이트(형광펜효과)
* **code tag**
     * element(열림태그와 닫힘태그 사이)가 가지고 있는 값이 다른 언어의 코드임을 명시적으로 알려줄 때 사용

```html
<code>
    다른 언어의 코드
</code>
```

```html
<div>
     <code>
          int i=0;<br/>
          System.out.println(i);
     </code>
</div>
```

![31](/md/legacy-assets/Web/HTML/04/31.webp)

* **address tag**
  * element가 가지고 있는 값이 주소임을 명시적으로 나타낼 때 
  * 이탤릭체로 표현된다.

```html
<div>
     우리집 주소는 <address>서울시 강남구 역삼동  한독빌딩 8층 4강의장</address>입니다.
</div>
```

![32](/md/legacy-assets/Web/HTML/04/32.webp)

* **audio tag, video tag**
* **canvas tag**
  * 2D 그래픽을 그릴 때 사용
  * flash 효과를 대체가능
  * JavaScript가 반드시 필수
* **nav, section, aside, footer tag**
  * css로 설정한 영역을 의미적으로 구분하는 태그(semantic tag)

## 숙제

* 아래 두 페이지를 HTML을 사용하여 작성하세요.

![33](/md/legacy-assets/Web/HTML/04/33.webp)

* [join.html 풀이](https://github.com/younggeun0/SSangYoung/blob/master/dev/workspace/html_prj/WebContent/member/join.html)

![34](/md/legacy-assets/Web/HTML/04/34.webp)

![35](/md/legacy-assets/Web/HTML/04/35.webp)

* [agreement.html 풀이](https://github.com/younggeun0/SSangYoung/blob/master/dev/workspace/html_prj/WebContent/member/agreement.html)

![36](/md/legacy-assets/Web/HTML/04/36.webp)
