Data Scientist 옌

매일 발전하는 IT문제해결사

국비지원교육 (22.01-22.07)/강의노트

22-03-23(수) 038일차 [HTML, JSP, CSS] HTML과 폼 태그, JSP, CSS 활용법

옌炎 2022. 5. 12. 12:20
728x90

수업내용


1교시 (09:30-10:20)

  • URI와 URL
    URI vs URL
    -------------

    I : identifier
        최종 자원, 차아야할 디렉토리 : 폴더
    L : location
        최종 자원, 찾아야할 자원 : 파일

    빅데이터 : 데이터를 모은 것 : 매집

    OPEN API
        국가 -> 민간에 자원을 공유
        data.go.kr : 회원 등록
        민간인 사용하려 할 때 사용하는 기술 : OPEN Api

    =====================================================
    숙제 내용 URI 는 위치로 찾아가게 하는 것이 아니라, 아이디로 매핑시켜놓는것이다.
    따라서 사용자에게 파일 이름, 위치 노출이 되지 않는다.
    http://localhost:8088/firstWeb/I
    <http://localhost:8088/I

    URL은 자원을 '서버에 있는 폴더' 위치로 찾아간다.
    URL은 URI지만 URI는 모두 URL은 아니다. (URI가 URL을 포함한다.)
    http://localhost:8088/firstWeb/html/hello.html =====================================================

2교시 (10:30-11:20)

  • HTML : Hyper Text Markup Language
    ---------------------------------------
    태그 tag <html></html>
    요소 element <시작태그 속성1="속성값1" 속성2="속성값2">내용</끝태그>
    속성 attribute
    내용 contents

    웹문서
    ------------------------------------------------
    <!DOCTYPE html>
    <html>
        <head>
            <titme>웹 문서</title>
        </head>
        <body>
            <h1>웹 문서</h1>
            <h1>form 태그</h1>
            <hr>
            <p>
            <div class="abc">
                <form>
                  <input type="text" name="id" />
                  <input type="text" name="pw" />
                  <input type="submit" value="보내기" />
                </form>
              </div>
               <div id="a"></div>
        </body>
    </html>
    ------------------------------------------------
    웹 문서를
     |
     | 브라우저 엔진
     |
    DOM Tree
    ------------------------------------------------
    <html>
    <head>
    <title>
    <body>
    <h1>
    <h1>
    <hr>
    <p>
    <div class="abc">
    <form>
    <input>
    <input>
    <input>
    <div id="a">
    배열로 본다.
    배열 인덱스 0 : html
    배열 인덱스 1 : head, body
    배열 인덱스 3 : h1_1, h1_2, h2, hr, p, div, divform
    배열 인덱스 4 : form
    배열 인덱스 5 : input_0, input_1, input_2
    ------------------------------------------------

    웹문서 ---> document ---> DOM : Document Object Model

    노드 node : 웹문서를 DOM으로 읽어서 DOM Tree를 만들 때
    엘리먼트, 어트리뷰트, 컨텐츠

