수업내용/Web

[2022.11.02.수] 블록 엘리먼트와 인라인 엘리먼트, 폼

주니어주니 2022. 11. 2. 18:09

 

1. 블록 엘리먼트와 인라인 엘리먼트

 

documnet객체 : html문서를 표현하는 객체

태그 -> 엘리먼트가 됨 

(태그 하나마다 엘리먼트 객체가 만들어짐) 

그거를 렌더링 

 

클래스:객체 = 태그:엘리먼트

 

 

 

1-1. 블록 엘리먼트 

 

  • 항상 새로운 줄에서 시작한다.
  • 항상 사용가능한 최대 너비를 차지한다. (한줄을 통째로 차지) 
  • 블록 엘리먼트의 왼쪽이나 오른쪽에는 다른 엘리먼트가 위치할 수 없다.
  • 엘리먼트의 너비(width)를 지정할 수 있다.
  • 엘리먼트내의 컨텐츠(자식엘리먼트, 텍스트)를 정렬할 수 있다.
  • 대표적인 태그
    • 문서의 제목 : h1~h6
      문서의 내용 : p
      목록 : ol, ul, li, dl, dt, dd
      표 : table
      입력폼 : form

      컨테이너 태그 : div
      * 다른 블록 엘리먼트, 인라인 엘리먼트, div 태그를 담는 태그

 

 div  태그 

  • 블록엘리먼트를 그룹으로 묶을 수 있는 태그다.
  • <div> 태그도 블록엘리먼트다.
  • <div> 태그는 다른 블록엘리먼트나 인라인엘리먼트를 포함할 수 있고, 다른 div도 포함할 수 있다.
  • <div> 태그는 html문서에서 엘리먼트들을 특정 그룹으로 묶을 때 사용한다.

 

 

 

1-2. 인라인 엘리먼트

 

  • 새로운 줄에서 시작하지 않을 수도 있다.
  • 컨텐츠를 표시하는데 필요한 만큼의 너비만 가진다.
  • 인라인 엘리먼트는 블록 엘리먼트로 꼭 감싸자.
  • 엘리먼트의 너비(width)를 지정해도 적용이 되지 않는다.
  • 엘리먼트내의 컨텐츠(자식엘리먼트, 텍스트)를 정렬할 수 없다.
  • 대표적인 태그
    • 링크 태그 :
      이미지 태그 : img
      포맷팅 태그 : strong, em, small, del, mark   
      폼요소 태그 : input, select, textarea, button, label

      컨테이너 태그 : span 
      * 텍스트의 전부 혹은 일부를 담는 태그 

 

span 태그

  • 텍스트를 담는 태그다.
  • <span> 태그는 텍스트의 특정 부분을 감싸고 스타일 등의 표시를 한다.
  • <span> 태그를 사용해서 담은 텍스트는 style, id, class를 사용해서 다양한 스타일로 표시할 수 있다.
  • <em>으로 감싸고 강조를 줘도 됨 (em은 기본스타일이 정해져 있지만, span은 기본스타일 없이 내가 설정한대로만)

 

 

1-3. 블록 엘리먼트와 인라인 엘리먼트 간의 전환

  • css 속성 중에서 display의 값을 변경하면 블록엘리먼트를 인라인엘리먼트로, 인라인엘리먼트를 블록엘리먼트로 변경할 수 있다.
  • 블록엘리먼트를 인라인엘리먼트로 바꾸기
    • <블록엘리먼트태그 style="display: inline;" >컨텐츠</블록엘리먼트태그>
  • 인라인엘리먼트를 블록엘리먼트로 바꾸기
    • <인라인엘리먼트태그 style="display: block;" >컨텐츠</인라인엘리먼트태그>

 

 


 

* 블록 엘리먼트, 인라인 엘리먼트

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>블록 엘리먼트와 인라인 엘리먼트</title>
    <style>
        h1, h2, p, a, b, em, small{
            margin: 5px;
            padding: 5px;
            border: 1px solid red;
        }
    </style>
