반응형

공부/Java 16

[Java] 서블릿에서 JSP 페이지로 이동하는 방법 (sendRedirect와 RequestDispatcher)

[Java] jsp와 servlet 차이점과 친절한 설명까지 요약 정리 JSP (JavaServer Pages) Java 기반의 웹 애플리케이션 개발을 위한 기술 JSP는 웹 페이지를 동적으로 생성하는데 사용되며, HTML과 Java 코드를 혼합하여 웹 애플리케이션의 사용자 인터페이스를 개발하는 3mmmeee.tistory.com 혹시 Servlet과 JSP에 대한 설명이 필요하다면 이전 글에서 정리해놨으니 참고하시길 바란다. 서블릿에서 JSP 페이지로 이동하는 두 가지 방법이 있다. [1] 'response.sendRedirect("jsp경로");' 이 방법은 서블릿에서 값을 넘겨주지 않고 단순히 페이지만 이동하는 방법이다. "jsp 경로"는 JSP 페이지의 주소를 나타내며, 상대 / 절대 경로 모두 ..

공부/Java 2023.09.20

[Java] jsp와 servlet 차이점과 친절한 설명까지 요약 정리

JSP (JavaServer Pages) Java 기반의 웹 애플리케이션 개발을 위한 기술 JSP는 웹 페이지를 동적으로 생성하는데 사용되며, HTML과 Java 코드를 혼합하여 웹 애플리케이션의 사용자 인터페이스를 개발하는데 효과적 특징 동적 웹 페이지 생성 : JSP를 사용하면 동적 웹 페이지를 생성할 수 있다. 웹 페이지 내 Java 코드를 포함해 데이터베이스와의 상호작용, 사용자 입력 처리 및 다양한 비즈니스 로직을 수행할 수 있다. HTML과의 통합 : JSP 페이지는 HTML 문서 안에 Java 코드를 포함할 수 있기 떄문에 웹 디자이너와 개발자가 협력해 사용자 인터페이스를 디자인하고 개발 가능하다. Servlet과의 연동 : 서블릿은 컨트롤러(Controller) 역할을 하고 JSP는 뷰(v..

공부/Java 2023.09.20

[Java] 람다식(Lambda)

Java 8 버전부터 함수형 프로그래밍을 지원하기 위해 람다(lambda), 스트림(Steam)이 도입되었다. 람다와 스트림을 사용하면 함수형 프로그래밍 스타일로 자바 코드를 작성할 수 있다. 굳이 사용하지 않아도 자바 코드 작성 시 어려움은 없겠지만, 작성해야 하는 코드의 양이 줄어들고 읽기 쉬운 코드를 만들 수 있다는 장점이 있다. 람다(Lambda) 익명 함수(anonymous function)를 의미하며, 메서드를 하나의 식으로 표현한 것 모든 메서드는 클래스에 포함되어야 하므로 클래스도 새로 만들어야 하고 객체도 생성해야 메서드를 호출할 수 있지만, 람다식은 이 모든 과정없이 람다식 자체만으로 이 메서드의 역할을 대신 할 수 있다. int calculator(int a, int b) { retu..

공부/Java 2023.09.18

[Java] 싱글톤(Singleton) 패턴은 단 한 개의 객체만 생성해 사용하고 싶을 때!

싱글톤 패턴 싱글톤은 단 하나의 객체만을 생성하게 강제하는 디자인 패턴이다. 생성자를 private 접근 제한해 외부에서 new 연산자로 생성자를 호출 못하도록 막는 것이다. 외부에서 마음대로 객체를 생성 못하는 대신, 싱글톤 패턴이 제공하는 정적 메소드를 통해 간접적으로 객체를 얻을 수 있다. public class 클래스 { private static 클래스 singleton = new 클래스(); // 1. public static 클래스 getInstance() { // 2. return singleton; } } private 접근 제한자를 붙여 외부에서 정적 필드값을 변경하지 못하도록 막은 다음, 정적 필드를 선언하고 미리 객체를 생성해 초기화 시킨다. 정적 필드값을 리턴하는 getInstan..

공부/Java 2023.09.12

[Java] HashMap과 HashSet 차이점

한눈에 보는 차이점 HashMap HashSet 정의 Map Interface 구현체 Set Interface 구현체 데이터 삽입 put() (key-value 형태의 한 쌍의 데이터를 저장) add() 데이터 저장 key-value 형태로 데이터를 저장 key 값으로 삽입되는 객체 자체를 저장 (속도가 느림) 중복 허용 중복 key X , 중복 value O (객체 자체를 저장하기 때문에) 데이터 중복 X null 값 key는 단 하나만 허용 / value는 중복 null 허용 단 하나의 null 값만 허용

공부/Java 2023.08.21

[Java] 정규표현식과 Pattern 클래스

정규 표현식 (Regular Expression) 문자열이 정해져 있는 형식으로 구성되어 있는지 검증할 때 사용 ex) 이메일, 전화번호 문자 또는 숫자 기호화 반복 기호가 결합된 문자열 Pattern 클래스 정규 표현식으로 문자열을 검증하는 역할 java.util.regex 패키지의 Pattern 클래스는 정규 표현식으로 문자열을 검증하는 matches() 메소드를 제공한다. 첫번째 매개값은 정규 표현식, 두번째 매개값은 검증할 문자이며 정규식이 제대로 작성됐다면 true, 잘못됐다면 false를 return한다. boolean result = Pattern.matches("정규식", "입력된 문자열");

공부/Java 2023.04.24

[Java] 예외 처리 코드 (다중 catch / 두 개 이상의 예외 처리 |)

예외 처리 코드 예외가 발생했을 때 프로그램의 종료를 막고 정상 실행을 유지할 수 있도록 처리하는 코드 예외 처리 코드는 try-catch-finally 블록으로 구성되며 생성자 내부와 메소드 내부에서 작성된다. try 블록에서 작성한 코드가 정상 실행되면 catch 블록은 실행되지 않고 finally 블록이 실행된다. try 블록에서 예외가 발생할 경우 예외를 잡기 위해 catch 블록이 실행되고 연이어 finally 블록이 실행된다. 예외가 발생하면 예외 객체가 catch 선언부의 예외 클래스 변수에 대입된다. finally 여기서 알아야 할 점은 예외가 발생하던 안하던 finally 블록은 무조건 실행된다는 것이다. 심지어 try 블록과 catch 블록에서 return문(메소드 종료) 사용을 하더라..

공부/Java 2023.04.12

[Java] 옆사람도 헷갈려하는 추상클래스와 인터페이스 차이점

매주 월요일, 목요일마다 회사 동기들과 Java 스터디를 진행하고 있는데 여주밀탱크로 불리는 사나이 영훈이의 내용이 좋아서 내가 찾은 정보를 더하여 어디 한번 쌈빡하게 정리해보고자 한다. ▶ 추상 클래스 추상 클래스는 관련성이 높은 클래스 간에 코드를 공유하고 싶은 경우 (부모-자식 관계) 공통의 필드나 같은 부모 클래스의 기능을 사용하거나, 공통으로 사용할 구현된 메소드가 필요할 때 사용한다. ▶ 인터페이스 인터페이스는 서로 관련성이 없는 클래스들이 인터페이스를 구현하게 되는 경우 다중 상속이 필요하거나, 구현 방식 정의 없이 추상화만 필요할 때 사용한다. 추상 클래스(abstract class) 인터페이스(interface) ㆍ다중 상속 불가능 ㆍ일반 메소드와 추상 메소드 모두 가능 ㆍ상속시 추상 메..

공부/Java 2023.04.10

[Java] 자바에서 말하는 라이브러리와 자바 표준 모듈 개념 정리 (Java.lang import 필요없는 이유)

라이브러리(Library) 프로그램 개발 시 활용할 수 있는 클래스와 인터페이스들을 모아놓은 것을 의미 JAR 파일에는 클래스와 인터페이스의 바이트코드 파일(~.class)들이 압축되어 있는데 특정 클래스와 인터페이스가 여러 응용프로그램을 개발할 때 공통으로 자주 사용된다면 JAR 파일로 압축해 라이브러리로 관리하는 것이 좋다. 라이브러리를 사용하려면 라이브러리 JAR 파일을 ClassPath(클래스를 찾기 위한 경로)에 추가해야 한다. [Build Path 설정창 여는 방법 1] 프로젝트 선택 → Build path → Configure Build Path [Build Path 설정창 여는 방법 2] 프로젝트 선택 → Properties → 'type filter text' 창에 Java Build P..

공부/Java 2023.04.10

[Java] 중첩 인터페이스

중첩 인터페이스 클래스의 멤버로 선언된 인터페이스 인터페이스를 클래스 내부에 선언하는 이유는 해당 클래스와 긴밀한 관계를 맺는 구현 객체를 만들기 위함이다. 외부의 접근을 막지 않으려면 public, A 클래스 내부에서만 사용하려면 private를 붙인다. 접근 제한자를 붙이지 않으면 같은 패키지 안에서만 접근이 가능하다. 위의 예제에서는 외부 접근이 가능하도록 public이면서 Button 객체 없이 사용 가능한 static 중첩 인터페이스로 ClickListener와 onClick 추상 메소드를 선언했다. Button 클래스에 ClickListener 타입의 필드와 setter를 추가해서 외부 setter를 통해 ClickListener 구현 객체를 필드에 저장할 수 있도록 한다. 10라인의 Clic..

공부/Java 2023.04.10

[Java] 생성자나 메소드 내부에서 선언되는 로컬 클래스(local class)

[Java] 클래스 내부에 선언하는 중첩 클래스 중첩클래스 클래스 내부에 선언한 클래스 클래스가 여러 클래스와 관계를 맺는 경우에는 독립적으로 선언하는 것이 좋으나, 특정 클래스만 관계를 맺을 경우에는 중첩 클래스로 선언하는 것이 3mmmeee.tistory.com public class A { // 생성자 A() { // 로컬 클래스 선언 class B { } // 로컬 객체 생성 B b = new B(); } // 메소드 void method() { // 로컬 클래스 선언 class B { } // 로컬 객체 생성 B b = new B(); } } 로컬 클래스는 생성자와 메소드가 실행될 동안만 객체를 생성할 수 있다. 로컬 변수(생성자 or 메소드의 매개변수 or 내부에서 선언된 변수)를 로컬 클래스..

공부/Java 2023.04.10

[Java] 클래스 내부에 선언하는 중첩 클래스

중첩클래스 클래스 내부에 선언한 클래스 클래스가 여러 클래스와 관계를 맺는 경우에는 독립적으로 선언하는 것이 좋으나, 특정 클래스만 관계를 맺을 경우에는 중첩 클래스로 선언하는 것이 유지보수에 도움이 된다. 또한 클래스의 멤버(속성을 표현하는 필드(field) / 기능을 표현하는 메소드(method))를 쉽게 사용할 수 있고 외부에는 중첩 관계 클래스를 감춰서 코드의 복잡성을 줄일 수 있다. 종류 선언 위치에 따른 분류 선언 위치 객체 생성 조건 멤버 클래스 인스턴스 멤버 클래스 class A { class B { ... } } A 객체를 생성해야만 B 객체를 생성 가능 정적 멤버 클래스 class A { static class B { ... } } A 객체를 생성하지 않아도 B 객체 생성 가능 로컬 클..

공부/Java 2023.04.09

[Java] 조건문 정리 (비전공자 관점의 if문·중첩 if문)

if문은 조건식의 결과에 따라 블록 실행 여부가 결정된다. 조건식에는 true 또는 false 값을 산출할 수 있는 연산식이나 boolean 변수가 올 수 있다. public class study { public static void main(String[] args) { int score = 95; // 성적이 90점 이상일 경우 합격 if(score >= 90) { System.out.println(score + "점은 합격입니다."); }else { System.out.println(score + "점은 불합격입니다."); } } } // [실행 결과] 95점은 합격입니다. 조건문이 여러 개인 if문도 당연히 존재하는데 else if는 상위 조건식이 false일 경우 평가되고, else if가 tr..

공부/Java 2023.03.30

[Java] 자바의 변수 선언

프로그램은 데이터를 메모리에 저장하고 읽는 작업을 빈번히 수행하는데 데이터를 어디에, 어떤 방식으로 저장할지 정해야 메모리 관리가 용이하다. 프로그래밍 언어는 이러한 문제를 해결하기 위해 변수를 사용한다. 변수(Variable) - 하나의 값을 저장할 수 있는 메모리 번지에 붙여진 이름 int age; // 정수(int) 값을 저장할 수 있는 age 변수 선언. int(타입) age(이름) 자바 소스 파일명(클래스명)은 대문자로 시작하는 것이 관례이지만, 변수명은 소문자로 시작하고 한글을 포함하지 않는 것이 관례이다. (길이 제한X) 변수가 선언되었다면 값을 저장할 수 있는데 우측 값을 좌측 변수에 대입하는 대입 연산자 '='를 사용한다. int value = 100; 변수에 값을 최초로 대입하는 행위를..

공부/Java 2023.03.29

[Java] 바이트코드 파일과 자바 가상 머신

출처 : 소스 파일(.java) 작성 후 컴파일을 해야 한다. javac(java compiler) 명령어는 소스 파일을 컴파일하는데 결과는 확장명이 .class인 바이트코드(byteCode) 파일로 생성된다. 자바 컴파일러에 의해 변환되는 코드의 명령어 크기가 1바이트라서 자바 바이트 코드라고 불린다. (윈도우, 맥OS, 리눅스 등 어떤 운영체제라도 동일하게 바이트코드 파일 생성된다.) 자바 가상 머신 바이트코드 파일 ( .class)을 특정 운영체제가 이해하는 기계어로 번역하고 실행시키는 명령어는 java이다. java 명령어는 JDK와 함께 설치된 자바 가상 머신(Java Virtual Machine)을 구동시켜 바이트코드 파일을 완전한 기계어로 번역하고 실행시킨다. 바이트코드 파일은 운영체제 상관..

공부/Java 2023.03.29
반응형