3교시 (11:30-12:20)

  • form tag
    <form> 폼 태그
    웹 문서에서 HTML 태그를 이용해서
    웹 서버로 데이터를 전송하는(요청하는) 유일한 방법이다.
    -----------------------
    <form [속성="속성값"]>
    폼 요소
    </form>

    form 태그 속성
    ---------------------
    name 자바스크립트, jQuery, CSS로 폼을 제어할 때 사용하는 폼 이름 지정

    id 자바스크립트, jQuery, CSS자바스크립트로 폼을 제어할 때 사용하는 폼 이름 지정

    method 폼 요소 내용을 서버 쪽 프로그램에 넘겨주는 방식 지정
    get 256 ~ 3096byte 서버로 전송 가능
    웹 브라우저 주소 표시줄에 사용자가 입력한 내용이 표시 됨
    http://localhost:8088/firstWeb/html/formGetTest.html?id=%EB%B0%95%EA%B1%B4%EC%9B%90&pw=1234#

    클라이언트가 요청한 정보가 http 프로토콜 요청 정보가
    요청 Header 부분에 담아서 전송된다.

    post 입력한 내용의 길이에 제한을 받지 않음
    웹 브라우저 주소 표시줄에 내용 표시 안됨
    http://localhost:8088/firstWeb/html/formPostTest.html#

    클라이언트가 요청한 정보는 http 프로토콜 요청 정보의
    요청 body 부분에 담아서 전송된다.

    HTTP 프로토콜 요청 Request, 응답 Response

    요청 GET Request
    ------------------------
    Header
    http://localhost:8088/firstWeb/html/formGetTest.html

    id=%EB%B0%95%EA%B1%B4%EC%9B%90
    &
    pw=1234# <-- 쿼리 스트링 Query String key=value&key=value
    ------------------------

    ------------------------
    Body

    ------------------------

    요청 POST Request
    ------------------------
    Header
    http://localhost:8088/firstWeb/html/formPostTest.html#

    ------------------------

    ------------------------
    Body

    id=%EB%B0%95%EA%B1%B4%EC%9B%90
    &
    pw=1234#
    ------------------------
    응답 Response

    ------------------------
    Header
    ------------------------

    ------------------------
    Body
    ------------------------
    action form 태그 안의 내용을 처리해 줄 서버 프로그램을 지정

    <input> 사용자 입력을 위한 태그
    --------------------------
    input 태그의 type 속성
    --------------------------
    텍스트와 비밀번호 type="text" type="password"
    체크 박스와 라디오 type="checkbox", type="submit"
    전송, 리셋 버튼 type="submit", type="reset"
    이미지 버튼 type="image"
    기본 버튼 type="button"
    파일을 첨부하는 type="file"
    히든 필드 type="hidden"

    search 검색할 때 입력하는 필드
    url URL 주소를 입력하는 필드
    email 이메일 주소를 입력하는 필드
    tel 전화번호를 입력하는 필드
    number 숫자를 조절할 수 있는 스핀 박스
    range 숫자를 조절할 수 있는 슬라이드 막대
    date 사용자 지역을 기준으로 날짜(연,월,일)
    month 사용자 지역을 기준으로 날짜(연,월)
    week 사용자 지역을 기준으로 날짜(연,주)
    time 사용자 지역을 기준으로 시간(시,분,초,분할초)
    datetime 국제 표준시(UTC)로 설정된 날짜와 시간(연,월,일,시,분,초,분할초)
    datetime-local 사용자가 있는 지역을 기준으로 날짜와 시간(연,월,일,시,분,초,분할초)

4교시 (12:30-13:20)

  • formGetTest.html
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>FORM TEST</title>
</head>
<body>
	<h2>FORM TEST GET 방식</h2>
	<hr>
	<!--
	http://localhost:8088/firstWeb/html/formGetTest.html?id=%EB%B0%95%EA%B1%B4%EC%9B%90&pw=1234# 아이디와 비밀번호가 다 보임
	 -->
	<form method="GET" action="#">
		아이디 : <input type="text" name="id"><br>
		비밀번호 : <input type="text" name="pw"><br>
		<input type="submit" value="GET방식"><br>
	</form>
</body>
</html>
  • formPostTest.html
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>FORM TEST</title>
</head>
<body>
	<h2>FORM TEST POST 방식</h2>
	<!-- 
	http://localhost:8088/firstWeb/html/formPostTest.html# 가려짐
	 -->
	<form method="POST" action="#">
		아이디 : <input type="text" name="id"><br>
		비밀번호 : <input type="text" name="id"><br>
		<input type="submit" value="POST방식"><br>
	</form>
</body>
</html>

5교시 (14:30-15:20)

  • hello.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	Hello Jsp !!! <br>
<%
 	out.println("Hello JSP !!!");
	out.println("<hr>");
	java.util.Date d = new java.util.Date();
	out.println("Date >>> : " + d + "<br>");
	
	String id = request.getParameter("id");
	String pw = request.getParameter("pw");
	System.out.println("id >>> : " + id);
	System.out.println("pw >>> : " + pw);
	out.println("id >>> : " + id + "<br>");
	out.println("pw >>> : " + pw + "<br>");
