//Google AdSense

1. NAVER 회원가입 화면 (폼)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입</title>
</head>
<body>
	<!-- 
		###################################################
		실습1. 네이버의 회원가입폼과 유사하게 태그를 구성하여 회원가입폼을 완성하고,
		joinProcess.jsp파일에 데이터를 전송하여 출력하시오.
		###################################################
	 -->
	 
	<div>
	NAVER
	</div>
	<form action="./joinProcess.jsp" method="post">
		
		<div>
		아이디
			<div>			
				<label>
					<input type="text" name="id" value="" >		
				</label>
			</div>
		</div>
		
		<div>
		비밀번호
			<div>			
				<label>
					<input type="password" name="pw" value="" >		
				</label>
			</div>
		</div>
		
		<div>
		비밀번호 재확인
			<div>
				<label>
					<input type="password" name="confirmPw" value="" >		
				</label>
			</div>
		</div>
		
		<div>
		이름
			<div>
			
				<label>
					<input type="text" name="name" value="" >		
				</label>
			</div>
		</div>
		
		<div>
		생년월일
			<div>
				<label>
					<input type="text" name="year" value="" placeholder="년(4자)" >		
					<select name="month" >
						<option value="">월</option>
						<option value="1">1</option>
						<option value="2">2</option>
						<option value="3">3</option>
						<option value="4">4</option>
						<option value="5">5</option>
						<option value="6">6</option>
						<option value="7">7</option>
						<option value="8">8</option>
						<option value="9">9</option>
						<option value="10">10</option>
						<option value="11">11</option>
						<option value="12">12</option>
					</select>		
					<input type="text" name="day" value="" placeholder="일" >		
				</label>
			</div>
		</div>
		
		<div>
		성별
			<div>
			
				<label>
					<select name="gender">
						<option value="">성별</option>
						<option value="m">남자</option>
						<option value="f">여자</option>
					</select>		
				</label>
			</div>
		</div>
		
		<div>
		본인 확인 이메일(선택)
			<div>		
				<label>
					<input type="text" name="email" value="" placeholder="선택입력">		
				</label>
			</div>
		</div>
		
		<div>
		휴대전화
			<div>
				<label>
					<select name="nation">
						<option value="+505">니카라과+505</option>
						<option value="+82" selected="selected">대한민국 +82</option>
						<option value="+45">덴마크 +45</option>
						<option value="+299">덴마크령그린란드 +299</option>
					</select>		
				</label>
			</div>
			<div>		
				<input type="text" name="phone" value="" placeholder="전화번호 입력">
				<input type="text" name="checkCode" value="인증번호 받기" readonly="readonly">	
			</div>
			<div>
				<input type="text" name="checkCodeWrite" value="인증번호 입력하세요" readonly="readonly">	
			</div>
		</div>
		
		<button>가입하기</button>
		
	</form>		 
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%
	request.setCharacterEncoding("UTF-8");

	String id = request.getParameter("id");
	String pw = request.getParameter("pw");
	String confirmPw = request.getParameter("confirmPw");
	String name = request.getParameter("name");
	String year = request.getParameter("year");
	String month = request.getParameter("month");
	String day = request.getParameter("day");
	String gender = request.getParameter("gender");
	String email = request.getParameter("email");
	String nation = request.getParameter("nation");
	String phone = request.getParameter("phone");
	
	out.println(id);
	out.println(pw);
	out.println(confirmPw);
	out.println(name);
	out.println(year);
	out.println(month);
	out.println(day);
	out.println(gender);
	out.println(email);
	out.println(nation);
	out.println(phone);
%>

폼출력

 


입력

 


데이터 전송 출력


2.네이버 로그인 화면 (레이아웃과 폼)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
	<link href="./resource/css/common.css" rel="stylesheet">

<title>로그인</title>
</head>
<body>
	<!--
		###################################################
		실습2. naver.com의 로그인 페이지를 유사하게 구성 (html, css)하고
		로그인버튼 클릭시 loginProcess.jsp에 데이터를 전송하고 출력하시오.
		###################################################
	 -->
	<header>
		<div id=lang>
			<label>
				<select name="lang">
						<option value="ko-KR">한국어</option>
						<option value="en-US">English</option>
						<option value="CN">中文(简体)</option>
						<option value="TW">中文(台灣)</option>
				</select>
			</label>
		</div>
					
	</header>
				
	
	<div id=content>
		
		<div id=logo>
			<label>
				<a href="#"><img src="./resource/img/NAVER_CI_Green.png" alt="naver"></a>
			</label>	
		</div>
		
		<form action="./loginProcess.jsp" method="post">
			<div id=id>
				<label> 
					<input type="text" name="uId" placeholder="아이디">
				</label>
			</div>
			<div id=pw>
				<label>
					<input type="password" name="uPw" placeholder="비밀번호">
				</label>
			</div>
			<div id=button>
				<label>
					<button type="submit">로그인</button>
				</label>
			</div>
			<div id=logip>
				<div> 
					<label id=log-sta>
						<input type="checkbox" name="logSta" value="로그인 상태 유지" > 로그인 상태 유지
					</label>
				</div>
				<div id=ip-check>
					<label>
						<a id=ip href="#">IP보안</a>
						<a id=on-off href="#">ON</a>
					</label>	
					<label id=secue>
						<a id=secu-t href="#">일회용 로그인</a>
					</label>
				</div>
			</div>
		</form>
	</div>
	
	
	<footer id=footer>
		<div id=find-info>
			<label>
				<a href="#">아이디 찾기</a>
				 | 
				<a href="#">비밀번호 찾기</a>
				 | 
				<a href="#">회원가입</a>
			</label>
		</div>	
			
	
	</footer>
	
	<div id=banner>
		<label>
			<img src="./resource/img/banner.png" alt="banner">
		</label>
	</div>


