method

폼의 기능은 브라우저에 사용자가 입력한 정보를 서버쪽으로 전송하는 것이다.

서버로 전송하는 방식에는 get 방식과 post방식이 있다.

get 방식은 정보를 url에 넣어서 서버로 전송하는 방식이다.

<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <form action="http://localhost/method.php">
        <input type="text" name="id">
        <input type="password" name="pwd">
        <input type="submit">
    </form>
</body>
</html>

get 방식을 사용하면 위와 같이 url의 ?뒤에 입력한 정보가 들어가서 서버로 전송된다.

get 방식을 사용하면 비밀번호 같이 민감한 정보도 url에 노출되어 위험할 수 있다. 그래서 post 방식을 사용해야 한다. post 방식은 <form>태그에 method속성을 추가하여 속성값을 "post"로 설정한다. 속성값을 "get"로 설정하거나 method속성을 추가하지 않으면 기본적으로 get방식으로 전송된다.

<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <form action="http://localhost/method.php" method="post">
        <input type="text" name="id">
        <input type="password" name="pwd">
        <input type="submit">
    </form>
</body>
</html>

post 방식을 사용하면 url 뒤에 아무런 정보도 없이 폼에서 입력한 값을 감춰서 서버로 전송한다. 따라서 굳이 get 방식을 사용할 이유가 없다면 post 방식을 사용하는것이 더 안전할 수 있다.

 

파일 업로드

웹 페이지에서 파일 업로드는 <input> 태그의 type 속성의 값으로 "file"을 사용한다. <form>태그 안의 <input>태그에서 파일을 업로드 한 뒤, 서버로 전송하면 이후 파일에 대한 처리는 서버에서 처리한다. form으로 서버로 파일을 전송할 때는 <form>태그에서 method속성 값을 "post"로 설정해야 하고, enctype 속성 값을 "multipart/form-data"로 설정해야 한다.

<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <form action="http://localhost/upload.php" method="post" enctype="multipart/form-data">
        <input type="file" name="profile">
        <input type="submit">
    </form>
</body>
</html>

파일을 선택하여 제출 버튼을 누르면 form 태그의 action속성에서 지정한 서버로 파일이 전송된다.

 

정보로서의 HTML

웹의 성장에 따라 인류의 많은 정보들이 웹으로 표현되며 html의 중요성이 더 커지고 있다. 

정보를 더 잘표현하기 위해 여러가지 조치들이 취해졌다.

 

글꼴 - font (퇴출됨)

현 시점에서 font 태그는 퇴출되었다. 퇴출되었지만 아직까지도 통계적으로 font태그를 사용하는 곳이 많이 존재한다.

<font>태그는 size 속성으로 글자의 크기를 정할 수 있다. 글자 크기는 작은 순서대로 1~7까지 설정할 수 있다. color 속성으로 글씨의 색을 정할 수 도 있다.

<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <font size="7" color="red">Hello</font> World
    <font size="7" color="red">Hello</font> World
    <font size="7" color="red">Hello</font> World
    <font size="7" color="red">Hello</font> World
</body>
</html>

font태그는 다른 태그들 처럼 html의 기능에 집중한 태그가 아닌 디자인에 집중되어 있는 태그이다. html을 정보를 전달하는 기능에 집중하여 사용하기 위해 디자인 관련한 태그들은 퇴출시키고 웹 페이지의 디자인을 위한 언어인 CSS를 만들었다. font태그를 사용하게 되면 이 태그는 정보에 대한 설명을 하고 있지 않으며, 이 태그로 디자인을 사용하게 되면 html의 파일 용량도 커지며 정보로써 html 파일을 해석하기 어려워지는 문제점들을 갖고 있기 때문에 사용하지 않는 것이 좋다.

텍스트 입력

<input>태그의 type 속성에 "text"를 입력하면 사용자로부터 텍스트를 입력받는 곳을 만들 수 있다. "password"속성을 입력하면 패스워드 입력란 처럼 사용자의 입력값의 내용을 확인할 수 없도록 할 수 있다.

input태그는 서버로 값을 전송할때 많이 쓰기 때문에 서버에서 값을 인식할 수 있도록 name 속성을 꼭 사용해 줘야 한다.