%>
</body>
</html>

  • formGetTest.html
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>FORM TEST</title>
</head>
<body>
	<h2>FORM TEST GET 방식</h2>
	<hr>
	<!--
	http://localhost:8088/firstWeb/html/formGetTest.html?id=%EB%B0%95%EA%B1%B4%EC%9B%90&pw=1234#
action="http://localhost:8088/firstWeb/jsp/hello.jsp"
	 -->
	<form method="GET" action="/firstWeb/jsp">
		아이디 : <input type="text" name="id"><br>
		비밀번호 : <input type="text" name="pw"><br>
		<input type="submit" value="GET방식"><br>
	</form>
</body>
</html>

6교시 (15:30-16:20)

  • html5_5.html
<!DOCTYPE html>
<html lang="ko">
	<head>
		<meta charset="UTF-8">
		<title>회원 가입</title>
		
		<style>
			#container {
				width:600px;
				margin:10px auto;
			}
		</style>
	</head>
	
	<body>
		<div id="container">
			<h1>회원 가입을 환영합니다</h1>
			<form>
				<fieldset>
					<legend>사용자 정보</legend>
					<ul>
						<li>
							<label for="uid">아이디</label>
							<input type="text" id="uid" autofocus placeholder="4자 ~ 10자 사이, 공백없이" required>
						</li>
						<li>
							<label for="umail">이메일</label>
							<input type="email" id=umail" required>
						</li>
						<li>
							<label for="pwd1">비밀번호</label>
							<input type="password" id="pwd1" placeholder="문자와 숫자, 특수 기호 포함" required>
						</li>
						<li>
							<label for="pwd2">비밀번호 확인</label>
							<input type="password" id="pwd2" required>
						</li>
					</ul>
				</fieldset>
				<fieldset>
					<legend>이벤트와 새로운 소식</legend>
					<input type="radio" name="mailing" id="mailing_y" value="mailing_yes">
					<label for="mailing_y">메일 수신</label>
					<input type="radio" name="mailing" id="mailing_n" value="mailing_no" checked>
					<label for="mailing_n">메일 수신 안 함</label>
				</fieldset>
				<div id="buttons">
					<input type="submit" value="가입하기">
					<input type="reset" value="취소">
				</div>
			</form>
		</div>
	</body>
</html>

  • html5_5.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>html5_5 요청 데이터 받기</title>
	</head>
	
	<body>
		<h3>html5_5 요청 데이터 받기</h3>
		<hr>
		<%
			String uid = request.getParameter("uid");
			String umail = request.getParameter("umail");
			String pwd1 = request.getParameter("pwd1");
			String mailing = request.getParameter("mailing");
			
			System.out.println("html5_5.html 파일 form 태그에서 전송된 요청 정보를 ");
			System.out.println("html5_5.jsp jsp 파일에서 받아서 콘솔에 출력하기");
			System.out.println("uid >>> : " + uid);
			System.out.println("umail >>> : " + umail);
			System.out.println("pwd1 >>> : " + pwd1);
			System.out.println("mailing >>> : " + mailing);
			
			
			out.println("html5_5.html 파일 form 태그에서 전송된 요청 정보를 " + "<br>");
			out.println("html5_5.jsp jsp 파일에서 받아서 브라우저에 출력하기" + "<br>");
			out.println("uid >>> : " + uid + "<br>");
			out.println("umail >>> : " + umail + "<br>");
			out.println("pwd1 >>> : " + pwd1 + "<br>");
			out.println("mailing >>> : " + mailing + "<br>");
		%>
	
	</body>
</html>

  • html5_5.html