</body>
</html>
@charset "UTF-8";
<style type="text/css">

	div {
		margin: 0; padding: 0; font-size: 13px; color: #2e2e2e;
	}
	body{background-color: #F5F6F7;}
				
	header {margin: 10px 5px 50px 5px; float: right;}
	#content {clear:both; width:70%; margin:0 auto; text-align: center;}
	#logo {margin: 50px;}
	#logo label img {height: 45px;}
	#id, #pw, #button {margin: 15px;}
	#id label input {width: 400px; height: 50px;}
	#pw label input {width: 400px; height: 50px;}
	#button label button {width: 400px; height: 50px; background-color:#02C850; border: 0; color: #fff;}
	#logip {width: 400px; margin: 0 auto;}
	#ip-check {float: right;}
	#ip-check label a{font-size: 13px;}
	#ip, #on-off, #secu-t {text-decoration: none;}
	#ip, #secue {color:#5D5D5D;} 
	#on-off {font-weight: bold ; color:#02C850;}
	#secue {float: right; margin: 0 10px;}
	#secu-t {text-decoration: underline; color:#5D5D5D;}
	#secu-t:hover{color:#5D5D5D;}
	#log-sta {float: left; font-size: 13px;}
	#footer {width: 400px; margin: 50px auto 0 auto; padding: 15px; clear: both; text-align: center; border-top: 1px solid #2e2e2e; border-color: #CFCFCF; }
	#find-info label a{color:#5D5D5D; text-decoration: none;font-size: 13px;}
	#banner {text-align: center;}
	#banner label img{padding: 50px 0;}

</style>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%

	request.setCharacterEncoding("UTF-8");
	
	String uId= request.getParameter("uId");
	String uPw= request.getParameter("uPw");
	String logSta= request.getParameter("logSta");
	
	
	out.println(uId);
	out.println(uPw);
	if(logSta != null){out.println("로그인 유지");}
	else {out.println("로그인 유지하지 않음");}


%>

완성된 화면


데이터 전송 test 1

 


데이터 전송 test 2

 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인</title>

<style type="text/css">
	body{padding: 0; margin: 0; background-color: #f5f6f7;}
	input, button{padding: 0; margin: 0;  line-height: 50px; width: 100%;}
	#container{width: 460px; margin: 62px auto 0 auto;}
	#logo { text-align: center; margin-bottom: 70px;}
	#logo img{width: 231px;}
	.input-wrap {margin-bottom: 20px;}
	.input-wrap input{}
	#login-btn button{background-color: #03c75a; color:#fff; font-size: 15px; border: 2px solid #03c75a;}
	#content{padding-bottom:50px ; border-bottom: 1px solid #e4e4e5;}
	#footer{text-align: center; padding-top: 20px;}
</style>

</head>
<body>
	<div id="container">
		<div id="logo">
			<img src="./resource/img/NAVER_CI_Green.png">
		</div>
		<div id="content">
			<form action="./loginProcessT.jsp" method="post">
				<div class="input-wrap">
					<input type="text" name="id" placeholder="아이디">
				</div>
				<div class="input-wrap">
					<input type="text" name="pw" placeholder="패스워드">
				</div>
				<div id="login-btn">
					<button type="submit">로그인</button>
				</div>
			</form>
		</div>
		<div id="footer">
			아이디 찾기 | 비밀번호 찾기 | 회원가입
		</div>
	</div>
</body>
</html>

 

레이아웃 큰 틀부터 잡고 차근차근!
html부터 작성하고 css에서 style을 주려고 하면 꼬일 수 있음

'UI/UX엔지니어링 > UI구현' 카테고리의 다른 글

Form Tag  (0) 2020.02.28
Block element/Inline element/Merge Cells  (0) 2020.02.27
UI 구현 39~66p  (0) 2020.02.27
전세계에서 가장 멋 없는 레이아웃 실습 ③  (0) 2020.02.19

<Form Tag 실습>

html에서는 데이터 받기가 안됨.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Form Tag</title>
</head>
<body>

	<!--  
		###############################################
		<< form tag >>
		데이터를 전송하기 위한 태그
		form 태그의 속성에 method, action을 설정하여
		전송방식 및 전송경로를 지정해야한다.
		또한 form 태그의 자식 요소에 input, select, textarea 등
		데이타 입력 태그를 두고 submit을 실행하면 데이타가 전송된다.
		
		method 속성의 값은 post와 get으로 설정이 가능
			- post : 데이터를 body에 숨겨 전송  →등록, 수정
			- get : url로 전송 →검색 등
					url에서 ?~~~ : url query
				 	ex: ?sm=tab_hty.top&where=nexearch&query=Merge+Cells&oquery=Merge+Cells&tqi=UDmpLlprvxsssBYYx4VsssssteK-098759 
				 		== ?sm=tab_hty.top
				 			&where=nexearch
				 			&query=Merge+Cells
				 			&oquery=Merge+Cells
				 			&tqi=UDmpLlprvxsssBYYx4VsssssteK-098759
				 		→	키 = 값
				 			(이어서&)키 = 값
				 			(이어서&)키 = 값
				 		 
			- action : 전송될 경로를 입력 
			
		1. input - 텍스트 등록 및 수정 태그 (type 속성에 text, radio(단일 체크), checkbox(다중체크) 설정 가능)
			1) input 속성
				- type : input의 형태 지정
					+text - 일반적인 텍스트 입력
					+radio - 같은 name 값 중 1개만 선택
					+checkbox - 같은 name 값 다중 선택
					+date, number 등
				- name : 서버에 전송될 key의 명칭
				- value : 서버에 name의 key값으로 전송될 값
				- placeholder : 안내글
		2. select - 테이터 선택 태그
		3. textarea - 장문의 텍스트 등록 태그
		4. button - 이벤트 실행 및 submit
			1) button 속성
				- type : 이벤트 형태 지정 
					+button - javascript와 연동하여 이벤트 동작
					+submit - 데이터 전송
			
			
		###############################################
	 -->

	<form action="./form2.jsp" method="get"> <!-- html에서는 데이터 받기가 안됨 -->
		<label>
			유저명 :
			<input type="text" name="memberName" value="" placeholder="유저명 입력">
		</label>
		<button type="submit">전송</button>
	</form>

</body>
</html>

 

<만들어진 폼>

 

 



 

 

 

<jsp 파일 만들기>

데이터를 주고받기 위해 jsp 파일을 만든다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>



<%
	//주석
	/* 주석 */
	
	//자바코드 기록
	
	/***************************************************************
	request 객체는 요청에 해당하는 정보를 담고있다.
	request의 getParameter라는 메서드를 활용하여
	데이터를 받을 수 있다.
	
	getParameter의 메서드 인수값을 전송된 key의 명으로 넣어 해당 key의 값을 받을 수 있다.
	***************************************************************/
	request.setCharacterEncoding("UTF-8");
	
	String memberName = request.getParameter("memberName"); //parameter > 문자열
		
	out.println(memberName);

	
%>

<!-- html 작성 -->

html 파일에서 action 속성의 경로를 jsp파일의 상대경로로 설정해준다.

 

<form action="./getData.jsp" method="get"> <!-- html에서는 데이터 받기가 안됨 -->
		<label>
			유저명 :
			<input type="text" name="memberName" value="" placeholder="유저명 입력">
		</label>
		<button type="submit">전송</button>
	</form>

<form 의 method 속성을 post로 설정할 경우>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Form Tag</title>
</head>
<body>

	<form action="./getData.jsp" method="post">
		<label>
			유저명 :
			<input type="text" name="memberName" value="" placeholder="유저명 입력">
		</label>
		<button type="submit">전송</button>
	</form>

</body>
</html>

폼에 홍길동을 입력 후 전송

url에 키, 값이 보이지 않음을 확인할 수 있다.

 


<form 의 method 속성을 get으로 설정할 경우>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Form Tag</title>
</head>
<body>

	<form action="./getData.jsp" method="get"> 
		<label>
			유저명 :
			<input type="text" name="memberName" value="" placeholder="유저명 입력">
		</label>
		<button type="submit">전송</button>
	</form>

</body>
</html>

폼에 홍길동을 입력 후 전송

 

?키 = 값