</head>
<body>
    <h1>블록 엘리먼트와 인라인 엘리먼트</h1>

    <h2>블록 엘리먼트</h2>
    <p style="width: 25%;">p는 블록 엘리먼트야</p>
    <p style="width: 50%;">p는 블록 엘리먼트야</p>
    <p style="width: 70%;">p는 블록 엘리먼트야</p>
    <p style="text-align: right;">p는 블록 엘리먼트야</p>
    <p style="text-align: center;">p는 블록 엘리먼트야</p>
    <p style="text-align: left;">p는 블록 엘리먼트야</p>

    <h2>인라인 엘리먼트</h2>
    <p style="text-align: right";>
        <a href="http://www.daum.net">다음</a>
        <a href="http://www.daum.net">다음</a>
        <a href="http://www.daum.net">다음</a>
        <a href="http://www.daum.net">다음</a>
        <a href="http://www.daum.net">다음</a>
    </p>

    <p><b>박명수</b>는 "아이들 만큼이라도 웃게 <em>아무 일 없다는 듯이</em> 해야 하지 않을까 싶다. <small>우리의 미래 아니냐</small>"고 말하면서 한숨을 내쉬었다.</p>
</body>
</html>

 

 


 

 

* div 태그 

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .products-box div{
            float: left;
            width: 240px;
            border: 1px solid seagreen;
            padding: 10px;
            margin: 5px;
            text-align: center;
        }
    </style>
</head>
<body>
    <h1>div 엘리먼트</h1>

    <div style="color: blue; font-style: italic;">
        <p>div 엘리먼트는 블록엘리먼트다.</p>
        <p>div 엘리먼트는 블록 엘리먼트, 인라인 엘리먼트, 다른 div 엘리먼트를 포함할 수 있다.</p>
        <p>div 엘리먼트는 여러 엘리먼트를 하나의 그룹으로 묶을 때 사용되는 엘리먼트다.</p>
        <p>div 엘리먼트를 사용해서 여러 엘리먼트를 하나의 그룹으로 묶으면, 그룹 단위로 스타일을 부여할 수 있다.</p>
    </div>
    <div style="color: orange; font-size: 20px;">
        <p>div 엘리먼트는 블록엘리먼트다.</p>
        <p>div 엘리먼트는 블록 엘리먼트, 인라인 엘리먼트, 다른 div 엘리먼트를 포함할 수 있다.</p>
        <p>div 엘리먼트는 여러 엘리먼트를 하나의 그룹으로 묶을 때 사용되는 엘리먼트다.</p>
        <p>div 엘리먼트를 사용해서 여러 엘리먼트를 하나의 그룹으로 묶으면, 그룹 단위로 스타일을 부여할 수 있다.</p>
    </div>
    <div style="background-color: black; color: white; font-weight: bold">
        <p>div 엘리먼트는 블록엘리먼트다.</p>
        <p>div 엘리먼트는 블록 엘리먼트, 인라인 엘리먼트, 다른 div 엘리먼트를 포함할 수 있다.</p>
        <p>div 엘리먼트는 여러 엘리먼트를 하나의 그룹으로 묶을 때 사용되는 엘리먼트다.</p>
        <p>div 엘리먼트를 사용해서 여러 엘리먼트를 하나의 그룹으로 묶으면, 그룹 단위로 스타일을 부여할 수 있다.</p>
    </div>

    <h2>div의 활용</h2>
    <div>
        <input type="checkbox" checked onchange="toggleDisplay('box-1');"> 추천
        <input type="checkbox" checked onchange="toggleDisplay('box-2');"> 신규
    </div>

    <div style="width: 100%; overflow: hidden; ">
        <h3>추천 노트북 리스트</h3>
        <div class="products-box">
            <div>
                <img src="resources/images/notebook-1.jpg" alt="노트북 이미지"/>
                <p>11월에 세일이 가장 많이 들어가는 제품입니다.</p>
            </div>
            <div>
                <img src="resources/images/notebook-1.jpg" alt="노트북 이미지"/>
                <p>11월에 세일이 가장 많이 들어가는 제품입니다.</p>
            </div>
            <div>
                <img src="resources/images/notebook-1.jpg" alt="노트북 이미지"/>
                <p>11월에 세일이 가장 많이 들어가는 제품입니다.</p>
            </div>
            <div>
                <img src="resources/images/notebook-1.jpg" alt="노트북 이미지"/>
                <p>11월에 세일이 가장 많이 들어가는 제품입니다.</p>
            </div>
        </div>
    </div>

    <div style="width: 100%; overflow: hidden;">
        <h3>신규 노트북 리스트</h3>
        <div class="products-box">
            <div>
                <img src="resources/images/notebook-2.jpg" alt="노트북 이미지"/>
                <p>11월에 세일이 가장 많이 들어가는 제품입니다.</p>
            </div>
            <div>
                <img src="resources/images/notebook-2.jpg" alt="노트북 이미지"/>
                <p>11월에 세일이 가장 많이 들어가는 제품입니다.</p>
            </div>
            <div>
                <img src="resources/images/notebook-2.jpg" alt="노트북 이미지"/>
                <p>11월에 세일이 가장 많이 들어가는 제품입니다.</p>
            </div>
            <div>
                <img src="resources/images/notebook-2.jpg" alt="노트북 이미지"/>
                <p>11월에 세일이 가장 많이 들어가는 제품입니다.</p>
            </div>
        </div>
    </div>