value 속성에 값을 넣으면 기본 값을 설정해 줄 수 있다.

텍스트 입력값을 여러줄로 받고 싶을 때는 <textarea> 태그를 사용하면 된다. 

cols 속성을 사용하면 폭을 지정해 줄 수 있고, rows속성을 사용하면 높이를 지정해 줄 수 있다.

textarea태그에서 기본 값을 설정해주려면 태그 안에 값을 넣으면 된다.

<html>
<body>
    <form action="">
        <p>text : <input type="text" name="id" value="default value"></p>
        <p>password : <input type="password" name="pwd" value="default value"></p>
        <p>textarea : 
            <textarea cols="50" rows="2">default value</textarea>
        </p>
    </form>
</body>
</html>

 

선택

사용자들에게 여러가지 선택지 중 하나를 선택하게 하는 방법중 Dropdown List 라는 방법이 있다. Dropdown List는 제한된 공간 안에서 여러개의 선택지 중 하나를 선택하는 방법이다. 

<select> 태그 안에 <option> 태그를 사용하여 선택하는 태그를 만들 수 있다. 이렇게 사용하면 선택지 중에 하나만 선택할 수 있다.

선택지 중에 여러개를 선택하도록 만들고 싶다면 <select> 태그에서 multiple 속성을 사용해야 한다. 이 속성은 속성값이 없이 속성만 사용한다. 여러개를 선택할 때는 Ctrl키를 누른 후 선택할 항목을 클릭하면 된다.

선택한 정보를 서버로 전송하기 위해서는 역시 <form> 태그를 사용해야 한다. 

서버로 전송할 때 선택한 정보를 컴퓨터가 더 이해하기 쉽도록 하려면 value 태그를 이용하여 서버로 전송할 값을 따로 지정해 줄 수 있다.

<html>
<head>
    <meta charest="utf-8">
</head>
<body>
    <form action="http://localhost/color.php">
        <h1>색상</h1>
        <select name="color">
            <option value="red">붉은색</option>
            <option value="black">검은색</option>
            <option value="blue">파란색</option>
        </select>
        <h1>색상2 다중선택</h1>
        <select name="color2" multiple>
            <option value="red">붉은색</option>
            <option value="black">검은색</option>
            <option value="blue">파란색</option>
        </select>
        <input type="submit">
    </form>
</body>
</html>

서버로 전송되는 값을 보면 color2는 여러개의 색상이 전송되어 있고, 모두 value속성에서 지정한 값으로 전송되는 것을 확인할 수 있다.

 

버튼

<input> 태그의 type 속성에 "submit"을 지정하면 클릭했을 때 서버로 폼의 내용이 전송되는 버튼을 만들 수 있다. 버튼 안의 글자는 value 속성을 이용하여 바꿀 수 있다.

type 속성에 "button"을 지정하면 어떤 효과도 갖지 않는 버튼을 만들 수 있다. 이 버튼은 onclick속성을 이용하여 클릭했을 때의 효과를 지정해 줄 수 있다. 아래 코드에서는 자바스크립트로 클릭시 경고창을 띄우는 기능을 지정하였다.

type 속성에 "reset"을 지정하면 클릭시 폼에 작성한 내용들이 모두 초기화 되는 버튼을 만들 수 있다.

<html>
<head><meta charset="utf-8"></head>
<body>
    <form action="http://localhost/form.php">
        <input type="text">
        <input type="submit" value="전송">
        <input type="button" value="버튼" onclick="alert('hello')">
        <input type="reset">
    </form>
</body>
</html>

위는 버튼을 클릭했을시 자바스크립트로 지정한 경고창이다.

 

데이터 전송 - hidden

서버로 데이터를 전송할 때 UI가 굳이 필요 없거나 데이터를 몰래 전송해야 할 경우 hidden을 사용한다.

<input>태그의 type속성에 "hidden"을 지정해 주면 된다. value 속성에 서버로 전송할 값을 넣는다.

<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <form action="http://localhost/hidden.php">
        <input type="text" name="id">
        <input type="hidden" name="hide" value="phulasso">
        <input type="submit"> 
    </form>