<!DOCTYPE html>
<html lang="ko">
	<head>
		<meta charset="UTF-8">
		<title>회원 가입</title>
		
		<style>
			#container {
				width:600px;
				margin:10px auto;
			}
		</style>
	</head>
	
	<body>
		<div id="container">
			<h1>회원 가입을 환영합니다</h1>
			<form name="" id=""
				  method="GET"
				  action="/firstWeb/jsp/html5_5.jsp">
				<fieldset>
					<legend>사용자 정보</legend>
					<ul>
						<li>
							<label for="uid">아이디</label>
							<input type="text" id="uid" autofocus placeholder="4자 ~ 10자 사이, 공백없이" required>
						</li>
						<li>
							<label for="umail">이메일</label>
							<input type="email" id="umail" required>
						</li>
						<li>
							<label for="pwd1">비밀번호</label>
							<input type="password" id="pwd1" placeholder="문자와 숫자, 특수 기호 포함" required>
						</li>
						<li>
							<label for="pwd2">비밀번호 확인</label>
							<input type="password" id="pwd2" required>
						</li>
					</ul>
				</fieldset>
				<fieldset>
					<legend>이벤트와 새로운 소식</legend>
					<input type="radio" name="mailing" id="mailing_y" value="mailing_yes">
					<label for="mailing_y">메일 수신</label>
					<input type="radio" name="mailing" id="mailing_n" value="mailing_no" checked>
					<label for="mailing_n">메일 수신 안 함</label>
				</fieldset>
				<div id="buttons">
					<input type="submit" value="가입하기">
					<input type="reset" value="취소">
				</div>
			</form>
		</div>
	</body>
</html>

데이터를 넘겨 가입하기 누르기

7교시 (16:30-17:20)

  • css_1.html
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>CSS</title>
</head>

<body>
	<h1>CSS Cascading style sheets</h1>
	<h3>블록 레벨     block-level 요소 h1, div, p 태그</h3>
	<h3>인라인 레벨    inline-level 요소 span, img, strong</h3>
	<hr>
	<div>내일 죽을 것처럼 <span class="accent">오늘</span>을 살고</div>
	<p>영원히 살 것처럼 <br>내일을 꿈꾸어라. </p>
	<p>
		박스모델 box-model 요소<br>
		-------------------------<br>
		콘텐츠 영역<br>
		박스와 콘텐츠 영역 사이의 여백 패딩 padding<br>
		박스의 테두리  border<br>
		박스 모델 사이의 여백이 마진 margin<br>
	</p>
	<img src="/firstWeb/images/box_model.PNG">
</body>
</html>

  • css_2.html
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>CSS</title>
	
	<style type="text/css">
		* {
			margin: 0;
		}
	</style>
</head>

<body>
	<h1>CSS Cascading style sheets</h1>
	<h3>블록 레벨    block-level 요소 h1, div, p 태그</h3>
	<h3>인라인 레벨    inline-level 요소 span, img, strong</h3>
	<hr>
	<div>내일 죽을 것처럼 <span class="accect">오늘</span>을 살고</div>
	<p>영원히 살 것처럼 <br>코딩을 하라. </p>
	<p>
		박스모델 box-model 요소<br>
		-----------------------<br>
		콘텐츠 영역<br>
		박스와 콘텐츠 영역 사이의 여백 패딩 padding<br>
		박스의 테두리  border<br>
		박스 모델 사이의 여백이 마진 margin<br>
	</p>
	<img src="/firstWeb/images/box_model.PNG">
</body>
</html>

  • css_3.html
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>CSS</title>
	<style type="text/css">
		body * {
			border:1px solid blue;
		}
		.accent {
			color:red;
			font-weight:bold;
		}
	</style>
</head>

<body>
	<h1>CSS Cascading style sheets</h1>
	<h3>블록 레벨    block-level 요소 h1, div, p 태그</h3>
	<h3>인라인 레벨    inline-level 요소 span, img, strong</h3>
	<hr>
	<div>내일 죽을 것처럼 <span class="accent">오늘</span>을 살고</div>
	<p>영원히 살 것처럼 <br>코딩을 하라. </p>
	<p>
		박스모델 box-model 요소<br>
		-----------------------<br>
		콘텐츠 영역<br>
		박스와 콘텐츠 영역 사이의 여백 패딩 padding<br>
		박스의 테두리   border<br>
		박스 모델 사이의 여백이 마진 margin<br>
	</p>
	<img src="/firstWeb/images/box_model.PNG">
</body>
</html>