</body>
</html>

 

 

 


 

 

 

* span 태그

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .text-danger{
            color: red;
        }
        .text-success{
            color: blue;
        }
        .text-small{
            font-size: smaller;
        }
        .text-box{
            padding: 5px;
            border: 1px solid #eee;
            border-radius: 20px;
        }
        .text-blue-box{
            background-color: cornflowerblue;
            color: white;
        }
        .text-green-box{
            background-color: lightgreen;
            color: white;
        }
    </style>
</head>
<body>
    <h1>span 태그</h1>
    <p>span 태그는 텍스트를 감싸는 태그</p>
    <p>span 태그에 담겨있는 텍스트는 style, id, class 속성을 이용해서 다양한 스타일로 표현할 수 있다.</p>

    <h2>span 태그의 활용</h2>
    <dl>
        <dt>제목</dt><dd>이것이 자바다</dd>
        <dt>저자</dt><dd>홍길동 <span class="text-success text-small">(김유신 감수, 이순신 테스트)</span></dd>
        <dt>출판사</dt><dd>중앙출판사</dd>
        <dt>가격</dt><dd><span class="text-danger"><strong>35,500 </strong> 원</span> <span class="text-danger text-small">(500원 적립)</span></dd>
        <dt>기타</dt><dd><span class="text-box text-blue-box">무료배송</span> <span class="text-box text-green-box">당일배송</span></dd>
    </dl>
</body>
</html>

 

 

 

 

 


 

 

2. 폼과 폼요소

 

2-1. 폼 

 

  • 폼은 사용자가 값을 입력할 수 있는 입력요소(입력필드, 체크박스, 라디오버튼, 콤보박스 등)를 제공하는 것이다.
  • 모든 입력요소들은 <form> 태그 안에 정의되어야 한다.

 

2-2. 폼요소 

 

  • 폼요소는 사용자가 값을 입력하거나, 선택하거나, 체크할 수 있는 것들이다.
  • 대표적인 폼요소 태그
    • <input>, <select>, <textarea>, <button>