</body>
</html>

웹 페이지를 보면 ui에서 hidden 속성을 사용한 input태그는 보이지 않는다. 하지만 값을 넣어서 전송해보면 다음과 같이 hidden 속성의 value 값이 서버로 전송되는 것을 확인할 수 있다.

 

컨트롤의 제목 - lable

input 태그의 이름을 정할 때 html에서 권장하는 방법은 <lable>태그를 사용하는 것이다. input 태그의 이름을 <lable>태그로 감싸면 된다.

어떤 input태그의 이름인지 확실하게 명시하기 위해서 input 태그에 id라는 속성을 넣어 값을 지정하고, lable 태그의 for 속성에 input 태그에서 지정한 id값을 넣어야 한다.

아니면 lable 태그로 input태그의 이름과 input태그까지 같이 감싸도 된다.

lable 태그를 사용하게 되면 input 태그의 이름을 클릭해도 해당 input 태그가 선택되고, 체크박스인 경우 이름만 클릭해도 체크박스가 체크된다. 

<html>
<body>
    <form action="">
        <p>
            <label for="id_txt">text :</label> 
            <input id="id_txt" type="text" name="id" value="default value">
        </p>
        <p>
            <label for="password">password :</label> 
            <input id="password" type="password" name="pwd" value="default value">
        </p>
        <p>
            <label>textarea : 
                <textarea cols="50" rows="2">default value</textarea>
            </label>
        </p>
        <p>
            <label>
                <input type="checkbox" name="color" value="red"> 붉은색
            </label>
            <label for="color_blue">
                <input id="color_blue" type="checkbox" name="color" value="blue"> 파란색
            </label>
        </p>
    </form>
</body>
</html>

 

줄바꿈 - br

p 태그는 줄바꿈의 간격이 고정되어 있기 때문에 <br>태그를 이용하면 자유롭게 줄바꿈을 이용할 수 있다. <br>태그는 내용이 없는 태그이기 때문에 열리는 태그 하나만 있으면 된다. <br>태그의 개수에 따라 줄바꿈 횟수도 결정되어 간격도 더 커진다.

<html>
<body>
    hello<br>
    world<br><br><br>
    br 태그
</body>
</html>

 

이미지 - img

웹 페이지에 이미지를 넣을 때는 img 태그를 사용한다. imf태그도 닫는 태그 필요 없이, 여는 태그만 있으면 된다.

src 속성으로 이미지 이름을 지정하고, width 속성과 height 속성으로 이미지 크기를 지정한다. 이미지는 원래 크기가 정해져 있기 때문에 width와 height 속성을 모두 사용하면 왜곡되는 현상이 발생할 수 있다. 이 둘중 하나의 속성만 사용하면 그 크기와 맞게 원본 이미지의 비율로 크기를 수정할 수있다.

alt 속성을 사용하면 이미지 손상 등의 이유로 웹 페이지에서 보여줄 수 없을 때 이미지가 깨진 아이콘과 원래 이미지에 대한 설명을 보여줄 수 있다. 

title 속성을 사용하면 이미지에 마우스 커서를 대면 title 속성값을 보여준다.

<html>
<body>
    <img src="mountain.jpg"  height="300" alt="mountain img" title="산이미지">
</body>
</html>

 

이미지 파일을 불러올 수 없는 경우

 

표 - table

이름 성별 주소
phulasso seoul

위와 같은 표도 웹 페이지에 삽입할 수 있다. 

각 칸에 들어가는 내용들은 <td>태그 안에 넣는다. td는 table data라는 의미이다.

각 열은 <tr>태그로 구분한다. tr은 table row라는 의미이다. td태그들은 테이블의 열에 맞게 tr태그 안에 들어간다.

td를 포함한 tr 태그는 <table> 태그 안에 들어간다. table 태그의 border 속성을 이용하여 표의 구분 선도 만들 수 있다. border속성의 값이 커질 수록 선의 굵기가 굵어진다.

<html>
<body>
    <table border="1">
        <tr>
            <td>이름</td> <td>성별</td> <td>주소</td>
        </tr>
        <tr>
            <td>lee</td> <td>남</td> <td>서울</td>
        </tr>
        <tr>
            <td>kim</td> <td>여</td> <td>청주</td>
        </tr>
    </table>
