열심히 끝까지

디바이스 융합 자바(Java) day26 - 웹개발,tomcat(톰캣)설치 및 자바연동, 웹 기본기(title, body,글씨체,사이띄우기 등,...) 본문

디바이스 융합 자바(Java)기반 풀스택 개발자 양성과정(수업내용)

디바이스 융합 자바(Java) day26 - 웹개발,tomcat(톰캣)설치 및 자바연동, 웹 기본기(title, body,글씨체,사이띄우기 등,...)

노유림 2022. 7. 18. 15:59

오늘의 진도
>>웹개발

>>영어 신문 만들기
국어
영어
신문(기사)
주제


>> 웹 개발을 하려면 고려해야할 사항
- 사용자가 어플리케이션을 이용할 때 어떤 것을 좋아할 지 아는 것
- 어플리케이션 경험
- 로직으로 풀어서 설명 가능 
- 코드로 작성(코딩)
    > 요즘 뜨는 언어, 기술, ...
- 유행
+++우테크(토,일 영상 2개)x2+++

-----------------인트로-----------------
프론트쪽에 취업하는 것이 아니기 때문에 
HTML + CSS + 퍼블리셔 공부는 기본에 기본만 나감

<이전 수업>
- for, forEach / while

    -- for, forEach
        : 반복횟수를 알고 있을 때 사용
       ex )

package class01;

import java.util.ArrayList;
import java.util.Iterator;

public class Test01 {
	public static void main(String[] args) {
		// for, forEach / while
		
		int[] data = new int[3];
		data[0] = 10;
		data[1] = 20;
		data[2] = 30;
		System.out.println(data);
		
		ArrayList<Integer> data2 = new ArrayList<Integer>();
		data2.add(10);
		data2.add(20);
		data2.add(30);
		System.out.println(data2);
		
		for(int i = 0; i < data.length; i++) {
			System.out.println(data[i]);
		}
		for(int i = 0; i < data2.size(); i++) {
			System.out.println(data2.get(i));
		}
		
		for(int v : data/*data2도 가능*/) { // itr(이터레이터), rs(Result set)
			System.out.println(v);
		}
	
		// 이터레이터 
		// 두개의 메서드 존재
		Iterator<Integer> itr = data2.iterator();
		while(itr.hasNext()) { // 메서드 시그니쳐 꼭 확인할 것(hasNext()는 boolean값 존재)
			System.out.println(itr.next());
			// 존재한다면 다음 값 보여줄 것
		}
	}
}

 

- MVC
  ※ MVC 로직 팁
     로직별로 짜면 이 부분이 붙을 확률 多
     M : 데이터의 형태(자료형, 개수,...)
          DB와의 연결 -> JDBC
          CRUD 구현 됬는지 확인
     V : 사용자(유저, 브라우저) 편의성 고려(UI/UX)
          유효성 검사(1차적 : 자료형(타입), 기본적인 범위(황당한 범위))
         ex ) 
             1~100까지 학생부
             0이하, 100초과 xxx
             if, 50번 전학을 갔는데 50번 검색?
              >> 컨트롤러가 로직을 넘겨주면? 검사 하기
                   만약 안 주면? controller 시키기 
     C : Model -- View 연결 역할
          로그(로깅 기법) - 많이 찍어서 view한테 가는 데이터가 올바른지,
                                  모델에게 가는 데이터가 유효한지(유효성 검사)
                                     ㄴ> 추후 view쪽으로 건내줄 수 있음
          -> V가 아님!
          -> 로그 지울 때, 주석으로 지울 것

++++++++++++++++++++++++++++++++++++++++++
- 코딩할 때 유의사항
※ console에 의존하는 경우가 많음.
   1 로직 당 1 로그 << 로그를 찍어보는 것이 좋음(사전에 어떤 로그가 나올 지 예상해야 함)
                    >> 스스로 예상한 로그와 같은 지 확인할 것
                    -> 디버깅표 그릴 것
※ 예외 발생 시...
       1) 예외 발생한 라인
       2) 이유
       3) 해결방법 구글링
       4) 포스팅
※ 주석 생활화
※ 메서드 사용할 때에 메서드 시그니쳐 확인 필수!!!(자료형 정보 맞출 것)
※ 자료형, 개수, 메서드 형태(오버로딩, 오버라이딩)

>> 기본적으로 지킬 것
     ~> 지키면 실수하는 확률이 줄어들 것


[모르는 것이 있는 걸 아는데 검색할 방법을 모른다...]
    >> 용어, 상황에 대한 이해가 있으면?
           > 검색하기 편하다.

>> 웹의 기본 기초 지식
- 웹
      : 요청(클라이언트가 하는 것)과 응답이 일어나는 장소