8교시 (17:30-18:30)

  • html_5_6.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>html5_6 요청 데이터 받기</title>
</head>

<body>
	<h3>html5_6 요청 데이터 받기</h3>
	<hr>
	<%
		String uid = request.getParameter("uid");
		String umail = request.getParameter("umail");
		String pwd1 = request.getParameter("pwd1");
		String path = request.getParameter("path");
		String memo = request.getParameter("memo");
		String mailing = request.getParameter("mailing");
		
		System.out.println("html5_6.html 파일 form 태그에서 전송된 요청 정보를 ");
		System.out.println("html5_6.jsp jsp 파일에서 받아와 콘솔에 출력하기");
		System.out.println("uid >>> : " + uid);
		System.out.println("umail >>> : " + umail);
		System.out.println("pwd1 >>> : " + pwd1);
		System.out.println("path >>> : " + path);
		System.out.println("memo >>> : " + memo);
		System.out.println("mailing >>> : " + mailing);
		
		out.println("html5_6.html 파일 form 태그에서 전송된 요청 정보를 " + "<br>");
		out.println("html5_6.jsp jsp 파일에서 받아서 브라우저에 출력하기" + "<br>");
		out.println("uid >>> : " + uid + "<br>");
		out.println("umail >>> : " + umail + "<br>");
		out.println("pwd1 >>> : " + pwd1 + "<br>");
		out.println("memo >>> : " + memo + "<br>");
		out.println("mailing >>> : " + mailing + "<br>");
	%>
</body>
</html>
  • html_5_6.html
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>회원 가입</title>
	<style>
		#container {
			width:600px;
			margin:10px auto;
		}
	</style>
	<link rel="stylesheet" href="/firstWeb/css/register.css">
</head>

<body>
	<div id="container">
		<h1>회원 가입을 환영합니다.</h1>
		<!--
			http://localhost:8088/firstWeb/jsp/html5_6.jsp 
		 -->
		 <form	name="memForm" id="memForm"
		 		method="get"
		 		action="/firstWeb/jsp/html5_6.jsp">
		 	<fieldset>
		 		<legend>사용자 정보</legend>
		 		<ul>
		 			<li>
		 				<label for="uid">아이디</label>
		 				<input type="text" name="uid" id="uid" value="aaaaa"
		 					   autofocus placeholder="4자 ~ 10자 사이, 공백없이" required>
		 			</li>
		 			<li>
		 				<label for="umail">이메일</label>
		 				<input type="text" name="umail" id="umail" required>
		 			</li>
		 			<li>
		 				<label for="pwd1">비밀번호</label>
		 				<input type="password" name="pwd1" id="pwd1"
		 					   placeholder="문자와 숫자, 특수 기호 포함" required>
		 			</li>
		 			<li>
		 				<label for="pwd2">비밀번호 확인</label>
		 				<input type="password" id="pwd2" required>
		 			</li>
		 			<li>
		 				<label for="path">가입 경로</label>
		 				<select name="path" id="path">
		 					<option value="blog">블로그</option>
		 					<option value="search">검색</option>
		 					<option value="sns">SNS</option>
		 					<option value="etc">기타</option>
		 				</select>
		 			</li>
		 			<li>
		 				<label for="memo">메모</label>
		 				<textarea name="memo" cols="40" rows="4"
		 				placeholder="남길 말씀이 있다면 여기에"></textarea>
		 			</li>
		 		</ul>
		 	</fieldset>
		 	<fieldset>
		 		<legend>이벤트와 새로운 소식</legend>
		 		<input type="radio" name="mailing" id="mailing_y" value="mailing_yes">
		 		<label for="mailiung_y">메일 수신</label>
		 		<input type="radio" name="mailing" id="mailing_n" value="mailing_no" checked>
		 		<label for="mailing_n">메일 수신 안 함</label>
		 	</fieldset>
		 	<div id="buttons">
		 		<input type="submit" value="가입하기">
		 		<input type="reset" value="취소">
		 	</div>
		 </form>
	</div>
</body>
</html>

정보를 입력한 후 가입하기 클릭


Notes


728x90