?memberName=홍길동 url에 보인다.

**url 상에서 값을 변경하여도 변경된 내용이 출력된다!

 


<input type 속성 radio / checkbox>

 

	<form action="./getData.jsp" method="get"> 
		<div>		
			<label>
				유저명 :
				<input type="text" name="memberName" value="" placeholder="유저명 입력">
			</label>
		</div>
		<div>	
			<label>
				남: <input type="radio" name="memberGender" value="남"> <!-- name 속성이 같아야 한다. -->
			</label>
			<label>
				여: <input type="radio" name="memberGender" value="여"> 
			</label>
		</div>
		<div>
			<label>
				전주 : <input type="checkbox" name="memberAdd" value="전주"> <!-- name 속성이 같아야 한다. -->
			</label>
			<label>
				군산 : <input type="checkbox" name="memberAdd" value="군산">
			</label>
			<label>
				익산 : <input type="checkbox" name="memberAdd" value="익산">
			</label>
		</div>
		<button type="submit">전송</button>
	</form>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>



<%

	request.setCharacterEncoding("UTF-8");
	
	String memberName = request.getParameter("memberName"); //parameter > 문자열1
	String memberGender = request.getParameter("memberGender"); 
	
	String[] memberAdd = request.getParameterValues("memberAdd"); //parameterValues > 배열값
	

	out.println(memberName);
	out.println(memberGender);
	
	if(memberAdd != null){
		for(int i=0; i < memberAdd.length; i++){
			out.println(memberAdd[i]);
		}
	}
	
	


	
%>

유저명 :

 



 

입력

 

 

출력


<input type 속성 date / number>

 

<form action="./getData.jsp" method="get"> <!-- html에서는 데이터 받기가 안됨 -->
		<div>		
			<label>
				유저명 :
				<input type="text" name="memberName" value="" placeholder="유저명 입력">
			</label>
		</div>
		<div>	
			<label>
				남: <input type="radio" name="memberGender" value="남"> <!-- name 속성이 같아야 한다. -->
			</label>
			<label>
				여: <input type="radio" name="memberGender" value="여"> <!-- name 속성이 같아야 한다. -->
			</label>
		</div>
		<div>
			<label>
				전주 : <input type="checkbox" name="memberAdd" value="전주">
			</label>
			<label>
				군산 : <input type="checkbox" name="memberAdd" value="군산">
			</label>
			<label>
				익산 : <input type="checkbox" name="memberAdd" value="익산">
			</label>
		</div>
		
		
		<div>
			<label>
				날짜 : <input type="data" name= "memberWriteDate">
			</label>
		</div>
		 <div>
			<label>
				나이 : <input type="number" name= "memberAge">
			</label>
		</div>
		
		
		
		
		<button type="submit">전송</button>
	</form>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>



<%

	request.setCharacterEncoding("UTF-8");
	
	String memberName = request.getParameter("memberName"); //parameter > 문자열1
	String memberGender = request.getParameter("memberGender"); 
    
    String[] memberAdd = request.getParameterValues("memberAdd"); //parameterValues > 배열값
    
	String memberWriteDate = request.getParameter("memberWriteDate"); 
	String memberAge = request.getParameter("memberAge"); 
	

	
 

	out.println(memberName);
	out.println(memberGender);

	
	if(memberAdd != null){
		for(int i=0; i < memberAdd.length; i++){
			out.println(memberAdd[i]);
		}
	}
    
    	out.println(memberWriteDate);
	out.println(memberAge);
	
%>


유저명 :

남: 

여: 

전주 :

군산 : 

익산 : 

날짜 :

나이 : 

 



입력

 

출력


<select>

		<div>
			<label>
				선택박스 : 
				<select name="memberTest">
					<option value=""> :: 선택 :: </option>
					<option value="testvalue1">test1</option> <!-- 넘어오는 값은 속성value에 지정된 값이다 -->
					<option value="testvalue2">test2</option>
					<option value="testvalue3">test3</option>
					<option value="testvalue4">test4</option>
					<option value="testvalue5">test5</option>
				</select>
			</label>
		</div>

 

입력

 

 

 

출력

select 에서 test3으로 보이는 option의 value로는 testvalue3이 입력되었다.


<textarea>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Form Tag</title>
</head>
<body>
	
	<form action="./getData.jsp" method="get">
		<div>		
			<label>
				유저명 :
				<input type="text" name="memberName" value="" placeholder="유저명 입력">
			</label>
		</div>
		<div>	
			<label>
				남: <input type="radio" name="memberGender" value="남">
			</label>
			<label>
				여: <input type="radio" name="memberGender" value="여">
			</label>
		</div>
		<div>
			<label>
				전주 : <input type="checkbox" name="memberAdd" value="전주">
			</label>
			<label>
				군산 : <input type="checkbox" name="memberAdd" value="군산">
			</label>
			<label>
				익산 : <input type="checkbox" name="memberAdd" value="익산">
			</label>
		</div>
			<div>
			<label>
				날짜 : <input type="date" name= "memberWriteDate">
			</label>
		</div>
		<div>
			<label>
				나이 : <input type="number" name= "memberAge">
			</label>
		</div>
		
		<div>
			<label>
				선택박스 : 
				<select name="memberTest">
					<option value=""> :: 선택 :: </option>
					<option value="testvalue1">test1</option>
					<option value="testvalue2">test2</option>
					<option value="testvalue3">test3</option>
					<option value="testvalue4">test4</option>
					<option value="testvalue5">test5</option>
				</select>
			</label>
		</div>
		
		<div>	
			<label>
				본문입력 : 
				<textarea name="memberContent" style="width: 100%; height: 100px;"></textarea> 
			</label>
		</div>
		
		<button type="submit">전송</button>
	</form>

</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>



<%
	
	request.setCharacterEncoding("UTF-8");
	
	String memberName = request.getParameter("memberName"); //parameter 
	String memberGender = request.getParameter("memberGender"); 
	
	String[] memberAdd = request.getParameterValues("memberAdd"); //parameterValues 
	
	String memberWriteDate = request.getParameter("memberWriteDate"); 
	String memberAge = request.getParameter("memberAge"); 
	String memberTest = request.getParameter("memberTest");
	String memberContent = request.getParameter("memberContent");
	
	out.println(memberName);
	out.println(memberGender);

	if(memberAdd != null){
		for(int i=0; i < memberAdd.length; i++){
			out.println(memberAdd[i]);
		}
	}

	out.println(memberWriteDate);
	out.println(memberAge);
	out.println(memberTest);
	out.println(memberContent);
	
%>

 


 

 

<div>	
	<label>
		본문입력 : 
		<textarea name="memberContent" style="width: 100%; height: 100px;">테스트입니다.</textarea> 
		<!-- <textarea>이 안에는 엔터를 포함한 모든 내용이 입력되어 호출됨!</textarea> -->	
	</label>
</div>
	

<textarea>와</textarea> 사이에는 엔터와 들여쓰기를 포함한 모든 내용이 입력된 채로 호출된다.

 