<!DOCTYPE html>
<html lang="ko>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>폼 입력</title>
</head>
<body>
    <h1>폼 요소</h1>

    <h2>회원가입 폼</h2>
    <form action="">
        <div>
            <label>이름</label>
            <!-- 텍스트 입력필드 -->
            <input type="text" name="name" />
        </div>
        <div>
            <label>비밀번호</label>
            <!-- 비밀번호 입력필드 -->
            <input type="password" name="pwd" />
        </div>
        <div>
            <label>전화번호</label>
            <select name="tel">
                <option value="010">010</option>
                <option value="011">011</option>
                <option value="016">016</option>
                <option value="017">017</option>
                <option value="018">018</option>
                <option value="019">019</option>
            </select>
            - <input type="text">
            - <input type="text">
        </div>
        <div>
            <label>프로필 사진</label>
            <!-- 첨부파일 입력필드 -->
            <input type="file" name="profile" />
        </div>
        <div>
            <label>생일</label>
            <!-- 날짜 입력필드 -->
            <input type="date" name="birth" />        
        </div>
        <div>
            <label>성별</label>
            <!-- 라디오버튼 : 같은 이름을 가진 것 중에서 하나만 선택 가능-->
            <input type="radio" name="gender" value="남">남성
            <input type="radio" name="gender" value="여">여성
        </div>
        <div>
            <label>학력</label>
            <!-- 라디오버튼 : 같은 이름을 가진 것 중에서 하나만 선택 가능-->
            <input type="radio" name="school" value="초등">초졸
            <input type="radio" name="school" value="중등">중졸
            <input type="radio" name="school" value="고등">고졸
            <input type="radio" name="school" value="전문대">초대졸
            <input type="radio" name="school" value="대학">대학졸
            <input type="radio" name="school" value="대학원">대학원졸
        </div>
        <div>
            <label>보유 기술</label>
            <!-- 체크박스 : 복수 개 선택 가능  -->
            <input type="checkbox" name="skill" value="java">자바
            <input type="checkbox" name="skill" value="c">c
            <input type="checkbox" name="skill" value="c++">c++
            <input type="checkbox" name="skill" value="python">파이썬
            <input type="checkbox" name="skill" value="SQL">데이터베이스
            <input type="checkbox" name="skill" value="빅데이터">빅데이터
            <input type="checkbox" name="skill" value="머신러닝">머신러닝
            <input type="checkbox" name="skill" value="임베디드">임베디드 프로그래밍
        </div>
        <div>
            <label>지원분야</label>
            <!-- 셀렉트박스(콤보박스) : 제시된 옵션 중 하나 혹은 여러 개(multiple)를 선택 가능 -->
            <select name="job">
                <option value="app"> 응용프로그램 개발 </option>
                <option value="web"> 웹 애플리케이션 개발 </option>
                <option value="fullstack"> 풀스택 개발 </option>
                <option value="front"> 프론트 엔드 개발 </option>
                <option value="infra"> 인프라 관리 </option>
                <option value="db"> 데이터베이스 관리 </option>
            </select>
        </div>
        <div>
            <label>자기소개</label>
            <!-- textarea : 개행문자가 포함된 여러 라인의 텍스트 입력 가능 -->
            <textarea name="memo" rows="10"></textarea>
        </div>
    </form>
</body>
</html>

 

 

 

 

 

2-3. 폼요소(input, select, textarea)의 주요 속성

 

1) 공통 속성

 

  • name 속성
    • 폼입력요소의 이름을 정의한다.
    • 입력값이 서버로 전달될 때 name속성에 지정된 이름과 입력값의 쌍으로 전달된다.
    • 모든 입력요소에는 name속성을 꼭 설정하자.
    • 체크박스나 라디오버튼의 경우 같은 종류의 항목들은 같은 이름을 설정한다.
    • 폼 입력값은 name=value&name=value&name=value 형식으로 서버로 전달된다. 
      ( userId=hong&job=web&description=나는 나다. ) 
  • disabled 속성 
    • 해당 폼 입력요소를 비활성화 시킨다. 
    • 비활성화된 폼 입력요소의 값은 서버로 제출되지 않는다.
    • 비활성화된 폼 입력요소에는 값을 입력하거나 수정할 수 없다.
  • readonly 속성 
    • 해앙 폼 입력요소는 읽기전용 입력요소가 된다.
    • 읽기전용 입력요소는 값을 수정할 수 없다.
    • 읽기전용 입력요소의 값은 서버로 제출된다.
    • 라디오버튼, 체크박스는 readonly 속성이 적용되지 않는다.

 

 

