본문 바로가기

✨ Back-end/etc23

[Spring] 구글 차트 DB에 넣어 Ajax로 시각화하기 https://developers-dot-devsite-v2-prod.appspot.com/chart/interactive/docs/gallery/piechart?hl=ko 시각화: 원형 차트 | Charts | Google for Developers 이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English 의견 보내기 시각화: 원형 차트 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 개요 SVG developers.google.com 구글 차트로 데이터를 시각화시켜보았다. 방법1. (Iterator 사용하고,, 어려운 방법이니 추천하지 않는다.) ajaxDemo3.jsp HTML 삽입 미리보기할 수 없는 소스 : Goog.. 2023. 9. 14.
[Spring] thymleaf에서 제공하는 th:object 와 th:field th:object 에서 사용할 객체를 지정한다. form에서 th:obejct="${item}" 을 지정하고, th:field="*{itemName}"과 같이 넣어주게 되면 id, name, value 속성을 모두 자동으로 만들어준다. th:object = "${item}" 이렇게 받아주고, form 안에 있는 태그들에게 th:field를 주고, *{객체에 있는 변수명} 을 작성해주면, id와 name 값이 지정된다. 이렇게 th:field="*{itemName}"을 작성해주고 나니, 실행된 웹 브라우저에서 id와 name 값이 itemName으로 세팅됐다. th:field는 id, name, value 값을 지정해주는데, 현재 input의 value 값은 비어있으므로 "" 이 출력된다. input 태그.. 2023. 9. 13.
[Spring] Ajax 다양한 방법, @ResponseBody와 @RequestBody 컨트롤러 HTML 삽입 미리보기할 수 없는 소스 jsp, js HTML 삽입 미리보기할 수 없는 소스 다음과 같은 코드가 있다. EX1) 버튼을 클릭하게되면, console창에 'basicAjax1/ajaxData1' 이라는 문자열을 출력해보고자 한다. js에서 jQuery를 이용해 컨트롤러로 한번 거친다음, 컨트롤러에서 단순 문자 'basicAjax1/ajaxData1' 를 갖고 돌아온다. 이 예제가 Ajax 데이터를 뿌리는 가장 기초적인 방법이다. Ex2) 두번째 버튼을 클릭하게 되면, Map 형태로 Console에 데이터들이 나타난다. JS 데이터를 JSON 형태로 만들어 컨트롤러에 넘겨주는데, 이때 data를 JSON.stringify(jsonValue)를 지정해야한다. data: JSON.str.. 2023. 9. 13.
[Spring] 타임리프 경로(URL) 설정 컨트롤러 model 객체를 이용해서 data1과 data2 라는 문자열을 param1과 2로 뷰에 뿌려주었다. 뷰 HTML 삽입 미리보기할 수 없는 소스 컨트롤러에서 받은 데이터를 타임리프로 받아 다시 컨트롤러에 던지는 방법에는 두 가지가 있다. 1. 쿼리 파라미터 @{ /hello(param1=${param1} , param2=${param2} ) } 이 데이터는 /hello?param1 = data1 & param2 = data2 로 표시될 수 있다. 경로 뒤에 소괄호( ) 를 붙여 데이터를 넣어주는 방식이고 쉼표( , ) 를 통해 & 역할을 대신해준다. 2. 경로변수 @{/hello/{param1}/{param2} (param1=${param1}, param2=${param2} ) } 이 데이터는 .. 2023. 9. 2.
[Spring] LocalDateTime.now( ) 써서 시간 구하기 LocalDateTime.now( ) 란? Java 8 이상에서 제공되는 클래스로 현재 로컬 시간을 얻기 위한 메소드이다. 이 메소드는 현재 로컬 시간을 시스템 시계로부터 얻어온다. 다양한 오버로드를 가지고 있어서 , 시계를 사용하지 않고 기본적으로 시스템의 디폴트 시계를 사용할 수 있다. 컨트롤러 LocalDateTime.now( ) 를 호출하면 현재 시간 정보가 포함된 LocalDateTime 객체가 반환된다. 이 객체를 사용해 날짜 및 시간 정보를 추출하고 원하는 형식으로 출력하거나 다양한 연산을 수행할 수 있다. 뷰 HTML 삽입 미리보기할 수 없는 소스 ${#temporals} 타임리프에서 제공하는 내장 객체중 하나이다. 이를 사용하면 날짜와 시간을 다루는 기능을 템플릿에서 수행할 수 있다. 2023. 9. 2.
@ModelAttribute사용하여 극한으로 코드 줄이기 @RequestParam으로 데이터를 하나하나 받아서 처리하는 과정은 너무나 불편하다. 그래서 @ModelAttribute를 사용했다. @ModelAttribute란? 컨트롤러 메서드에서 모델 객체를 생성하고 초기화하는데 사용한다. 주로 웹 애플리케이션의 폼 데이터를 처리하고 뷰에 데이터를 전달하는데 유용하다 1. 요청 파라미터 처리 여기서 사용된 @ModelAttribute는 Item 객체를 생성하고, 요청 파라미터의 값을 set~~~ 으로 지정해준다. 2. Model 추가 또한, Model에 @ModelAttribute로 지정한 객체를 자동으로 넣어주기 때문에, 왼쪽 사진과 같이 model.addAttribute를 사용하지 않아도 자동으로 매개변수의 이름으로 들어간다. (@ModelAttribute(.. 2023. 9. 2.
@RequiredArgsConstructor , @PostConstruct @RequiredArgsConstructor이란? 생성자를 자동으로 생성하는데 도움을 주는 것이 주요 목적이다. 단, 인스턴스 변수에 final 이라는 키워드가 붙은 필드에 대한 생성자를 생성한다. 왼쪽 사진 처럼 ItemRepository에 대한 생성자를 생성하는 것 대신, 오른쪽 그림처럼 코드 한줄로 바꿔줄 수 있다. @PostConstruct란? 빈(Bean) 초기화 작업을 수행하기 위해 사용된다. 이 어노테이션을 사용하면 객체가 생성된 후에 특정 메소드가 호출되도록 할 수 있다. 일반적으로 Java 클래스의 생성자는 객체가 인스턴스화 될 때 실행되지만, 객체를 완전히 초기화하고 준비하는 작업은 생성자 안에서 수행하기에는 적절하지 않을 때가 있다. 이 어노테이션을 사용하면 객체가 생성된 후에 원하는.. 2023. 9. 2.
스프링(Spring) MVC 패턴에 대한 개념과 동작 순서 스프링 MVC ( Model- View- Controller ) Pattern Model 어플리케이션 상태의 캡슐화 어플리케이션의 기능 표현 상태 쿼리에 대한 응답 변경을 view에 전달 View 모델에게 업데이트 요청 모델을 화면에 시각적으로 표현 사용자의 입력을 컨트롤러에 전달 컨트롤러가 View를 선택하도록 허용 Controller 사용자 액션을 모델 업데이트와 Mapping 응답에 대한 view를 선택. Spring MVC의 구성요소 DispatcherServlet (Front Controller) 클라이언트의 요청을 받는다. Controller에게 클라이언트의 요청을 전달한다. Controller가 리턴한 결과값을 View에게 전달하여 알맞은 응답을 생성한다. HandlerMapping 클라이언.. 2023. 8. 29.
@RestController와 @RequestMapping @PathVariable ( 경로변수 ) @RestController와 @Controller의 차이 @Controller 이렇게 하고 실행하면 Error resolving template [a], template might not exist or might not be accessible by any of the configured Template Resolvers 이런 오류가 뜬다. @RestController 하지만 @Controller 대신에 @RestController를 사용하게 되면, 위와 같이 페이지가 잘 나타난 것을 확인할 수 있다. @Controller 이 어노테이션을 사용한 클래스는 일반적으로 뷰 렌더링을 위해 사용되며, HTML을 포함한 다양한 타입의 응답을 생성할 수 있다. 주로 서버 사이드 렌더링을 위해 사용된다. @Res.. 2023. 8. 28.
로깅(Logging) 에 대해서, 왜 써야하는지? @Slf4j 어노테이션 로깅(Logging) 이란? 실행 동작을 일련의 기록인 로그(Log)의 생성을 통해 남겨놓는 일이다. 로그는 재현하기 힘든 버그나 성능에 대한 통계 등, 프로그램 동작에 있어서 유용한 정보를 제공하기 때문에 로깅 작업은 실제 서비스 개발에 필수적이다. 보통 데이터를 넘겨주고 받는 과정에서 컨트롤러에서 System.out.Println( ) 메서드를 이용해 컨트롤러에 데이터가 왔는지 체크를 하게 된다. 간편해서 이렇게 늘 사용해왔는데, 치명적인 단점이 존재한다. System.out.println( ) 메서드를 사용했을 때의 문제점 1. 성능 저하 System.out.println( ) 메서드는 내부적으로 newLien( ) 메서드를 호출하는데, 이는 sysnchronized 가 사용된다. sysnchron.. 2023. 8. 27.
[Spring] AOP 개념과 용어 8가지 AOP란? 관점지향 프로그래밍으로, 문제를 바라보는 관점을 기준으로 프로그래밍 하는 방법론 what when where 횡단관심사(cross-cutting-concerns) 흩어진 관심사를 Aspect로 모듈화하고 핵심적인 비즈니스 로직에서 분리해 재사용하는 것이 AOP다. 어떤 클래스의 어떤 메소드가 실행되기 전/ 후에 다른 기능을 수행할 수 있는 코드를 캡슐화 하는것이다 즉, 비 기능적 요구사항이 핵심 애플리케이션 코드에 나타나지 않도록 캡슐화하는 것. 목적 : 공통 기능 관련 로직(로깅, 트랜잭션 관리, 보안 등)의 분리, 핵심로직 구현 코드 AOP 용어 어드바이스 ( Advice ) 조인포인트 ( JoinPoint ) 포인트 컷 ( PointCut) 애스팩트 ( Aspect ) 인트로덕션 ( In.. 2023. 8. 25.