블럭 요소와 인라인 요소

블럭 요소와 인라인 요소를 이해하고 CSS의 사용방법을 확인 할 수 있다.

블럭 요소(block element)

-모든 인라인 요소를 포함할 수 있고 다른 블럭 요소도 일부 포함(자식요소로 포함)

-자동 줄바꿈

-기본적으로 가로폭 100%을 가지는 직사각형 형태

-블럭요소는 인라인 요소로도 변경 가능(CSS 속성 display로 가능)

-높이와 넓이 설정 가능

-마진 패딩 설정 가능

-주로 레이아웃을 구성할때 사용 

-br 태그 금지!

블록 요소 종류

addressarticleasideaudioblockquotecanvasdddivdlfieldsetfigcaptionfigurefooterformh1h2h3h4h5h6headerhgrouphrnoscriptoloutput, ppre, section, table, ulvideo

인라인 요소(inline element)

-항상 블록 요소안에 포함되어 있음(항상 부모 객체는 블록 요소)
-인라인 요소안에 인라인 요소 포함 가능
-높이설정 불가능
-CSS 속성 중 Line-height로 텍스트(줄) 높낮이를 조절 가능
-CSS 속성 중 text-align로 좌,우,중 정렬가능
-줄 바꿈이 자동으로 없음

인라인 요소 종류

aabbracronymbbdobigbrbuttoncitecodedfnemiimginputkbdlabelmapobjectqsampsmallscriptselectspanstrongsubsuptextareattvar

<레이아웃 구성하기 실습>