</body>
</html>

과거에는 웹 페이지의 레이아웃을 잡을 때 테이블 태그를 이용하여 표로 구성하기도 했다.

위의 표를 보면 이름, 성별, 주소가 있는 열은 표의 제목에 해당하는 부분이다. 이 열은 tr 태그 밖에 <thead> 태그로 감싸준다. thead태그 안에 있는 각 칸의 데이터들은 <th>태그를 이용하면 글씨를 볼드체로 굵게 만들 수 있다.

그 밑의 두 줄은 표 내용의 본문에 해당한다. 이 열들은 tr 태그 밖에 <tbody> 태그로 감싸준다. 

테이블의 가장 밑 줄은 <tfoot>태그로 감싸주면 된다. thead, tbody, tfoot태그는 표의 모양을 직접적으로 변화시키지 않지만 태그만 보고 표의 구조를 파악하는데 도움을 주며 표를 더 체계적으로 만드는데 도움을 주므로 꼭 사용하는 것이 좋다. 

thead 태그와 tfoot 태그는 테이블의 중간에 들어가도 웹 페이지에 나오는 표를 보면 항상 표의 맨 위와 맨 아래에 위치하는 자리를 결정하는 역할도 한다.

<html>
<body>
    <table border="1">
        <thead>
            <tr>
                <th>이름</th> <th>성별</th> <th>주소</th> <th>회비</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>lee</td> <td>남</td> <td>서울</td> <td>1000</td>
            </tr>
            <tr>
                <td>kim</td> <td>여</td> <td>청주</td> <td>500</td>
            </tr>
        </tbody>
        <tfoot>
            <tr>
                <td>합계</td> <td></td> <td></td> <td>1500</td>
            </tr>
        </tfoot>
    </table>
</body>
</html>

표의 각 칸을 병합하고 싶을 때는 td태그의 속성을 사용하면 된다. rowspan 속성은 속성 값만큼 수직으로 병합하며 병합되는 칸에 해당하는 td태그는 지워줘야 한다. colspan 속성은 속성 값 만큼 수평으로 병합되며 병합되는 칸에 해당하는 td태그는 지워줘야 한다.

<html>
<body>
    <table border="1">
        <thead>
            <tr>
                <th>이름</th> <th>성별</th> <th>주소</th> <th>회비</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>lee</td> <td>남</td> <td rowspan="2">서울</td> <td>1000</td>
            </tr>
            <tr>
                <td>kim</td> <td>여</td> <td>500</td>
            </tr>
        </tbody>
        <tfoot>
            <tr>
                <td colspan="3">합계</td> <td>1500</td>
            </tr>
        </tfoot>
    </table>
</body>
</html>

 

입력양식 - form

로그인, 회원가입, 글작성 등을 할 때 서버로 정보를 전송하기 위해 사용하는 글자를 입력하는 곳, 선택하는 곳 등을 form(폼) 이라 한다.

<input>태그를 이용하면 웹 페이지 이용자가 작성할 수 있는 텍스트 상자를 만들 수 있다. input 태그의 type의 속성을 "text"로 지정해 주면 된다.

type 속성을 "password"로 지정해주면 로그인할 때 비밀번호를 작성하는 곳처럼 내용이 보이지 않는 텍스트 상자를 만들 수 있다.

type 속성을 "submit"으로 지정하면 제출 버튼을 만들 수 있다.

이러한 input태그들은 <form> 태그 안에 넣어야 한다. input 태그에 작성한 내용들은 form 태그의 action속성 안에 지정한 서버로 전송한다.

같은 type 속성이 여러 개 있는 경우 서버에서는 각 태그를 구분할 수 없기 때문에 name 속성을 이용하여 구분해준다.

<html>
<body>
    <form action="http://localhost/login.php">
        <p>아이디 : <input type="text" name="id"></p>
        <p>비밀번호: <input type="password" name="pw"></p>
        <p>주소 : <input type="text" name="addr"></p>
        <input type="submit">
    </form>
</body>
</html>

 

 

+ Recent posts