개발_웹 56

Java | 필터를 이용한 한글 인코딩

한글 인코딩 방법들 페이지마다 request, response 객체에 setEncoding 해주기 (코드의 중복, 비추천) Tomcat 서버 자체에서 인코딩 필터(Filter) 사용 (추천) 인터셉터(Interceptor) 사용 (추천, Spring Framework 사용시) 필터를 이용한 한글 인코딩 1) Filter을 생성 2) 어노테이션 추가 @WebFilter("/*") // 모든 페이지에 대해 필터 적용을 의미 3) 필드 작성 private static final String ENCODING = "UTF-8"; private static final String CONTENTS_TYPE = "text/html"; 4) doFilter() 메소드만 사용. 내용은 다음과 같이 request.setCh..

개발_웹/Java 2021.05.26

Java | 접근 지정자 (Access Modifier)

클래스의 멤버 각각에 외부에서 접근할 수 있는 범위를 지정 1. public (+) 공개 정도가 가장 높고 어디에서든 자유롭게 접근할 수 있다. 2. protected (#) 같은 패키지 내에서 접근이 가능하고 다른 패키지라도 상속 받은 클래스 내부에서는 사용 가능. 3. default (~) 같은 패키지 내에서만 접근이 가능하다. 아무런 접근 지정자도 없을 경우 자동으로 적용된다. 4. private (-) 동일 클래스 내에서만 접근이 가능한 가장 낮은 단계의 자유도를 갖는다.

개발_웹/Java 2021.05.19

Java | 컬렉션 (Collection)

About Collection & Generic… 여러 자료 구조들을 Generic 기법으로 구현해놓은 것 Generic은 타입이 정해지지 않은 틀로 C++의 templaate과 비슷하다. 가변 크기이기 때문에 고정 크기의 배열보다 객체들을 쉽게 삽입, 삭제, 검색하게 해준다. Collection의 요소로는 객체만 가능하다. 기본 타입은 Wrapper Class로 자동 Boxing되어 저장된다. , , 등은 '타입 매개 변수'로 Collection의 요소를 일반화시킨 타입이다. 특정 타입만 다루지 않고, 여러 종류의 타입을 사용할 수 있기 위해 사용한다. 컬렉션의 종류 ArrayList 중간에 추가, 삭제 시 배열로 하던 방식처럼 인덱스를 이동시킨다. 때문에 오버헤드가 많이 발생한다는 특징이 있다. 추가..

개발_웹/Java 2021.05.15

Java | 예외 처리의 3가지 방식

참고 2019.05.09 - [IT&프로그래밍/Java] - Java | 예외 처리 (try-catch, throw, throws) Java | 예외 처리 (try-catch, throw, throws) try-catch문 프로그램의 실행 중에 비정상적인 상황이 발생할 경우에는 실행이 중지되고, Exception 객체나 Error 객체가 생성됩니다. try-catch문은 예외(non runtime exception)가 발생할 수 있는 코드를 처리 zuyo.tistory.com 예외 처리의 3가지 방식 예외복구 (재시도) 예외회피 (throws) 예외전환 예외복구 (재시도) public void sampleMethod() { int maxRetry = 10; // 재시도 횟수 10회 while (maxRe..

개발_웹/Java 2021.05.15

Java | 업캐스팅, 다운캐스팅, instanceof

업캐스팅 서브클래스 객체를 슈퍼클래스 타입으로 변환하는 것. Person person = new Student(); List list = new ArrayList(); 자식클래스는 부모클래스를 내포하고 있기 때문에 부모클래스 객체에 넣을 수 있다. 이를 업캐스팅이라 한다. 업캐스팅을 하면 자식클래스의 멤버는 접근이 불가해지고, 부모클래스의 멤버만 사용할 수 있게 된다. 그러나 자식클래스가 부모클래스의 메소드가 오버라이딩 했다면, 오버라이딩된 자식클래스의 메소드가 호출이 된다. class Person { // 슈퍼클래스 String name; String id; public Person(String name) { this.name = name; } } class Student extends Person {..

개발_웹/Java 2021.05.11

Java | clone()으로 깊은 복사하기

clone() Object 클래스의 메소드로, 이 메소드가 호출된 인스턴스의 복사본(깊은 복사)이 생성되고 복사본의 참조 값이 반환된다. 클래스가 Cloneable 인터페이스를 구현(implements)하고 있어야 clone()으로 복사가 가능하다. 그렇지 않으면 clone()을 재정의 해도 CloneNotSupportedException이 발생한다. 객체 복사 예시 복사할 User 클래스이다. Cloneable 인터페이스를 구현하고, clone()을 재정의한다. User 객체 복사 시, 멤버 중의 Character란 클래스의 객체도 같이 복사해주도록 재정의한다. public class User implements Cloneable { private String id; private String pass..

개발_웹/Java 2021.05.02

Java | Java의 객체 직렬화 (Serialization)

직렬화(Serialization) 객체를 직렬화하여 전송 가능한 형태로 만드는 것을 의미한다. 객체들의 데이터를 연속적인 데이터로 변형하여 Stream을 통해 데이터를 읽도록 해준다. 주로 객체들을 통째로 파일로 저장하거나 전송하고 싶을 때 주로 사용된다. 직렬화 대상객체는 java.io.Serializable를 implements한 클래스 객체여야 하며, 다른 객체를 멤버변수로 갖고 있는 경우 그 객체들도 Serializable을 implements해야 한다. ※ SerialVersionUID private static final long serialVersionUID 직렬화를 하면 내부에서 자동으로 SerialVersionUID라는 고유의 번호를 생성하여 관리한다. 직렬화/역직렬화 시 이 UID 값이..

개발_웹/Java 2021.02.17

Java | Java에서 Swap 함수 구현 (Java의 call-by-reference)

Call-by-Value와 Call-by-Reference 1. call-by-value 메소드의 파라미터로 호출자(caller)가 제공한 값을 전달하는 방식입니다. 파라미터 값이 복사되어 전달되므로, 호출자의 값은 수정되지 않습니다. 자바는 call-by-value 방식을 따릅니다. 2. call-by-reference 메소드의 파라미터로 호출자(caller)가 제공한 값의 위치를 전달하는 방식입니다. 파라미터로 값의 참조가 전달되므로, 호출자의 값이 수정될 수 있습니다. 포인터가 없는 Java에서 Swap 함수를 구현하기 Java는 항상 call-by-value 를 사용한다. 메소드는 파라미터로 전달된 기본자료형의 값을 변경할 수 없다. C와는 다르게 포인터를 쓸 수 없었기 때문에 Java를 처음 공..

개발_웹/Java 2021.02.17