<!DOCTYPE html>
	<html>
	<head>
	<meta charset="UTF-8">
	<title>레이아웃 구성하기</title>
		<style type="text/css">
		
		
		
		/*
		****************************************
		레이아웃 구성시 주로 사용되는 css 속성
		
		float : 블럭 요소의 객체를 정렬할 때 쓰는 속성 
				- 속성이 적용된 객체는 자동 가로 사이즈 100%가 해제된다.
		clear : float으로 정렬된 속성을 해제할 때 쓰는 속성
		margin : 선택된 객체의 외부 여백 (상 우 하 좌 / 상하 좌우 / 상하좌우)
		padding : 선택된 객체의 내부 여백
		width : 가로 사이즈                                               
		height : 세로 사이즈
		min-width : 최소 가로 사이즈
		max-width : 최대 가로 사이즈
		min-height : 최소 세로 사이즈
		max-height : 최대 세로 사이즈
		****************************************
		*/
		
		a{color: #f00; text-decoration: none;}
		a:hover{color: #00f;}
		
		body{
			background-color: #efefef;
			background: url('./resource/img/logo.PNG');
			background-repeat:no-repeat;
			background-position: top center;
		}
				
		#container{width : 1100px; margin: 0 auto; min-height: 600px; clear:both;} 
		#left-wrap, #content-warp {float: left;}
		#left-wrap{width: 250px; min-height: 700px;}
		#left-wrap ul li{list-style : decimal;}
		#content-wrap{width: 900px; margin: 0;}
		#footer{clear: both; text-align: center; height: 100px; border-top: 1px solid #000;}
		
		header{margin: auto auto; height: 100px;}
		#logo{float: left; height: 50px; width: 20%; text-align: center; padding: 20px 0 }
		#logo img{width: 100px;} /* 인라인 태그중 높이가 적용되는 태그. 세로 없이 가로만 지정하면 비율에 맞춰 크기 조절  */
		#expt-logo{float: right; height: 100%; width: 80%;}
		#top-link{height: 50%; text-align: right;}
		#menu{}
		#menu ul{float: right;}
		#menu ul li{float: left; list-style: none; padding: 10px;  }
		#menu ul li a{padding: 0 15px;}
		
		td{border: 1px solid #000;}		
		
		</style>
	</head>
	<body>
	
		<header > 
			<div id="logo">
				<img src="./resource/img/logo.PNG" alt="로고" >
			</div>
			<div id="expt-logo">
				<div id="top-link">
					<a href="./layout_css.html">home</a>
					|
					<a href="#">join</a>
					|
					<a href="#">login</a>
				</div>
				<nav id= "menu">			
					<ul>
						<li> <a href="#">대메뉴1</a> </li>
						<li> <a href="#">대메뉴2</a> </li>
						<li> <a href="#">대메뉴3</a> </li>
						<li> <a href="#">대메뉴4</a> </li>
						<li> <a href="#">대메뉴5</a> </li>
					</ul>
				</nav>
				
				
			</div>
		</header>
	
		<div id= "container" >
			<div id= "left-wrap">
				<ul>
					<li> <a href="#">서브메뉴1</a> </li>
					<li> <a href="#">서브메뉴2</a> </li>
					<li> <a href="#">서브메뉴3</a> </li>
				</ul>
			</div>
			<div id="content-wrap">
								
				<!--  
				##############################################
				
					< 병합하기 >
					td의 속성을 지정하여 병합을 할 수 있다.
					
					- colspan : 가로병합
					- rowspan : 세로병합
					
				##############################################
				-->
				<table>
					
					<thead>
						<tr>
							<th>번호</th>
							<th>카테고리</th>
							<th>제목</th>
						</tr>
					</thead>
					
					<tbody>
						<tr>
							<td>
								5
							</td>
							<td rowspan="2" ><!-- 병합할 셀 개수 (나 자신을 포함) -->
								국어
							</td>
							<td>
								국어점수
							</td>
						</tr>
						<tr>
							<td>
								5
							</td>

							<td>
								국어점수2
							</td>
						</tr>
						<tr>
							<td>
								5
							</td>
							<td colspan="2">
								수학
							</td>

						</tr>
					</tbody>
				
					<tfoot>
					
					</tfoot>
				
				</table>
						
			<!--
			##########################################
				실습1. 테이블을 아래 
				분류, 제목, 작성자, 작성일의 열을 가진
				데이타를 10행을 생성하여 출력을 시키고
				같은 분류의 내용은 병합시켜라.
			##########################################	
			-->
			
			<table>
				<thead>
					<tr>
						<th>분류</th>
						<th>제목</th>
						<th>작성자</th>
						<th>작성일</th>				
					</tr>
				</thead>
				
				<tbody>
					<tr>
						<td rowspan="2">문학</td>
						<td>괭이씨미요</td>
						<td>김모모</td>
						<td>2020.02.26</td>
					</tr>
					<tr>
						
						<td>쿠쿠</td>
						<td>unis</td>
						<td>1999.01.15</td>
					</tr>
					<tr>
						<td rowspan="3">예술</td>
						<td>미학오디세이1</td>
						<td>진중권</td>
						<td>2010.10.10</td>
					</tr>
					<tr>
						
						<td>미학오디세이2</td>
						<td>진중권</td>
						<td>2011.11.11</td>
					</tr>
					<tr>
						
						<td>미학오디세이3</td>
						<td>진중권</td>
						<td>2012.12.12</td>
					</tr>
					<tr>
						<td rowspan="2">기술과학</td>
						<td>ncs학습모듈</td>
						<td>cns</td>
						<td>2020.02.25</td>
					</tr>
					<tr>
						
						<td>이기적 유전자</td>
						<td>리처드 도킨슨</td>
						<td>1976.5.5</td>
					</tr>
					<tr>
						<td>철학</td>
						<td>생각한다는 것</td>
						<td>고병권</td>
						<td>2010.12.23</td>
					</tr>
					<tr>
						<td rowspan="2">언어</td>
						<td>토익 RC</td>
						<td>토익책팔이</td>
						<td>2019.12.10</td>
					</tr>
					<tr>

						<td>토익 LC</td>
						<td>토익책팔이</td>
						<td>2019.11.5</td>
					</tr>		
				</tbody>
				
				<tfoot>
				
				
				</tfoot>
			
			
			
			</table>
			
				
			</div>
		</div>
	
		<footer id= "footer">
			풋터 영역
		</footer>
	</body>
</html>

 

css를 외부 파일(resource)로 만들기

 

Wepcontent/resource/css 폴더 내에 common.css 파일 생성

html 파일에서 작성했던 <style>..</style> 내용을 생성한 common.css에 잘라넣기

 

<CSS>

@charset "UTF-8";
<style type="text/css">
				/*
		****************************************
		레이아웃 구성시 주로 사용되는 css 속성
		
		float : 블럭 요소의 객체를 정렬할 때 쓰는 속성 
				- 속성이 적용된 객체는 자동 가로 사이즈 100%가 해제된다.
		clear : float으로 정렬된 속성을 해제할 때 쓰는 속성
		margin : 선택된 객체의 외부 여백 (상 우 하 좌 / 상하 좌우 / 상하좌우)
		padding : 선택된 객체의 내부 여백
		width : 가로 사이즈                                               
		height : 세로 사이즈
		min-width : 최소 가로 사이즈
		max-width : 최대 가로 사이즈
		min-height : 최소 세로 사이즈
		max-height : 최대 세로 사이즈
		****************************************
		*/
		
		div, span, li, td{
			margin: 0; padding: 0; font-size: 14px; color: #2e2e2e;
		}
		
		a{color: #ff0000; text-decoration: none;}
		a:hover{color: #0000ff;}
		
		body{
			background-color: #efefef;
			background: url('./resource/img/logo.PNG');
			background-repeat:no-repeat;
			background-position: top center;
		}
				
		#container{width : 1100px; margin: 0 auto; min-height: 600px; clear:both;} 
		#left-wrap, #content-warp {float: left;}
		#left-wrap{width: 250px; min-height: 700px;}
		#left-wrap ul li{list-style : decimal;}
		#content-wrap{width: 900px; margin: 0;}
		#footer{clear: both; text-align: center; height: 100px; border-top: 1px solid #000;}
		
		header{margin: auto auto; height: 100px;}
		#logo{float: left; height: 50px; width: 20%; text-align: center; padding: 20px 0 }
		#logo img{width: 100px;} /* 인라인 태그중 높이가 적용되는 태그. 세로 없이 가로만 지정하면 비율에 맞춰 크기 조절  */
		#expt-logo{float: right; height: 100%; width: 80%;}
		#top-link{height: 50%; text-align: right;}
		#menu{}
		#menu ul{float: right;}
		#menu ul li{float: left; list-style: none; padding: 10px;  }
		#menu ul li a{padding: 0 15px;}
		
		td{border: 1px solid #000;}		
		
</style>

 

 

html 파일의 <head..></head> 부분에 css 파일을 연결하는 코드 작성하기.

 

<html>

<link href="./resource/css/common.css" rel="stylesheet">
<!DOCTYPE html>
<html>
	<head>
	<meta charset="UTF-8">
	<title>레이아웃 구성하기</title>
		<link href="./resource/css/common.css" rel="stylesheet">
	</head>
	<body>
	
		<header > 
			<div id="logo">
				<img src="./resource/img/logo.PNG" alt="로고" >
			</div>
			<div id="expt-logo">
				<div id="top-link">
					<a href="./layout_css.html">home</a>
					|
					<a href="#">join</a>
					|
					<a href="#">login</a>
				</div>
				<nav id= "menu">			
					<ul> 
						<li> <a href="#">대메뉴1</a> </li>
						<li> <a href="#">대메뉴2</a> </li>
						<li> <a href="#">대메뉴3</a> </li>
						<li> <a href="#">대메뉴4</a> </li>
						<li> <a href="#">대메뉴5</a> </li>
					</ul>
				</nav>
				
				
			</div>
		</header>
	
		<div id= "container" >
			<div id= "left-wrap">
				<ul>
					<li> <a href="#">서브메뉴1</a> </li>
					<li> <a href="#">서브메뉴2</a> </li>
					<li> <a href="#">서브메뉴3</a> </li>
				</ul>
			</div>
			<div id="content-wrap">
								
				<!--  
				##############################################
				
					< 병합하기 >
					td의 속성을 지정하여 병합을 할 수 있다.
					
					- colspan : 가로병합
					- rowspan : 세로병합
					
				##############################################
				-->
				<table>
					
					<thead>
						<tr>
							<th>번호</th>
							<th>카테고리</th>
							<th>제목</th>
						</tr>
					</thead>
					
					<tbody>
						<tr>
							<td>
								5
							</td>
							<td rowspan="2" ><!-- 병합할 셀 개수 (나 자신을 포함) -->
								국어
							</td>
							<td>
								국어점수
							</td>
						</tr>
						<tr>
							<td>
								5
							</td>

							<td>
								국어점수2
							</td>
						</tr>
						<tr>
							<td>
								5
							</td>
							<td colspan="2">
								수학
							</td>

						</tr>
					</tbody>
				
					<tfoot>
					
					</tfoot>
				
				</table>
						
			<!--
			##########################################
				실습1. 테이블을 아래 
				분류, 제목, 작성자, 작성일의 열을 가진
				데이타를 10행을 생성하여 출력을 시키고
				같은 분류의 내용은 병합시켜라.
			##########################################	
			-->
			
			<table>
				<thead>
					<tr>
						<th>분류</th>
						<th>제목</th>
						<th>작성자</th>
						<th>작성일</th>				
					</tr>
				</thead>
				
				<tbody>
					<tr>
						<td rowspan="2">문학</td>
						<td>괭이씨미요</td>
						<td>김모모</td>
						<td>2020.02.26</td>
					</tr>
					<tr>
						
						<td>쿠쿠</td>
						<td>unis</td>
						<td>1999.01.15</td>
					</tr>
					<tr>
						<td rowspan="3">예술</td>
						<td>미학오디세이1</td>
						<td>진중권</td>
						<td>2010.10.10</td>
					</tr>
					<tr>
						
						<td>미학오디세이2</td>
						<td>진중권</td>
						<td>2011.11.11</td>
					</tr>
					<tr>
						
						<td>미학오디세이3</td>
						<td>진중권</td>
						<td>2012.12.12</td>
					</tr>
					<tr>
						<td rowspan="2">기술과학</td>
						<td>ncs학습모듈 어쩌구</td>
						<td>cns</td>
						<td>2020.02.25</td>
					</tr>
					<tr>
						
						<td>이기적 유전자</td>
						<td>리처드 도킨슨</td>
						<td>1976.5.5</td>
					</tr>
					<tr>
						<td>철학</td>
						<td>생각한다는 것</td>
						<td>고병권</td>
						<td>2010.12.23</td>
					</tr>
					<tr>
						<td rowspan="2">언어</td>
						<td>토익 RC</td>
						<td>토익책팔이</td>
						<td>2019.12.10</td>
					</tr>
					<tr>

						<td>토익 LC</td>
						<td>토익책팔이</td>
						<td>2019.11.5</td>
					</tr>		
				</tbody>
				
				<tfoot>
				
				
				</tfoot>
			
			
			
			</table>
			
				
			</div>
		</div>
	
		<footer id= "footer">
			풋터 영역
		</footer>
	</body>
</html>

 

 

출력되는 모습

 

 

'UI/UX엔지니어링 > UI구현' 카테고리의 다른 글

폼과 레이아웃 실습  (0) 2020.02.28
Form Tag  (0) 2020.02.28
UI 구현 39~66p  (0) 2020.02.27
전세계에서 가장 멋 없는 레이아웃 실습 ③  (0) 2020.02.19

HTML 작성 전 기본 설정 변경

- eclipse 편집기

- file > switch workspace 새 workspace

 

(다시보기)개발환경 세팅 및 workspace 설정☞

 

- 서버 추가 

 

 >1

 

 

 

 

or

 

>2

window > preferences >server > runtime environments > add

 

 

 

- 설정 변경

window > preferences > en 검색

workspace , css files, html file, jsp files의 EUC-KR을 UTF-8

 

 

- jsp 검색 > jsp files > editor > templates> New jsp file (html) >edit

 

내용을 수정해준다.


 

기본 설정이 모두 변경되었다.


* 새로고침만으로 페이지 갱신하기 (without run)

servers overview에서 server options의 serve modules without publishing을 체크해준다.

 


html vs. jsp

 

jsp에 하이라이트한 구문이 없다면 html밖에 안된다.


html debuging

 

debuging은 브라우저의 개발자 모드를 이용하는 것이 편리하다.

 

 


html 태그

 ※ html 필수 기본
  - 들여쓰기
  - 열고 닫기 
  - 주석  <!-- 타이핑하면 <!-- 주석 --> 자동완성!
  - 자식태그는 부모태그의 영향을 받는다.

 

↖서술한 태그와 출력된 모습↗ 

 

 

 


HTML 태그 종류

- 텍스트를 표현하는 태그

 

 

- 표를 구성하는 태그

 

 

표의 형태가 나타난 모습

 

 

- 속성 attribute

 

 

 

 

 

※ 요소, 속성, 객체?

요소 : 선택된 대상의 자식 전체 (태그 + 텍스트 포함) 
속성 : 선택된 태그의 세부 옵션 (데이터) 
객체 : 대상

 

 - table의 속성 > style~

 - thead의 속성 > align~

 - th의 속성 > width~

 

 


표의 여백 제거하기


CSS

 


실습해보기

 

 

1. 표 내용을 서술한다.

 


 

2. style type을 css로 적용하고 class마다 조건에 맞는 속성을 서술한다.

 

3. 조건별로 class를 지정한다.

 

 


조건에 맞게 완성된 표

 

4. 다른 방법

>> 두가지 class를 한 번에 적용할 수 있음

'UI/UX엔지니어링 > HTML' 카테고리의 다른 글

웹서버 세팅하기  (0) 2020.02.20

웹서비스

프로그램에서의 클라이언트 > 브라우저 (IE, Chrome, Safari ...) 

● 프로토콜 (통신규약) 
복수의 컴퓨터 사이나 중앙 컴퓨터와 단말기 사이에서 데이터 통신을 원활하게 하기 위해 필요한 통신 규약

 

 - 프로토콜 종류

  1) HTTP: Hyper Text Transfer Protocol

  2) HTTPS: Hyper Text Transfer Protocol Secure

   웹 서버와 웹 브라우저가 HTTP 규약을 따름.( ie, 사파리, 크롬 등)

  3) FTP: File Transfer Protocol

  4) Telnet: Terminal Network

  5) POP3: Post Office Protocol Version 3

  등등

 

 

 

http, https를 통해 아이피에 할당된 하드웨어를 호출, 웹 프로그램(web server)에 접근 

프로토콜//아이피:포트 

 

●http://localhost:8080/index.jsp 


- localhost = 127.0.0.1 
- :8080 > 포트=길 
  
 포트가 적혀있지 않은 경우

    http 기본 80번 포트 http://www.naver.com:80 
    https 기본 443번 포트 (보안화) https://www.naver.com:443 
  

- 포트 범위 : 0~65535

- 예약 포트 범위 : 0~1023 까지 (이 포트로는 설정하면 안된다.)

 

●Web Server -apache 
html 문서만 반응

 Web Container -tomcat (→WAS : web application server★)
웹 서버에서 읽지 못한 내용을 html로 변환하여 웹서버로 전달

 

(다시보기)개발환경 세팅, 웹서버 실행하기☞


html5는 <!DOCTYPE html> 뒤 내용 생략 가능

 

 

● html 기본 문법과 속성을 알기

● class : 그룹화

  id : 유일화

 

● 자바스크립트(JavaScript)

  동적으로 이벤트를 발생시키는 언어 (화면)


HTML(Hyper Text Markup Language)

 

HTML은 마크업 언어로서 웹 페이지를 표현하는 언어이다.

 

HTML 태그의 이해

① HTML의 모든 태그는 시작과 끝 태그로 이루어진다.
② HTML 태그에는 속성을 지정할 수 있다.
③ 웹 브라우저에 보여지는 내용들을 표현한다.

 

HTML의 레이아웃 관련 태그

실무에서 div, header, navigation, footer를 많이 사용한다.

 


CSS(Cascading Style Sheets)

웹 페이지 전체의 일관성을 유지할 수 있도록 스타일을 미리 저장해 둔 시트

 

CSS 문법

- 선택자(Selector)는 스타일을 적용하기 위한 대상

  (HTML 요소를 사용할 수도 있고 ID나 Class 형태로 정의할 수도 있다)
- 스타일은 다양한 형태로 지정할 수 있으며 ‘속성 : 값’ 형태로 지정

 

CSS 선택자

- 공용 선택자(Universal Selector. 일반 선택자)
HTML 요소를 선택자로 하여 스타일을 적용할 수 있으며, 이 경우 해당 HTML 요소
모두에 스타일이 적용된다.

 

- 태그 선택자(Type Selector)
지정한 태그에 대하여 스타일이 적용된다.

 

- 클래스 선택자(Class Selector) - 그룹화
클래스 선택자를 활용하면 특정 HTML 요소들을 그룹화하여 스타일을 지정하는 것이
가능하다.

 

-아이디 선택자(ID Selector) -유일화
특정 ID를 부여하여 ID에 스타일을 지정할 수 있다.

 


메모장으로 간단한 웹 페이지를 작성하고 실행하기

 

 

절대경로에서 호출한 상황

 

 

 

tomcat을 통해 호출

 

 

tomcat의 \webapps\ROOT 경로에 test.html 파일을 넣는다.

 

tomcat이 실행되지 않는다.

 

톰캣 구동시에 필요한 java path가 설정되어있지 않기 때문이다.

 


* java path 설정

 

내 컴퓨터>속성>고급시스템속성>환경변수>시스템변수

자바 PATH 시스템 변수를 추가한다.

 

내 컴퓨터>속성>고급시스템속성>환경변수>시스템변수>path>편집

 

변수로 추가했던 JAVA_HOME의 bin 폴더를 변수값으로 추가한다.

;%JAVA_HOME%\bin;

 


 

다시 tomcat을 startup한다.

tomcat이 실행되는 모습

 

페이지가 호출되는 모습

 

'UI/UX엔지니어링 > HTML' 카테고리의 다른 글

eclipse HTML 작업환경 설정 & HTML 태그 종류  (0) 2020.02.20

가입후리스트에서 수정화면까지

수정 버튼을 어디에 만들지 결정

 >user_list.jsp 에는 수정버튼의 위치만 

 >user_list_insert.jsp에 작동하는 수정버튼을 생성할 계획이다.

 

수정버튼을 클릭하면 user_update_form.jsp 화면으로 이동하도록 설정

 

구성이 비슷한 user_insert_form.jsp를 참고하여 만들 수 있다.

 

* (아직 배우지 않음) 화면 이동 사이에 데이터를 주고 받을 수 없는 상황

* 수정화면에 값을 보여주기

* ID 수정을 불가능하게 설정

 

 


 

user_list.jsp에 수정, 수정버튼에 대한 내용을 추가한다.

 

 

user_list_insert.jsp에 수정, 수정버튼에 대한 내용을 추가하고 2번 회원의 수정버튼만 작동하도록 경로를 설정한다.

run

 

버튼이 잘 보이는 것을 확인할 수 있다.

1번 회원의 버튼은 작동하지 않고 2번 회원의 버튼은 작동한다.

user_update_form.jsp 파일이 없기 때문에 404 error가 뜨게 된다.

 

* 404 error :파일이 없어가 경로설정이 잘못되었을 경우

 

 

user_update_form.jsp 파일을 생성한다. 

 

 

run

 

 

경로가 제대로 설정되었지만 파일 내용이 없어 빈 화면이 출력된다.

 

 

 

user_update_form.jsp의 내용을 수정, 작성한다.

 

 

run

 

내용이 잘 수정된 모습

 

 

* 수정화면에 값을 보여주기

 > value 값을 지정해준다.

run

 

수정화면에서 값이 보이게 되었다.

 

 

* ID 수정을 불가능하게 설정하기

 > 속성을 읽기전용(readonly)으로 추가


수정화면에서 수정처리후리스트까지

 - user_update_form.jsp 수정화면에서 수정을 완료하면

   user_list_update.jsp 수정처리 후 리스트가 출력되도록 설정

 

user_update_form.jsp의 action 경로를 user_list_update.jsp로 변경한다.

 

user_list_update.jsp 파일이 없기 때문에 run 하면 404error가 발생할 것이다.

 

user_list_update.jsp 파일을 생성한 뒤 내용을 수정해준다.

 

 

 

run

 

 

화면이 제대로 출력되는 모습

 


삭제버튼 클릭시 삭제후 리스트 

user_list.jsp  > 삭제버튼 텍스트만

user_list_insert.jsp > 삭제버튼 (경로이동)

user_list_update.jsp > 삭제버튼 (경로이동)

 

user_list_delete.jsp > 삭제처리 후 리스트 최종 완성

 

 

 

user_list_insert.jsp와 user_list_update.jsp의 내용을 추가하여 삭제버튼을 만들고 경로를 user_list_delete.jsp로 설정한다.

 

user_list_delete.jsp를 생성하고 내용을 작성한다.

(user_list.jsp의 내용을 참고한다.)

 

run

 

 

회원 등록 후 삭제하는 모습

 

회원등록, 수정 후 삭제하는 모습

 

 



상품등록, 리스트, 관리 화면 만들기

 

1. 상품 작업을 위한 폴더 및 파일명 정하기.

 

2. eclipse 를 이용하여 실습한 내용과 같이 상품관리 페이지를 만든다.

 

>이미지를 폼으로 제출하고 수정가능하게 만드는 방법을 알고싶어졌다.

 

회원 한명 리스트 만들기

 

html을 구글링하여 html 참고 사이트를 찾는다.

 

https://www.w3schools.com/

 

W3Schools Online Web Tutorials

HTML Example:

This is a heading

This is a paragraph.

Try it Yourself » CSS Example: body {   background-color: lightblue; } h1 {   color: white;   text-align: center

 

www.w3schools.com

 

 

html tables 메뉴에서 참고할 코드를 탐색한다.

 

TEST 폴더 생성 table.jsp 파일 생성하여 참고사이트의 html 코드 복사, table.jsp 에 붙여넣기한다.

 

표의 내용을 수정한다.

 

아래 불필요한 내용 삭제

 

run

 

 

내용을 추가한다.

 

 

run 

 

 

index.jsp와 table.jsp를 참고해서 user_list.jsp를 완성할 수 있다.

 

 index.jsp의 전체 내용 복사해서 user_list.jsp의 내용을 모두 지우고 붙여넣기

 - index와 내용이 같아 화면의 변화는 없지만 경로의 변화가 있다.

table.jsp 내용을 일부 (<head><style>~<body/>) 복사해서 user_list.jsp의 내용 부분에 붙여넣기

 

*css 태그 별도

 

table.jsp의

 

를 user_list.jsp의 <head><head/>사이에 붙여넣기

 

 

table.jsp의 <table><table/>의 내용을 user_list.jsp의 내용 부분에 붙여넣기

 

run

 

 

적용된 모습

 

 

* 스타일을 주석처리 해보기

 

표의 모양이 사라졌다

style태그가 table, th, td 태그에 영향을 미치는 것을 알 수 있다.

 


회원가입 화면에서 가입 후 리스트 경로 까지

 - user_insert_form.jsp 가입버튼을 클릭하면 두명의 리스트 화면으로 이동하게 만들기

 

 user_list_insert.jsp 생성

 

user_insert_form.jsp의 form action 경로 확인

 index.jsp를 run 하여 가입버튼 클릭 후 경로 확인

작업한 내용이 없으므로 빈 화면이 출력 된다.

 

 user_list.jsp의 내용을 전체 복사하여 user_list_insert.jsp 붙여넣고 user_list_insert.jsp 에 한명을 추가하고 리스트 이름을 바꾸어준다.

run

 

잘 작동되는 모습

템플릿 불러오기

 

 

이클립스에서 프로젝트 LayoutTemplate 생성

 

LayoutTemplate 폴더 중 WebContent 폴더 복사

 

이클립스 프로젝트 익스플로러에서 LayoutTemplate 프로젝트 클릭 후 ctrl+V

덮어쓰기 선택

 

템플릿들이 프로젝트로 복사되었다.

 

 

복사된 템플릿중 14-2의 index.html을 run 한 모습

 

 

 

 


레이아웃 실습

 

실습을 위해 Layout35 프로젝트를 생성하고 WebContent에 index.jsp를 생성한다.

참고할 레이아웃 템플릿의 index.html 내용 일부 (title 이하)를 index.jsp의 title 이하에 붙여넣는다.

 

index.html의 내용을 run 해본 결과물이다.

텍스트만 출력되는 것으로 보아 css가 레이아웃의 색상, 사이즈 등을 결정한다는 사실을 알 수 있다.

 

그렇다면 왜 css가 실행되지 않을까?

 

1. main.css 파일이 없다.

2. 파일이 있어도 경로를 잡지 못하면 실행되지 않는다.

 

 

css 폴더를 만들고 main.css 파일을 css 폴더에 main.css 파일을 붙여넣는다.

 

main.css가 존재하는 경로가 다르므로 경로를 설정해주어야 한다.

 

 

 

request.get ctrl+space를 한 모습

getContextPath()를 선택

 

더보기

메모

/>폴더명복사>/>파일명복사 

경로를 굳이 타이핑할 필요 없다.

타이핑을 믿지 말고 경로를 복사, 붙여넣기 하자.

 

 

 

ctrl+shift+/   주석

ctrl+shift+\  주석해제

 

 

= /Layout35 (프로젝트 명을 구하는 함수)

 

경로를 수정하고 Run 한다.

 

css파일이 적용된 모습.

 


 

 

회원 관리를 위한 화면 구성을 적었다.

 

구상한 화면 구성대로 WebContent 하위에 user 폴더를 생성하고

user 폴더 하위에 user_insert_form.jsp, user_list.jsp 등을 생성한다.

 

 

 

index.jsp 파일의 메뉴부분을 한글로 수정한다.

한글화가 완료된 메뉴

 


상단메뉴 4개 추가

 

상단 메뉴 4개를 추가하고 경로를 연결한다.

 

 

상단 메뉴가 추가된 모습

 

user_insert_form.jsp와 user_list.jsp은 아무것도 작성하지 않았기 때문에 상단 메뉴에 연결된 페이지는 빈 화면이 출력된다.

 


회원가입화면 연결

 

 

user/user_insert_form.jsp를 열어 회원 가입 화면을 작성한다.

 

레이아웃을 유지하기 위해 index.jsp의 내용을 모두 복사해 user_insert_form.jsp에 붙여넣고

 

오른쪽 영역( Download this CSS Layout 부분)에 회원가입 화면을 위한 폼을 넣는다.

 

 

회원가입화면 폼이 완성된 모습.

 

 

 

 

index

 

회원가입 선택시 회원 가입 화면

 

 

 

멋이 없긴 합니다만 굴러가네요!

 

웹서버를 실행시키고 html, css로 화면을 구성

 

 

 


개발환경 세팅 

 

 

개발환경 다운로드 사이트

1) 자바프로그램 개발 을 위해서 필수 다운로드 및 설치

http://www.oracle.com

 

Oracle | Integrated Cloud Applications and Platform Services

About Oracle Unlock endless possibilities A culture of innovation has propelled Oracle since its inception. Today, thanks to exceptional people, we lead the market in autonomous, cloud, and applications technologies.

www.oracle.com

JDK ( Java SE Development Kit ) : 개발환경

JRE ( Server Java Runtime Environment ) : 실행환경

2)웹서버(Web Server) ,웹어플리케이션서버 (Web Application Server)

