-
(국비교육) 18 - C언어 맛보기 + 예외처리 + Tomcat 다운로드 + 웹브라우저 만들어보기 + 중복클래스개발/국비교육 2023. 6. 26. 11:48
■ c언어 맛보기
c언어는 문장의 처음과 끝을 맞춰준다.
{
}
배열 표시와 반복문은 다음과 같이 표현할 수 있다.
size of 는 바이트 크기를 말한다.
double 은 8byte 이기 때문에 8이 나온다.
2021 #정보처리기사 필기요약 #4-2. 프로그래밍 언어 활용 (tistory.com)
■ 예외처리 (p. 453)
예외의 정의 = 실행시에 발생할 수 있는 모든 에러상황으로 기억
자바에서는 예외가 발생하는 순서가 있다.
컴파일 -> 실행 -> 실행중 예외발생 -> VM 이 발생된 예외의 종류 및 내용 파악
-> 예외 객체 생성 -> 발생된 코드 밖으로 예외 객체를 던짐(throw) ->
예외의 콜 스택에 전이 -> main 메소드 밖까지 던지게 되면 프로그램 강제종료
위처럼 예외는 던지다라고 표현한다.
또한 예외는 객체이기 때문에 당연히 클래스로 정의되어 있다.
예외의 최고 클래스는 lang 패키지의 Throwable 이다.
여기에 자식으로는 Error 와 Exception 이 있다.
Error 의 하위 타입은 일반적으로 자바 실행기 즉, VM 에 관련된 에러 상황들을 정의한 클래스 이다.
이러한 문제(에러상황)는 프로그래머가 처리할 수 없는 것이다.
VM, JRE 전체의 문제이다.
따라서 프로그래머는 Error 하위 타입의 예외들(에러들)은 처리하지 않고 무시한다. (처리할 수 없다.)Exception 이란 클래스의 하위 타입이 바로 프로그래머가 처리해야 할 예외 타입들 이다.
따라서 보통 예외다 라고 표현할 때 최고 클래스는 Exception 클래스 이다.
Throwable 클래스는 자식으로 Error 를 가지고 있기 때문에 예외의 최고 클래스라고 표현하지 않는다.
예외의 종류
크게 두 가지로 나뉜다.
컴파일러가 관여하지 않으면서, 실행시에 예외가 발생 할 수도,안 할 수도 있는 예외 = 알려지지 않은 예외(UnChecked Exception) = 실행예외
컴파일러가 관여하는 예외 = 알려진 예외(Checked Exception) = 일반예외EX) 빨간색 밑줄 표시
구분하는 방법은 Exception 하위 클래스 중 RuntimeException 이 있는데
해당 클래스의 자식 클래스는 모두 알려지지 않은 예외이다.
나머지는 모두 알려진 예외이다.코드 상으로 문제는 없지만 컴파일 시 잘못된 것들 우리가 핸들링해서 정상적으로 종료시키는 것
EX) 배열 밖으로 빠져나간 것 (실행예외)
예외가 발생할 것 같은 문장을 try 문에 넣어주고
문제가 없다면 try 문, 그렇지 않다면 catch 문이 출력된다.
숫자는 아스키코드로 나오기 때문에 -48 을 해줬다.
String2 라는 클래스가 존재하지 않아서 catch 문장과 마지막 문장 실행 (try 실행x)
String 라는 클래스가 존재해서 try 문장과 마지막 문장 실행 (catch 실행x)
FileReader : 자바의 입력과 출력 담당 (자바 밖으로 가서 파일을 읽어옴)
만약 파일을 찾지 못할때 어떻게 처리할지를 try catch 로 작업해준다.
윈도우 + E 버튼으로 로컬 디스크 들어가서 temp.txt 파일 하나 생성해주기
파일이 있어서 try 문 출력된다.
상황에 맞는 catch 문장 설정 가능하다.
파일이 없을때 catch 문과 파일을 읽어들일 수 없을 때 catch 문 설정이다.
finally : 예외 발생 유무와 상관없이 반드시 실행할 문장, 닫기 명령문
포트를 열었으면 웬만하면 닫아줘야 한다.
따라서 finally 문에서 닫기 명령문을 try catch 로 닫아준다.
■ 예외 처리방법 (p. 460)
1. 직접처리
try{
Exception 이 발생할 코드
} catch(Exception e) {
예외가 발생하면 실행할 코드
} finally {
예외 발생여부와 상관없이 공통적으로 실행할 코드
}
2. 던지기 (Throw)
메소드 뒷 부분에 throw 처리할 타입을 적어줍니다.
메소드가 실행되다가 예외를 만나면 메소드를 호출한 쪽으로
예외를 던집니다.
이 던지기가 main 메소드까지 온다면 vm 으로 던지고 강제 종료됩니다.3. 직접 Exception 객체를 만들어서 처리하기 (많이 안씀)
예외 객체를 만들어서 처리하기
throw 객체명;
@override
public void printStrackTrace(){
System.out.print("예외가 발생했습니다.");
super.printStrackTrace();
}
해당 배열 길이를 넘어서는 index 를 가지고 있기 때문에
출력 시 배열 길이 밖으로 나갔어요. 라는 출력문이 나오고 프로그램 종료 된다.
출력문을 볼 수 없는 이유는 arr01[arr01.length] 로 인해
try문은 출력되지 않고 catch 문으로 가기 때문이다.
0으로 나눌 수 없기 때문에 다음과 같이 뜬다.
따라서 0으로 나눌 수 없는 catch 문을 작성해주면 해당 내용이 출력된다.
finally 문은 예외 발생 유무와 상관없이 실행된다.
tyr catch 안에 try 들어가서 실행도 가능하다. (이중 try)
fr 을 닫아주는 작업의 경우 데이터 스코프의 범위에 따라 fr 이 존재하는 try구문에서 닫아줘야 한다.
sc.close() 의 경우 아예 문장 밖에 있으니 finally 에서 닫아줘도 무방하다.
* 관련 정처기 필기 문제
http://www.tcpschool.com/java/java_exception_intro
■ Tomcat 다운로드 (사이트 링크 하단)
tomcat 9 zip 다운로드
다운받은 파일 로컬디스크 c 로 드레그하여 복사
(웹서버 프로그래밍 진행 위해)
이클립스 버전 확인하기
해당 톱니바퀴가 있어야 웹개발도 가능한 버전이다.
New -> Project
Web -> Dynamic Web Project -> Next
Finish 클릭
Finish 클릭
Finish 클릭
해당하는 프로젝트 선택 -> New -> JSP File
index.jsp 로 새로 생성
서버 연결하기 위해 파란줄 클릭
Tomcat v9.0 server 선택 후 next
Browse 누른 후 우리가 복사한 로컬디스크 c 에 있는 파일 클릭
우리가 입력한 내용을 출력하기 위해서는
프로젝트 -> Run As -> Run on Server
Finish 선택
액세스 허용 누르면 화면이 바뀐다.
</> 있으면 닫는 태그
<h1> 헤드라인
<h2> 조금 작은 헤드라인
<% %> 자바 코드 부분이며, 해당 부분은 화면에 보이지 않는다.
JSP : Java Server Page
자바로 서버 페이지를 만든다.
서버에서 먼저 컴파일 후 결과를 사용자에게 보여줍니다.
자바 코드를 통해 i 반복문을 사용할 수 있다.
다만 자바를 마지막에 닫아주는 이유는 우리는 html 에 i 를 활용해야 하는데
위에서 닫아버리면 데이터 스코프로 인해 i 를 활용하여 화면에 보일 수 없기 때문이다.
<h1> 가장 큰 글
<a href = ""></a>
앵커태그(이동태그) : 내가 원하는 곳으로 이동
네이버로 링크 연결돼서 이동 가능하다.
자바 html 태그가 붙은 값 11이 나온다.
반복문도 다음과 같이 실행할 수 있다.
* 2단 출력하기
* 메인 인덱스 오가기
앵커태그를 이용하여 인덱스와 메인 연결해주기
<table> 테이블을 생성하며 border = "1" 은 한 줄을 의미한다.
<tr> 테이블 한 줄
<td> 테이블 한 칸
* 10줄 반복하기
■ 스타일 설정하기
style="" 을 통해 스타일 설정이 가능하다
넓이는 width 로, 높이는 height 로 조절 가능하다.
width 크기는 다음과 같이 조절 가능하다.
- auto : 자동
- 100% : 브라우저 전체 다 차치
- ~px : 내가 크기 조절
EX) 500px
text-align : 가운데 정렬
* 단위 명령 내리기
단위 명령은 title 밑에서 style 설정을 해준다.
<style type="text/css">
/* 스타일 영역입니다. */
선택자 {
속성 : 값;
}
</style>
별도로 title 테이블 한 줄만 왼쪽 정렬 설정 가능하다.
border : 선 긋기
border-bottom : 1px red dotted; : 점선으로 아랫줄에 빨간색 선 긋기
boder-collapse : collapse; : 끊김 없이 이어주기
* 호버
마우스 클릭은 아니지만 마우스가 있는 곳을 색칠하기
- background-color: gold; : 배경색 설정
- color: red; : 선택한 부분 글자
* 말풍선 글 만들기
title = "" : 마우스 올리면 말풍선 글이 보인다.
프로젝트 완료되면 close Project 로 눌러 컴파일 되지 않게 설정해준다.
※ Tomcat 언어 및 단축키 설명
<hr> : 한줄 선 긋기
Ctrl + Shift + ? : 주석 만들기
<br> : 엔터 치기
<p> : 문단 만들기
<br> : 엔터 치키
<% %> : 자바 코드 실행 가능(우리는 자바 이용)
■ 중첩 클래스 (= 내부 클래스, p. 406, 자주 사용x)
클래스 속에 클래스가 있다.
메소드 속에 클래스가 있다.* 장점 ========
내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다.
캡슐화, 코드의 복잡성을 줄여준다.
내부 클래스가 외부 클래스의 부품을 활용될 때.
내부 클래스는 잘 활용되지 않을 때.보통의 클래스는
class A{}class B{}
내부 클래스는
class A{
class B{}
}* 종류
- 정적 멤버 클래스 : 외부 클래스의 멤버 변수 위치에 선언
스타틱 클래스 스타틱 멤버처럼 다뤄진다.
주로 외부 클래스의 스타틱 멤버, 특히 스타틱 메소드에 사용될 목적으로 선언한다.
- 멤버 클래스 : 외부 클래스의 멤버 변수 위치에 선언
인스턴스 멤버처럼 사용됩니다.
주로 외부 클래스의 인스턴스 멤버들과 관련된 작업에 사용.
- 지역 클래스 : 외부 클래스의 메소드나 초기화 블럭 안에서 선언.
선언된 영역 내부에서만 사용됩니다.
- 익명 클래스 : 클래스 선언과 객체의 생성을 동시에 하는 이름없는 클래스
(일회용)Q) 오류나는 이유 ?
nestedMethod() 가 innerMember 출력을 요청했는데
위에 innerMember 는 static 이 없어 객체를 생성해줘야 한다.
객체 생성 없이 먼저 불렀기 때문에 오류가 나므로 innerMember에 static 을 붙이면 오류가 사라진다.
Q) 값 변경 가능..?
final 아닌 경우 객체 값을 변경할 수 있다.
외부객체 내부객체를 통한 in 객체를 생성하면
내부객체의 메소드를 호출하거나 필드값 변경이 가능하다.
Q) 정적 멤버 클래스로 모든 종류의 필드와 메소드 이용할 수 있다 보여준 예시?
정적 멤버 클래스로 생성자, 인스턴스 필드 및
static 필드와 메소드도 부를 수 있다.
* 정적 클래스 정리
정적 클래스 static class = 정적 멤버 클래스
class 앞에 static 이 붙는다. 객체 생성 없이 사용한다.
클래스의 static 변수처럼 사용한다. 외부 클래스와 내부 클래스는 다르게 동작한다.
외부 클래스와 내부 클래스의 멤버가 private 이더라도 상호 모두 접근 가능하다.
경로만 지정되면 단독으로 직접 사용할 수 있다.* 멤버 클래스
외부 클래스에서 내부 클래스 객체 생성이 가능하고,
그에 대한 메소드와 필드를 내것처럼 호출할 수 있다.
외부클래스 먼저 생성하고,
외부 클래스를 통해 내부 클래스를 생성한 in 을 통해 내부클래스 메소드 사용 가능하다.
* 멤버 클래스 정리
내부에 있는 앞에 static 붙으면 정적 클래스
내부에 있는 클래스 앞에 아무것도 없으면 멤버 클래스
내부 클래스는 클래스 내에 선언되었으므로 인스턴스 속성처럼 사용된다.
즉 메소드 {} 안에서 유효하다.
내부 클래스는 외부 클래스의 멤버를 사용할 수 있지만,외부 클래스는 내부 클래스의 멤버변수를 사용할 수 없다.
또한 static 붙은 메소드 내에서는 내부 클래스의 객체 선언은 X* 요청사항
- UTF-8 이란?
유니코드는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다.
UTF-8은 유니코드를 인코딩(encoding)하는 방식이다.
'개발 > 국비교육' 카테고리의 다른 글