2) 고유 속성

 

  • <input> 태그의 주요 속성
    • type 속성 
      • 폼입력요소의 타입을 결정한다.
      • type 속성의 값은 미리 정해져 있다. 
      • 타입의 종류
        • type="text" : 입력필드가 된다.
        • type="password" : 비밀번호 입력필드가 된다.
        • type="date" : 날짜 입력필드가 된다.(달력표시)
        • type="number" : 숫자 입력필드가 된다 (숫자만 입력가능)
        • type="email" : 이메일 입력필드가 된다.(유효하지 않은 이메일 형식인 경우 에러발생)
        • type="url" : url 입력필드가 된다.
        • type="file" : 첨부파일 폼요소가 된다.
        • type="radio" : 하나만 선택가능한 라디오 버튼이 된다.
        • type="checkbox" : 복수개 선택가능한 체크박스가 된다.
        • type="reset" : 폼의 입력값을 초기상태로 리셋한다.
        • type="submit" : 폼의 입력값을 서버로 제출한다.
        • type="hidden" : 해당 폼 입력요소는 화면에 표시되지 않는다.
    • value 속성
      • 폼입력요소의 입력값을 정의한다.
      • 라디오버튼, 체크박스, 히든 필드는 value를 사용해서 미리 값을 설정해야 한다.
      • 첨부파일 입력요소에는 값을 지정할 수 없다. 
    • checked 속성
      • 라디오버튼과 체크박스를 체크상태로 만든다.
      • 라디오버튼과 체크박스는 현재 체크상태인 것만 서버로 값이 전달된다. 
    • minlength, maxlength 속성
      • 최소/ 최대 문자 입력 글자수를 제한한다.
      • type 속성이 text, password, email, url 등으로 지정된 입력필드에서 사용한다. 
    • step, min, max 속성
      •  증감치, 최소갓, 최대값을 지정한다. 
      • type = "number" 로 지정된 입력필드에서 사용한다. 

  • <select> 태그
    • 드롭다운 리스트를 만든다.
    • 사용자가 입력해야 되는 값이 미리 결정되어 있는 경우에 사용한다.
    • 예) 학력사항, 통신사, 지역 ...

  • <textarea> 태그
    • 여러 줄의 텍스트가 입력 가능한 입력필드이다.
    • <textarea>에 입력값을 정의할 때는 value를 사용하지 않는다.
      <textarea>미리 정의할 입력값</textarea>
    
    • rows 속성 : textarea가 표시할 줄 수를 지정한다.
    • cols 속성 : textarea가 표시할 너비를 지정한다.

  • <button> 태그
    • 클릭가능한 버튼을 정의한다.
    • <button> 태그가 <form>태그 안에 있을 때는 폼 입력값을 서버로 제출하는 submit버튼처럼 동작한다.

 

2-4. 폼요소 예시

 

 