- 클라이언트
      : 사용자, User, 브라우저, 고객      
      : 서버에게 요청을 함
      - 웹 브라우저
             chrome기준으로..
             Java로 작성
               : 응답해주는 페이지를 보여주는 V 공간
                (이때, 페이지는 HTML 문서 <!DOCTYPE HTML>)
                 console -> GUI
                 구조 : HTML
                 스타일 : CSS
                 동작 : Java Script(자바 스크립트)
                           >> 자바랑 관계가 없음(이름에만 자바 작성)

- 서버
      : (클라이언트가 수행한) 요청에 대한 응답을 수행
      : 요청받은 서비스(사용자가 이용한)를 응답 
      
>> preferences
    >> GENERAL >> WEB BROWSER >> CHROME(맨 위에 두번째꺼도 선택)
      
URL(페이지를 저장해 놓은 공간)
      : 요청 정보
       ex ) https://comic.naver.com/webtoon/list?titleId=774862
      : 요청에 대한 페이지 위치 정보

프로토콜(protocol)
      : 약속, 통신 규약
       - http : hypertext transfer protocol
              >> 요청한 사람, 일반 문서(웹페이지)일반 문서라 보안이 약했음
                      >> 탈취해서 보면 내용을 보는 것이 가능
       - https : hypertext transfer protocol secure socket
              >> SSL(secure socket layer)
                 : 웹 페이지 텍스트 문서 자원을 암호화 계층을 추가하여 보안 강화
                         -> 공개키  

IP와 도메인
       - IP(P : PK 고유번호)
       - IP 주소란?
         : 네트워크 상에서 인터넷에 접속하는 컴퓨터를 구분하기 위해 사용하는 고유번호
         : CMD에 ipconfig를 검색하면 IPv4 주소 존재
             >> IP 주소는 고유번호라 해놓고, 왜 그 주소가 여러 명이 존재하는가?
                  그래서 도입된 것이 IPv6버전 << IPv4 주소가 고갈될것이다...ㅠㅠ
                       > 하지만 IPv6가 보안관련된 이슈 존재 + 회사 입장(개발비용 증가)
                            > 그럼에도 사용하는 이유?
                                 :             
       - 도메인 : comic.naver.com
         : IP 주소를 기억하기 어려우니까, 이름을 부여
           도메인 사용하는 것이 권장
            >> IP 주소를 사용하면 . 과 같은 것이 들어가기 때문에 
                  도메인 사용하는 것을 권장
          ex ) cmd nslookup www.naver.com 

++++++++++++++++++++++++++++++++++++++++++++++++++
웹 페이지 작성
MVC 중에 V
    지켜야 할 것
   1. 웹 접근성 지침을 잘 준수해야 함
          - 웹 접근성?
               : (이 웹을 사용하는)모든 사용자가 웹에 접근하여 이용할 수 있도록 보장해주는 것
               : 신체적인 조건, 환경적인 조건 등에 제약을 받지 않고도
                 잘 이용하고 정보를 잘 전달받을 수 있도록 작성해야 함
          - 웹 표준 준수
               : 웹 문서를 구조, 표현(스타일), 동작을 구분하여 사용하는 것
                 웹 문서?  > 웹 페이지 텍스트 문서
          - HTML 
                      <> 태그 언어
                      <시작 태그></끝 태그>
                      <태그명 속성명="값">
                        ex )  <a href="aaa.png">갱플랭크</a>
          - CSS
                      HTML로 구조화한 문서에게 레이아웃(스타일)을 부여
          - JS ☆☆☆☆☆
                      연산 가능
                       "이벤트 처리"
                       ajax(비동기 처리), jQuery(플러그인),...       

++++++++++++++++++++++++++++++++++++
- 해야할 일
1. 톰캣 설치
    톰캣 9.0 64bit windows zip
                 32bit/64bit windows service installer
    >> 아팟치 톰캣이 8080, ...
    >> 유지하고 java에서 바꿀 것
    >> 톰캣 파일에서 아직은 압축파일을 쓰지 않음
2. 버전 맞추기
    >> cmd > javac -version 해서 버전 확인
3. 이클립스&톰캣 연동
    v 프론트앤드를 개발하는 작업도구는 많음
      -> 하지만 java 사용 > 다른 도구에 비해 작업을 자주 사용하지 않음..
    >> 브라우저 화면 페이지 작성 
            HTML
         을 응답해줄 서버의 역할로 톰캣 사용
    DB => WINDOW>SHOWVIEW>DATA SOURCE EXPLORER
    웹 => WINDOW>SHOWVIEW>SERVERS
   - NO SERVERS 클릭 > APACHE TOMCAT 9.0 선택 > 폴더 선택 시 BIN 폴더가 보일 때까지 들어간 후 선택>FINISH
   - 왼쪽 칸(PACKAGE EXPLORER)에 NEW > OTHER > WEB > DYNAMIC WEB PROJECT > test > FINISH
    > package explorer 에서 project explorer > test open
   - 잘못 깔리게 되면 PROJECT > PROPERTIES > SERVER > RUNTIME ENVIRONMENT 부분 싹다 지우기 REMOVE 할 것


   java위의 부분이 DB-MODEL 로직
   src/main/java > 기존에 저희가 쓰던 도구가 있던 곳(java(로직)가 있는 공간)
   아래 src는 HTML
   src > main > webapp 파트에서 문서 담당
         > 하위는 환경설정 담당(쓸모 아직 이야기 안함)
         > WEB-INF 안에 만들면 안 된다...
             : 그 바깥에 만들 것
         > HTML문서 바로 뜸 
               > OTHER > HTML작성 > HTML files

   언어 연동
      > preference
            > web > HTML FILES, CSS FILES, JAVA SCRIPT, JSP FILES 전부 UTF-8로 변경


   <TITLE>탭 이름</TITLE>