apache-tomcat

http://tomcat.apache.org/

 

Apache Tomcat® - Welcome!

The Apache Tomcat® software is an open source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket technologies. The Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket specifications are

tomcat.apache.org

3)편집 도구 : eclipse

http://eclipse.org/

 

The Platform for Open Innovation and Collaboration | The Eclipse Foundation

The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 350 open source projects, including runtimes, tools and frameworks.

www.eclipse.org

 

( eclipse&apache-tomcat > 특정 폴더에 위치시키는 개념)

 

 

이클립스 편집도구를 통해 JDK, JRE와 웹서버를 연결하여 프로젝트를 생성한다.

 


워크스페이스 설정

 

이클립스를 실행하기 전에 워크스페이스를 생성한다.

 

D드라이브 이름폴더 하위에 htmlwork35 폴더를 생성했다.

 

이클립스를 실행하면 워크스페이스를 설정하라는 창이 뜬다.

 

워크스페이스로 생성한 htmlwork35의 절대경로를 입력한다.

 

 

<절대경로와 상대경로>


1.절대경로

원하는 경로를 Root 디렉터리부터 모두 적은 것
어떠한 웹페이지나 파일이 가지고 있는 고유한 경로


ex)
http://www.naver.com
C:\users\document\untitled.jpg