* input 태그 

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>input 태그</h1>

    <h2>input 태그의 타입 종류</h2>
    <form method="post" action="register.jsp">
    <dl>
        <dt>type="text"</dt>
        <dd>입력필드를 생성한다.</dd>
        <dd>minlength와 maxlength 속성으로 최소/최대 문자열 개수를 지정할 수 있다. </dd>
        <dd><input type="text" name="userid" minlength="6" maxlength="12" value="hong" readonly></dd>

        <dt>type="password"</dt>
        <dd>비밀번호 입력필드를 생성한다.</dd>
        <dd>minlength와 maxlength 속성으로 최소/최대 문자열 개수를 지정할 수 있다. </dd>
        <dd>비밀번호 입력필드에는 영어 대소문자, 숫자, 특수문자만 입력가능하다.</dd>
        <dd><input type="password" name="pwd" minlength="9" maxlength="12"></dd>

        <dt>type="date"</dt>
        <dd>날짜 입력필드를 생성한다.</dd>
        <dd>날짜 입력필드에 초기값으로 날짜를 지정할 때는 yyyy-mm-dd 형식으로 값을 입력한다.</dd>
        <dd><input type="date" name="birth" value="2022-11-03" disabled></dd>

        <dt>type="radio"</dt>
        <dd>하나만 선택가능한 라디오버튼을 생성한다.</dd>
        <dd>라디오버튼은 value속성으로 값이 미리 지정되어 있어야 한다.</dd>
        <dd>라디오버튼에 checked 혹은 checked="checked"를 추가하면 해당 라디오버튼은 체크된 상태가 된다.
            2개를 체크해도 1개만 체크됨</dd>
        <dd>
            <input type="radio" name="job" value="it" checked> 개발팀
            <input type="radio" name="job" value="hr"> 인사팀
            <input type="radio" name="job" value="sec"> 보안팀
            <input type="radio" name="job" value="fi"> 총무부
        </dd>

        <dt>type="checkbox"</dt>
        <dd>복수 개 선택가능한 체크박스를 생성한다.</dd>
        <dd>체크박스는 value속성으로 값이 미리 지정되어 있어야 한다.</dd>
        <dd>체크박스에 checked 혹은 checked="checked"를 추가하면 해당 체크박스는 체크된 상태가 된다.</dd>
        <dd>
            <input type="checkbox" name="skill" value="java" checked>자바
            <input type="checkbox" name="skill" value="python">파이썬
            <input type="checkbox" name="skill" value="oracle" checked="checked">오라클
            <input type="checkbox" name="skill" value="spring">스프링
            <input type="checkbox" name="skill" value="vue">vue
            <input type="checkbox" name="skill" value="react">리액트
        </dd>
        
        <dt>type="file"</dt>
        <dd>첨부파일 선택필드를 생성한다.</dd>
        <dd>첨부파일 선택필드에서는 value속성으로 값을 설정할 수 없다. (보안문제) </dd>
        <dd><input type="file" name="file"></dd>

        <dt>type="number"</dt>
        <dd>숫자만 입력가능한 입력필드를 생성한다. </dd>
        <dd>숫자만 입력가능하고, 증가/감소 화살표가 표시된다.</dd>
        <dd>value, step, min, max 속성으로 각각 초기값, 증감값, 최소값, 최대값을 지정할 수 있다.</dd>
        <dd><input type="number" name="amount" value="10" step="10" min="0" max="100"></dd>

        <dt>type="email"</dt>
        <dd>이메일 입력필드를 생성한다. 입력값을 서버로 제출할 때 유효한 이메일 형식이 아니면 오류를 표시한다.</dd>
        <dd><input type="email" name="useremail"></dd>

        <dt>type="datetime-local"</dt>
        <dd>날짜와 시간을 입력하는 입력필드를 생성한다. </dd>
        <dd>value 속성으로 날짜와 시간을 지정할 때는 "2022-11-03T01:43"과 같은 형식으로 지정한다.</dd>
        <dd><input type="datetime-local" name="tiketing" value="2022-11-03T01:43"></dd>

        <dt>type="hidden"</dt>
        <dd>화면에 표시되지 않는 숨김 입력필드를 생성한다. </dd>
        <dd>숨김필드를 정의할 때는 name속성과 value속성을 지정해야 한다.
            (화면에 표시되지 않기 때문에 사용자가 값을 입력할 수 없으므로, 값이 미리 설정되어 있어야 한다.)</dd>
        <dd><input type="hidden" name="page" value="1"></dd>

        <dt>type="reset"</dt>
        <dd>폼입력값을 초기상태로 리셋하는 리셋버튼을 생성한다.</dd>
        <dd><input type="reset" value="초기상태로 리셋"></dd>

        <dt>type="submit"</dt>
        <dd>폼입력값을 서버로 제출하는 제출버튼을 생성한다. </dd>
        <dd><input type="submit" value="서버로 제출"></dd>
    </dl>
</form>
</body>
</html>

 

 

 


 

 