<BODY>
확인!
</BODY>
CTRL F11 > RUT TO SERVER > CHOOSE AN EXISTING SERVER LOCAL 
        >LOCALHOST > TOMCAT 지정하고 RUN > 에러 발생
    >> 수정하는 방법
    1. 우선 캡쳐하기
        - 에러 내용 살펴보기 8080포트를 써야하는데 이미 쓰고 있어요..
        - cmd > netstat -ano > 
    2. apachi 더블클릭
       > port 보면 http/1.1 > 8088로 바꾸고 ctrl + s
    3. 주석은 <!-- 주석-->
       > 하지만 이 주석에는 중요한 것을 써 놓으면 안된다!
--------------------------------
웹 오류는 URL 체크가 필수!
  404
       400대 오류
       클라이언트 잘못
       사용자가 잘못된 요청  

  500
       서버 프로그래밍
       서버 잘못
       로직에 문제점이 존재할 확률↑↑↑

---------------------------------
>> html 소스 보는 법

   1. 메모장으로 바꿔서 본다

   2. 인터넷에 드래그&드롭 해서 페이지 소스 보기
<> 태크 -> 요소
                 블록 요소 <h1></h1>
                               <h2></h2>
                               <p></p>
                 인라인 요소

 

-- 줄바꿈<br>

-- 블록 요소(글자크기1~6)<h1></h1>

-- 링크 걸기<a href = ""></a>

-- 굵은 글씨 강조<strong></strong>

-- target="_self" < 현재 창에서 띄우기(링크)

-- target="_blank" < 새 창 띄우기(링크)

-- <hr> 줄 긋기

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

<p></p>와 <span></span>의 차이

<p> : 본문의 기사나 설명서에 많이 쓰임

<span> : 본문뿐만 아니라, 여러 곳에 쓰임, 구조의 한 종류

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

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>탭 이름</title>
</head>
<body>

<!--[1] <br> 한줄 띄우기 -->
APPLE <br> 
BANANA <br>
KIWI

<!-- [2] 머릿글 크기(1,2~6까지 존재), 줄바꿈 제공  -->
<h1>블록 요소</h1>
<h2>특징)</h2>
<p>줄 바꿈이 제공됨</p>

<br>
<!-- [3] 강조, <hr> 줄 그어주기 -->
<strong>인라인 요소</strong>
<span>특징) 줄바꿈 제공xxx</span>
<br><br><hr>

<!-- [4] a : 태그, href와 같이 쓰임, 해당 링크로 이동하게 함 -->
<!-- target = "_self" < default값, "_blank" < 새 창 열기 -->
<a href ="#banana">바나나</a><br>
<a href="https://www.naver.com/" target="_blank">네이버</a> <br>
<a href="https://www.daum.net/">다음</a> <br>
<a href="http://www.google.co.kr/">구글</a>
<!-- 링크 뿐만 아니라 내 태그 내에도 이동 가능 -->

<h1>apple</h1>
<h1>apple</h1>
<h1>apple</h1>
<h1>apple</h1>
<h1>apple</h1>
<h1>apple</h1>
<h1>apple</h1>
<h1>apple</h1>
<h1>apple</h1>
<h2 id="banana">banana</h2>
<!-- .class 여러 개의 요소들에게 부여되는 공통 별명 -->



</body>
</html>

-- 이미지 불러오기

    <img alt="웹 접근성 위해 작성">

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

<!-- 속성이 자동으로 완성되는것 > 필수 속성, alt<웹 접근성을 위해 작성 -->
<!-- 시각 장애인 분들을 위해 alt를 사용하여 작성, 이거 없으면 광탈! = alt를 스크린리더로 읽기 위해 -->
<img alt="내가 다운로드 받은 일러스트 1" src="images/sun.jfif">
<a href="http://www.naver.com"><img alt="내가 다운로드 받은 일러스트 2" src="images/rain.jfif"></a>
<img alt="내가 다운로드 받은 일러스트 3" src="images/rainbow.jfif">


</body>
</html>