2. 상대경로

 현재 위치한 곳을 기준으로 한 그곳의 위치

  ex)
C:\users\document를 기준으로
C:\users\document\ex\untitled.jpg > \ex\untitled.jpg
C:\users\document > ./
C:\users > ../

 

 


새 프로젝트 생성

 

 

File> New> Dynamic Web Project로 새 프로젝트를 생성한다.

 

프로젝트 이름을 ex라고 적었다.

 

 

Target runtime은 웹서버를 의미한다.

new runtime을 선택해 웹 서버 타입을 Apache Tomcat v9.0로 선택한다.

 

tomcat installation directory 설정을 위해 browse를 클릭해 경로를 설정한다.

 

 

src는 JAVA 소스 코드의 위치이고

classes 는 compile, building 시 나오는 class 파일의 위치이다.

 

 

 

context root 와 project name이 같은 것을 확인할 수 있다.

 

WebComtent 하위에 html, css, Java Script, JQuery 등이 위치한다.

 

Finish를 눌러 프로젝트 생성을 마친다.

 

 

 

생성된 프로젝트 ex

 

이클립스에서 보여지는 프로젝트의 경로와 Windows에서 보여지는 폴더의 경로가 유사하면서도 차이점을 보인다.

 


웹 서버 서비스 해보기

 

프로젝트 탐색기에서 WebContent 폴더를 선택하고 JSP File을 생성한다.

 

 

생성된 JSP 파일 내용 <body>안에 통성명을 해보았다.

 

내용을 작성 후 run을 한다. run단축키는 ctrl+F11이다

 

Run을 하게되면 이런 창이 뜨는데 프로젝트 생성시에 설정했던 target runtime과 알맞은 apache-tomcat의 버전과 동일한지 확인한 뒤  Finish를 눌러준다.

 

내용이 잘 출력된 모습!

+ Recent posts