ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JAVA WEP - 3
    Study 2023. 2. 10. 10:06

    JAVA


    22. 예외(Exception) 처리

     1) 예외
      : 사용자의 잘못된 조작이나 혹은 개발자의 잘못된 코디으로 인해 발생한 프로그램 오류
    ​​

     2) 예외의 종류
      1. 일반 예외(checked exception)
       : 컴파일러가 예외 발생 가능성을 미리 검증

     
      2. 실행 예외(runtime exception)
       : 실행 시에 예외 발생 확인 가능

     

        ex) NullPointerException
             ArrayIndexOutOfBoundsException
             NumberFomatException
             ClassCastException

     

    ​  3. 예외 처리 방법
       1) try~catch 블럭
          a. finally 블럭 : 예외 발생 유무와 상관없이 실행되는 블럭
          b. 직접 예외 객체 발생 : throw 사용 (throws와 별개의 키워드)
       2) throws 키워드 사용

    23. 스레드(Thread)

     프로세스(Process) : 실행 중인 프로그램

     

     멀티 태스킹 : 프로세스가 여러 개
     
     스레드 : 프로세스 내에서 실행 단위가 되는 하나의 작업 흐름
       단일 스레드 : 프로세스 내에서 수행 흐름이 하나
     
       멀티 스레드 : 프로세스 내에서 수행 흐름이 여러 개
         1. Thread 클래스를 상속받는 방법
               1) extends Thread
               2) run() 메소드 재정의
               3) Thread를 상속받은 클래스의 객체 생성
               4) start() 메소드 호출
     
         2. Runnable 인터페이스를 구현하는 방법
               1) implements Runnable
               
    2) run() 메소드 재정의
                  3) Thread 객체 생성 후 Runnable 인터페이스를 구현한 객체를 인자로 전달
                  4) start() 메소드 호출
     
    멀티스레드는 네트워크 서비스나 안드로이드 어플리케이션을 개발할 때 사용 가능

    24. 그 외의 클래스

    하나의 .java 파일에 여러 개의 클래스 선언이 가능하며, 각각의 .class 파일로 컴파일된다.
     - 단, public 접근제한자는 파일 명과 동일한 클래스에만 붙일 수 있다.

     

    인스턴스 참조 값은 클래스 명(패키지 경로 포함)과 10진수의 해쉬 코드를 16진수로 변환한 값이다.

     

    Object
     - 모든 클래스는 Object 클래스를 최상위 클래스로 상속받기 때문에 아무런 멤버를 선언하지 않았어도 Object 클래스의 필드와 메소드를 호출할 수 있다.
     - getClass() : 클래스 이름 출력
     - hashCode() : 객체의 해쉬 코드 출력
     - toString() : 객체의 인스턴스 참조값 출력, 특정 클래스에서는 오버라이딩하여 문자열을 출력하기도 함(String 등)

     

    String
     -  String 객체가 생성된 다음부터는 메모리(heap)에 저장된 값을 직접 수정하지 못하기 때문에 값을 복제한 후 필요한 부분만 변경하여 새로운 메모리에 할당해준다. (해쉬 코드가 최초 생성 당시와 다른 것으로 확인 가능)

     

    StringBuilder

     - 문자열을 복제하지 않고 바로 문자열 수정 가능
     - 처음에 주어진 저장 용량을 벗어나는 경우 자동으로 용량이 늘어난다.
     1) append() : StringBuilder 변수 뒤에 문자열 추가
     2) insert() : 특정 index에 문자열 삽입
     3) delete() : 특정 인덱스 구간의 문자열 삭제
     4) reverse() : 문자열 역전
     
    Wrapper
     - 기본 타입에 대응되는 참조 타입 (int → Integer 등)
     - Wrapper 클래스는 객체와 기본 자료형 간 변환이 자유롭다.
      1) 오토박싱(auto boxing) : Wrapper 타입 변수에 값 저장 가능
      2) 오토 언박싱(auto unboxing) : 기본 자료형에 Wrapper 클래스 값을 바로 저장 가능
     
    Calender
     - 날짜 관련 데이터를 다룰 때 사용
     - 객체는 new 연산자가 아닌 getInstance() 메소드로 생성한다. (싱글톤 방식)
    public static void drawCalnender(int year, int month) {
    	Calendar cal = Calendar.getInstance(); // 싱글톤 패턴 객체 생성
    
    	int sweek = 0; // 그 달의 첫 번째 날의 요일 (일: 1, 월: 2, 화: 3, 수: 4, 목: 5, 금: 6, 토: 7)
    	int eday = 0; // 마지막 날짜
    
    	cal.set(year, month - 1, 1); // 1월 달이 0부터 시작
    
    	sweek = cal.get(Calendar.DAY_OF_WEEK);
    	eday = cal.getActualMaximum(Calendar.DATE);
    
    	System.out.println("   " + year + "년 " + month + "월");
    	System.out.println(" 일 월 화 수 목 금 토");
    
    	for (int i = 1; i < sweek; i++) { // 첫째 날이 출력되기 전에 공백 출력
    		System.out.print("   ");
    	}
    
    	for (int d = 1, w = sweek; d <= eday; d++, w++) { // 1일부터 마지막 날짜까지 출력
    		System.out.print(d < 10 ? "  " + d : " " + d); // 날짜 자릿수 맞추기(1의 자리 날짜는 공백 2칸, 10의 자리 날짜는 1칸)
    		if (w % 7 == 0)	System.out.println(); // 토요일이면 줄바꿈
    	}
    }
     
    라이브러리
    사용자 라이브러리 생성(.jar; Java Archaive file)
    1)
    외부 사용자 라이브러리 추가

    25. Collection

    1) Set
       1. 중복된 데이터를 허용하지 않음.
       2. 저장 순서를 기억하지 않음.
     

    2) List

       1. 중복된 데이터 허용
       2. 저장 순서 유지

     

    3) Map
     : 데이터를 키(key)와 값(value) 쌍으로 저장

     

    제네릭(Generic) : 데이터 타입을 일반화. <>로 표시


    26. 프로퍼티 에디터

    이클립스에서 .properties 파일에 한글 입력 시 한글이 그대로 표시되지 않고 코드가 출력되는 현상 발생

     

    이클립스 플러그인 설치 화면 : Help > Install New Software

     

    프로퍼티 에디터 플러그인 다운로드 주소

     Name: Properties Editor

     Location: http://propedit.sourceforge.jp/eclipse/updates  

     

    properties 파일은 key와 value 사이에 공백없이 작성한다. (앞뒤 공백도 마찬가지)
     ex) 정대만=010-1111-1111


    27. 스트림(Stream)

    1) 데이터가 이동하는 통로

    2) 스트림의 종류

     1. 바이트 기반 스트림 - InputStream, OutputStream (이미지, 동영상, 문자)

     2. 문자 기반 스트림 - Reader, Writer (오로지 문자)


    javadev_20230210.zip
    0.13MB


    웹 환경설정

    1. 톰캣(tomcat) 다운로드 및 연결
     : 웹 어플리케이션 서버(WAS : Web Application Server)

      서블릿 컨테이너(웹 컨테이너) : 서블릿 생성하고 소멸하는 것까지 관리
      http://apache.org

     

     서버 추가

      다운로드 받은 톰캣 버전을 선택하고, 톰캣 폴더 경로 지정

     

     Dynamic Web Project 생성
      - web.xml 생성 체크
      - web.xml를 생성하지 않은 경우 Deployment Descriptior(마우스 오른쪽 버튼) > Generate Deployment Descriptor Stub 클릭

     

    2. 인코딩 변환 : URIEncoding="UTF-8"
     Window > Preperence > Web > Html Files, CSS Files, JSP Files > Encoding을 UTF-8로 설정

     

    3. 실행 브라우저 : 크롬
     Window > Web Browser > Chrome으로 설정

     

    4. get, post 방식으로 한글 테스트
     get 방식
      - URL에 전달하는 값이 노출됨(보안성 취약)
      - 글자수 제한 있음

     post 방식
      - 외부(URL)에 노출되지 않음
      - 글자수 제한 없음

      - html의 <body> 태그 안에 감쳐줘 전달

     

     post 방식 사용 시 UTF-8 인코딩 filter 추가
      - web.xml 파일에서 다음 코드 추가(톰캣 서버 라이브러리 참조)

      <!-- 필터 등록 -->
      <filter>
      	<filter-name>set character encoding</filter-name>
      	<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
      	<init-param>
      		<param-name>encoding</param-name>
      		<param-value>UTF-8</param-value>
      	</init-param>
      </filter>
      <filter-mapping>
      	<filter-name>set character encoding</filter-name>
      	<url-pattern>/*</url-pattern>
      </filter-mapping>

     

    5. db계정 생성 및 연결

    명령 프롬프트에서 sqlplus 실행

     

     관리자 계정으로 접속(sys 또는 sysdba)

    conn sys/[패스워드]@localhost:1521/xepdb1 as sysdba

     

     사용자 계정 추가

    create user [계정 명]
    identified by [패스워드]
    default tablespace users
    quota unlimited on users
    temporary tablespace temp;

     

     생성한 계정에 권한 부여

    grant connect, resource to [계정 명];

     

     권한 부여한 사용자 계정으로 접속

    conn [계정 명]/[패스워드]@localhost:1521/xepdb1

    SQL Developer 다운로드
     oracle.com 에서 로그인 후 SQL Developer 다운로드
      Resources > Downloads > Developer Downloads > Developer Tools > SQL Developer

     

     사용자 계정 삭제

    drop user [계정 명] cascade;

     

    Connection 연결 테스트

     JDBC(Java Database Connectivity)
      : 자바를 이용해서 데이터베이스 프로그래밍를 쉽게 할 수 있도록 제공된 API

     

    web.xml
     <welcome-file> 태그 : 주소에 default 파일을 입력하지 않았을 때 자동으로 찾아갈 파일
      ex) 네이버의 default 파일은 www.naver.com/index.html 이지만 www.naver.com 만 입력해도 동일한 화면이 나온다.

     

    <br> 태그 : 줄 바꿈


    서블릿(Servlet)

    1) 클라이언트의 요청을 받아 처리 및 응답해주는 자바 객체

    2) 만드는 법 : HttpServlet을 상속 받는다.

     상속 받아야 할 메소드

      service()

      doGet()

      doPost()
     

     Java Resource 하위에 Servlet 선택하여 servlet 생성한다.


    webdev_20230210.war
    4.51MB

    'Study' 카테고리의 다른 글

    JAVA WEB - 6  (0) 2023.02.15
    JAVA WEB - 5  (0) 2023.02.14
    JAVA WEB - 4  (0) 2023.02.13
    JAVA WEP - 2  (0) 2023.02.10
    JAVA WEP - 1  (0) 2023.02.10
Designed by Tistory.