* select 태그 

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>select 태그</h1>

    <form method="post" action="register.jsp">
        <dl>
            <dt>셀렉트 박스</dt>
            <dd>select 태그에 name속성으로 지정된 이름과 옵션에서 선택한 값의 쌍이 서버로 제출된다. </dd>
            <dd>옵션태그에 value속성이 정의되어 있지 않으면 옵션태그의 콘텐츠가 서버로 제출되는 값이 된다.</dd>
            <dd>아래의 셀렉트박스는 test1 = 값1/값2/값3 이 서버로 제출</dd>
            <dd>
                <select name="test1">
                    <option>값1</option>    <!-- test1 = 값1/값2/값3 이 서버로 제출 --> 
                    <option>값2</option>
                    <option>값3</option>
                </select>
            </dd>
            <dt>셀렉트 박스</dt>
            <dd>옵션태그에 value속성이 정의되어 있으면 value 속성으로 지정된 값이 서버로 제출되는 값이 된다.</dd>
            <dd>아래의 셀렉트박스는 test2 = v1/v2/v3 이 서버로 제출 (값123은 그냥 화면에 표시되는 글자)</dd>
            <dd>
                <select name="test2">
                    <option value="v1">값1</option>     <!-- test2 = v1/v2/v3 이 서버로 제출 -->
                    <option value="v2">값2</option>
                    <option value="v3">값3</option>
                </select>
            </dd>
            <dt>옵션그룹이 있는 셀렉트박스</dt>
            <dd>
                <select name="dept">
                    <optgroup label="공과대학">
                        <option> 컴퓨터공학과</option>
                        <option> 기계공학과</option>
                        <option> 전기공학과</option>
                        <option> 전자공학과</option>
                        <option> 환경공학과</option>
                    </optgroup>
                    <optgroup label="인문대학">
                        <option> 국어국문학과</option>
                        <option> 영어영문학과</option>
                        <option> 사회학과</option>
                        <option> 역사학과</option>
                        <option> 철학과</option>
                    </optgroup>
                    <optgroup label="예술대학">
                        <option> 음악학과</option>
                        <option> 무용학과</option>
                    </optgroup>
                </select>
            </dd>
            <dt>옵션 선택하기, 비활성화하기</dt>
            <dd>option태그에 selected 혹은 selected="selected"를 지정하면 해당 옵션이 미리 선택되어 있다.</dd>
            <dd>option태그에 disabled 혹은 disabled="disabled"를 지정하면 해당 옵션을 선택할 수 없다.</dd>
            <dd>select태그에 disabled 혹은 disabled="disabled"를 지정하면 select 박스 전체를 선택할 수 없다.</dd>
            <dd>
                <select name="city" disabled>
                    <option>서울특별시</option>
                    <option>인천광역시</option>
                    <option selected>부산광역시</option>
                    <option>대전광역시</option>
                    <option>대구광역시</option>
                    <option>광주광역시</option>
                    <option>울산광역시</option>
                    <option disabled>평양특별시</option>
                </select>
            </dd>
            <dt>select 박스 예</dt>
            <dd>
                <select name="career">
                    <option value="" selected disabled> -- 경력사항을 선택하세요 -- </option>
                    <option value="0"> 신입 </option>
                    <option value="1"> 1년 이상 </option>
                    <option value="2"> 3년 이상 </option>
                    <option value="5"> 5년 이상 </option>
                    <option value="7"> 7년 이상 </option>
                    <option value="10"> 10년 이상 </option>
                </select>
            </dd>
        </dl>
        <input type="submit" value="제출">
    </form>
</body>
</html>

 

 

 

 

 


 

 

