@Target, @Retention Spring 에서는 Annotation 사용에 대한 기능을 상당히 많이 제공하고 있습니다. 주로 사용하는 @Controller, @Service, @Repository 등 많은 Annotation 이 존재한다. 해당 Annotion 은 각 기능에 필요한 만큼 많은 기능을 내포하고 있으며, 내용을 잘 알지 못해도 필요한 기능만 쉽게 사용할 수 있도록 제공되어 진다. 하지만, 이러한 Annotation 에 대해 불필요한 내용이 포함되거나 필요한 내용이 있는 경우 Custom 을 할 경우가 존재한다. 그 중 로깅 등 AOP 설정할 때 주로 사용되는 @Target 과 @Retention 에 대해 알아보자. meta-annotaiton ? meta-annotation 은 다른 annotation 에서도 사용되는 .. @PostConstruct, @preDestroy @PostConstruct - 객체의 초기화 부분 - 객체가 생성된 후 별도의 초기화 작업을 위해 실행하는 메소드를 선언한다. - @PostConstruct 어노테이션을 설정해놓은 init 메소드는 WAS가 띄워질 때 실행된다. @PreDestroy - 마지막 소멸 단계 - 스프링 컨테이너에서 객체(빈)를 제거하기 전에 해야할 작업이 있다면 메소드위에 사용하는 어노테이션. - close() 하기 직전에 실행 -> ((AbstractApplicationContext) context).close() package com.in28minutes.learnspirngframework.example.f1; import jakarta.annotation.PostConstruct; import jakarta.annot.. Record 클래스 Java 14부터 도입된 Record 클래스는 불변 데이터를 객체 간에 전달하는 작업을 간단하게 만들어준다. Record 클래스를 사용하면 불필요한 코드를 제거할 수 있고, 적은 코드로도 명확한 의도를 표현할 수 있다라고 합니다. Record의 특징으로는 멤버변수는 private final로 선언된다 필드별 getter가 자동으로 생성된다 모든 멤버변수를 인자로 하는 public 생성자를 자동으로 생성한다 —> (@allargsconstructor와 유사하지만, record는 불변 데이터를 다루므로 생성자가 실행될 때 인스턴트 필드를 수정할 수 없다) equals, hashcode, toString을 자동으로 생성한다 기본생성자는 제공하지 않으므로 필요한 경우 직접 생성해야 한다 HelloWorldCon.. 간단한 Calc 만들기 Calculator.java public class Calculator { private int firstNum; private int secondNum; public Calculator() { super(); // TODO Auto-generated constructor stub } public Calculator(int firstNum, int secondNum) { super(); this.firstNum = firstNum; this.secondNum = secondNum; } public int getFirstNum() { return firstNum; } public void setFirstNum(int firstNum) { this.firstNum = firstNum; } public int.. Ajax, JSON 예제 Ajax(Asynchronous JavaScript and XML): 클라이언트와 서버가 페이지 새로고침 없이 데이터를 주고받도록 구현하는 방식 JSON(JavaScript Object Notation): javascript객체 문법을 따르는 문자기반의 데이터 포맷 문자열 형태로 존재 -> 네트워크를 통해 전송할 때 아주 유용 문자열에서 네이티브 객체로 변환하는 것을 파싱(Parsing) 네트워크를 통해 전달할 수 있게 객체를 문자열로 변환하는 과정은 문자열화(Stringification)이라고 한다. SampleDto.java public class SampleDto { private String name; private int age; public SampleDto() { super(); //.. MVC 패턴(Model 2) MVC 패턴: Model, View, Controller 의 합성어로 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴 Model : 백그라운드에서 동작하는 로직 처리 View: 사용자가 보게 될 결과 화면 출력 Controller : 사용자의 입력처리와 흐름 제어 담당 모델 1방식과 모델2방식이 있는데 JSP개발자라면 모델 2 구조는 무조건 알아야 함. --Model1 방식 : 모델 1 구조는 사용자 요청을 JSP가 전부 처리함 --Model2 방식 모델 2 구조는 웹브라우저 사용자의 요청을 서블릿이 받아 서블릿이 View로 보여줄 것인지 Model로 보내줄 것인지 정해서 전송해 준다. 여기서 View 페이지는 사용자에게 보여주는 역할만 담당하고 실질적인 기능 부분은 Model이 담당 servlet(서블릿) 정리 예제 2 ServletTest3.java package com.gu.common; import java.io.IOException; import java.util.Calendar; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/test3") public class ServletTest3.. servlet(서블릿) 정리 예제1 servlet(서블릿) : 자바 플랫폼에서 동적인 웹을 개발할 때 사용하는 기반 기술로 웹에서 JAVA 프로그래밍을 할 수 있다. 사용자에게 요청(request)을 받아 요청한대로 처리해주는 doGet() 또는 doPost() 일을 처리한 후 처리 결과를 사용자에게 응답(response) 해준다. 1. 클래스는 HttpServlet을 상속받는다. 서블릿의 기본이 되는 것은 javax.servlet.http 패키지에 준비되어 있는 HttpServlet 클래스이다. 서블릿은 이 클래스를 상속하여 만든다. 2. 기본은 'doGet'과 'doPost' 메소드 클래스에 거의 필수 항목으로 제공되는 것은 'doGet'과 'doPost'메소드이다. 이들은 각각 HTTP 메소드인 GET/POST에 액세스할 때 실행된다.. EL 정리 예제 2 el_test1.jsp ${sessionScope.id} xxxScope는 생략가능 : 생략 시 작은 범위에서 큰 범위 순으로 자동 검색 ${id} : page -> request -> session -> application 파라미터 값 : request.getParameter("id") -> $(param.id) 쿠키 값: $(cookie.id) --%> el_test2.jsp 세션에 저장된 정보: ${sessionScope.id} //el_test1에서 세션에 저장한 id속성의 값을 불러옴 영역 생략 : ${id} // xxxScope는 생략가능 // 밑의 submit을 하면 el_test3.jsp로 제어됨 아이디 패스워드 el_test3.jsp 아이디: ${param.id} //el_test2에서.. EL 정리 예제 1 EL (Expression Language) : JSP 2.0 에 추가된 개념 값이 없는 변수(null)에 관대하며 형 변환을 자동으로 해줌. el_op.jsp -> EL연산자 ${1 + 2} // 3 ${1 - 2} // -1 ${1 * 2} // 2 ${1 / 2} // 0.5 ${1 % 2} // 1 ${1 > 2} // false ${1 = 2} // false ${1 JSTL 정리 예제 JSTL (JSP Standard Tag Library) : JSP 표준 태그 라이브러리 -> JSP페이지를 작성할 때 유용한 여러 커스텀 액션과 함수가 있는 라이브러리이다. JSTL.jsp // jstl.jar test : test : 결과 : 1 + 5는 6입니다 1 + 5는 50입니다. 1 + 5는 30입니다. 1 + 5는 50도 30도 아닙니다. 입력한 수의 합계 구하기 결과 이전 1 2 3 4 5 6 7 ··· 22 다음