* textarea 태그 

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>textarea 태그</h1>

    <form>
        <dl>
            <dt>textarea 태그</dt>
            <dd>rows속성은 입력행의 개수, cols는 컬럼 수를 지정한다.</dd>
            <dd><textarea name="memo1" cols="100" rows="3"></textarea></dd>
            <dd><textarea name="memo1" cols="50" rows="6"></textarea></dd>

            <dt>textarea 태그</dt>
            <dd>textarea 태그는 반드시 여는태그와 닫는태그를 같이 작성해야 한다.</dd>
            <dd><textarea name="memo2"></textarea></dd>

            <dt>textarea 태그의 값</dt>
            <dd>textarea의 값은 value가 아닌 여는태그와 닫는태그 사이에 값을 적는다. </dd>
            <!-- <dd><textarea name="memo3" value="안녕하세요"></textarea></dd> -->
            <dd><textarea name="memo3">안녕하세요</textarea></dd>

            <dt>textarea 비활성화와 읽기전용 적용</dt>
            <dd><textarea name="memo4" readonly>안녕하세요</textarea></dd>
            <dd><textarea name="memo5" disabled>안녕하세요</textarea></dd>
        </dl>
    </form>
</body>
</html>

 

 

 

 

 

 

2-5. 요청방식 

 

1) GET 방식 요청

 

1. 주소창에 주소를 입력해서 요청하는 것

2. 링크를 클릭해서 요청하는 것

3. 검색어를 입력하고 검색버튼 클릭하는 것 

 

(데이터의 흐름 :  클라이언트 <- 서버 ) 

 

* <form> 태그에서 <form method="GET">으로 지정하거나 <form>이라고 적으면 -> GET 요청 

 

 

 

2) POST 방식 요청

 

1. 회원가입폼에서 내 정보를 입력하고 등록버튼을 클릭한 경우

2. 글을 등록할때 텍스트/사진/동영상을 처무하고 등록하는 경우 

 

(데이터의 흐름 : 클라이언트 -> 서버) 

 

* <form> 태그에서 <form method="POST"> 으로 지정하는 경우에만 -> POST 요청 

 

 

 POST 방식에서 button 버튼 주의 !! 

<form method="post" action="order.jsp">
 
<button>버튼1</button>                                  --> 폼입력값을 서버로 제출
<button type="submit">버튼2</button>           --> 폼입력값을 서버로 제출
<button type="button">버튼3</button>         --> 폼입력값을 서버로 제출하지 않는다. (주소검색을 위한 팝업창 가능) 

 

 

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>form 태그</h1>

    <h2>요청방식의 지정</h2>

    <h3>GET 방식의 요청</h3>
    <p>GET 방식의 요청은 method="get"으로 지정한다.</p>
    <p>GET 방식의 요청은 서버로 제출되는 값이 url의 ?뒤에 붙여져서 서버로 전달된다.</p>
    <p>GET 방식의 요청은 서버로 제출되는 값의 길이에 제한이 있다.</p>
    <p>GET 방식의 요청은 첨부파일을 서버로 제출할 수 없다. .</p>
    <form method="get" action="search.jsp">
        <select name="opt">
            <option value="title"> 제목 </option>
            <option value="writer"> 저자 </option>
            <option value="publish"> 출판사 </option>
        </select>
        <input type="text" name="keyword">
        <input type="submit" value="검색">
    </form>

    <h3>POST 방식의 요청</h3>
    <p>POST 방식의 요청은 method="post"으로 지정한다.</p>
    <p>POST 방식의 요청은 서버로 제출되는 값이 HTTP 요청 메세지의 body부에 포함되어 전달된다.</p>
    <p>POST 방식의 요청은 서버로 제출되는 값의 길이에 제한이 없다.</p>
    <p>POST 방식의 요청은 첨부파일로 서버로 제출할 수 있다.</p>
    <p>POST 방식의 요청은 서버로 전달되는 값을 요청메세지의 바디부에 담아서 서버로 보내기 때문에
        웹브라우저의 주소창에 값이 표시되지 않는다. 
        (아이디, 비밀번호가 주소창에 표시되는 것 방지 -> get이 아닌 post 사용)
    </p>
    <form method="post" action="login.jsp">
        <input type="text" name="userid">
        <input type="password" name="userpwd">
        <input type="submit" value="로그인">
        <button>버튼1</button>
        <button type="submit">버튼2</button>
        <button type="button">버튼3</button>
    </form>
</body>
</html>