이둘은 일단 단편적으로 말해서 RequestBody는 데이터형식 json형식 데이터들을 받아올때 좋다고합니다.
ModelAttribute는 html 폼형식의 데이터를 받아올떄 사용하면 좋다고합니다. 
 
아래는 간단한 product post하는 메서드입니다.

@PostMapping("/Products/Post")
    public ResponseEntity<?> PostProducts(@RequestBody Product product,HttpServletRequest request) {
        HttpSession session = request.getSession(false);
        if (session == null || session.getAttribute("user") == null) {
            // 세션에 사용자 정보가 없으면 로그인 페이지로 리다이렉트
            return ResponseEntity.badRequest().build();
        }
        productService.save(product);
        return ResponseEntity.ok().build();
    }

RequestBody Product를 받아서 했습니다.
왜냐하면 vue에서 axios는 json형식으로 데이터를 보내는게 일반적이기 때문입니다.
저도 사실 vue는 잘 모릅니다 ㅎㅎ 하지만 프론트 프레임워크를 이해한다면 어떤상황에 데이터를 받을지 알수 있겠죠!
vue:

 const config = {
        headers: {
          'Content-Type': 'application/json'
        }
      };
      try {
        this.axios.post('/Products/Post', data, config)
          .then((response) => {
            this.$router.go(0);
            this.$alert('상품', '등록 성공');
          })
          .catch((error) => {
            this.$alert('상품', '등록 실패');
          });
      } catch (error) {
        // 예외 처리
        console.error(error);
      }

 
폼형식이면 @ModelAttribute 로 Product를 파라미터로 잡아야겟죠! 

@PostMapping("/Products/Post")
    public ResponseEntity<?> PostProducts(@ModelAttribute Product product,HttpServletRequest request) {
        HttpSession session = request.getSession(false);
        if (session == null || session.getAttribute("user") == null) {
            // 세션에 사용자 정보가 없으면 로그인 페이지로 리다이렉트
            return ResponseEntity.badRequest().build();
        }
        productService.save(product);
        return ResponseEntity.ok().build();
    }

아래는 html form 형식의 데이터 전송입니다.

<form action="/Products/Post" method="POST">
  <input type="text" name="name" placeholder="상품명">
  <input type="number" name="price" placeholder="가격">
  <input type="submit" value="전송">
</form>

 

' > Spring' 카테고리의 다른 글

view Resolver란?  (0) 2023.09.03
HTTP 응답 방식  (0) 2023.09.02
spring 구조  (0) 2023.07.03
스프링 mvc 패턴 이해  (0) 2023.06.22
500 error java OutOfMemoryError  (0) 2023.06.21

디자인 패턴인 mvc와 어댑터 패턴을 이용하여 현재 스프링 프레임워크가 완성됨

 

세삼 느끼는거지만 이런 아이디어를 만든 개발자들이 정말 대단하다고 느낍니다. 

출처 

https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1&unitId=71208&tab=curriculum 

 

학습 페이지

 

www.inflearn.com

 

' > Spring' 카테고리의 다른 글

HTTP 응답 방식  (0) 2023.09.02
@RequestBody , @ModelAttribute 파라미터 어노테이션 사용방법  (0) 2023.07.05
스프링 mvc 패턴 이해  (0) 2023.06.22
500 error java OutOfMemoryError  (0) 2023.06.21
http서블릿  (0) 2023.06.20

일단 spring framwork는 굉장히 추상화가 많이 되어 있는 프레임워크입니다.
많은 사람들이 반복되는 작업을 없애고 프로그램들을 손쉽게 만들어서 개발한 프레임워크입니다.
음 이번 영상 보면서 느낀점은 대략적으로는 이렇게 흘러가겠지라고 예상했던부분들을 
조금더 구체적으로 알수 있는 계기가 되었습니다.
그리고 제가 조금 잘못 알고 있는사실들도 교정하는 계기가 되었습니다.
 
사실 시간이 좀 있으면 프레임워크를 다 뜯어보고 싶은데 .. 시간이 안나오네요. 
아마 이부분부터 처음 스프링 공부하시는 분들은 멘붕일수도 있겠네요.
다양성에 대한 이해와 추상화에 대한 이해도가 낮으면 상당히 어려울수 있습니다.
저도 그랬습니다. 정말 좋은 내용의 영상인듯했습니다.
아래 이미지 출처는 영상에 두었습니다.
 

 

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -

www.inflearn.com

 

' > Spring' 카테고리의 다른 글

@RequestBody , @ModelAttribute 파라미터 어노테이션 사용방법  (0) 2023.07.05
spring 구조  (0) 2023.07.03
500 error java OutOfMemoryError  (0) 2023.06.21
http서블릿  (0) 2023.06.20
Spring 프로젝트 시작하기방법  (0) 2023.06.20

회사에서 api 로그를 보여주는 웹을 개발하게 되었는데요.

log의 데이터가 10만건 이상의 text를 읽어주는 경우였습니다.
이때 bufferReader로 읽어서 string에 넣어주는건 상관없었는데.
hashmap에 string을 한줄씩 입력하다보니 OutOfMemoryError가 발생했습니다.
그래서 해결방안으로 bufferReader 라인을 읽은후에  hashmap에 그 보여줄 렌더링해서 보여줄 페이지의 크기( ex 1페이지당 100 줄)만 hashmap에 입력해서 OutOfMemoryError에러를 회피했습니다.
 

' > Spring' 카테고리의 다른 글

spring 구조  (0) 2023.07.03
스프링 mvc 패턴 이해  (0) 2023.06.22
http서블릿  (0) 2023.06.20
Spring 프로젝트 시작하기방법  (0) 2023.06.20
서버사이드 렌더링, 클라이언트 렌더링  (0) 2023.06.19

영상을 보는데 일단 아는 내용이어서 복습하는 의미로 영상을 시청했습니다.

혹시나 잊어버린게 있나 햇는데 다행히도 없었습니다.

 

요청, 응답 헤더를 볼수 있고요.

최근 회사에서 api프로젝트를 하면서  json으로 데이터로 받고 있어서 api문서를 보면서 개발하고 있습니다..

아래는 서블릿 헤더들입니다. 

참고하기 좋은 사이트:

https://velog.io/@allzeroyou/What-is-HTTP-message-Body

 

What is HTTP message Body?

HTTP(Hyper Text Transfer Protocol)대량의 정보가 있는 곳이라면 효율적인 처리를 위한 규칙이 존재하기 마련.예) 주식시장에서 거래를 하고 싶다면? 계좌, 거래일자, 거래 금액 등 규칙에 맞게 거래를 해

velog.io

 

' > Spring' 카테고리의 다른 글

스프링 mvc 패턴 이해  (0) 2023.06.22
500 error java OutOfMemoryError  (0) 2023.06.21
Spring 프로젝트 시작하기방법  (0) 2023.06.20
서버사이드 렌더링, 클라이언트 렌더링  (0) 2023.06.19
쓰레드  (0) 2023.06.19

기억용 ㅋㅋ
https://start.spring.io/

위의 링크에서
 

받아주시면됩니다.
IDE는 인텔리제이 입니다.
압축 푼후 인텔리제이서 엽니다
 
아래 그림과 같이 프로젝트를 열수잇습니다.

 Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.1.0.
설정 에러가 나서 보니까 
JAVA 11이 spring-boot3.0을 지원안한다고 하네요 
그래서

id 'org.springframework.boot' version '2.7.0'

으로 낮춰서 해결했습니다.
 
음 실행보니 
Cause: error: invalid source release: 17
에러가 발생했습니다.
 

설정 저장용 완료!
ㅋㅋ 역시 스프링은 설정이 어렵네요~
첫 프로젝트 시작 기억저장용이라고 생각하겟습니다 ㅎ
현재 회사 웹이 spring 3.0인데 기회되면 5.3버전으로  업그레이드 해보면 좋을듯하네요. ㅎ 할수잇겟죠 ㄷ

' > Spring' 카테고리의 다른 글

500 error java OutOfMemoryError  (0) 2023.06.21
http서블릿  (0) 2023.06.20
서버사이드 렌더링, 클라이언트 렌더링  (0) 2023.06.19
쓰레드  (0) 2023.06.19
서블릿  (0) 2023.06.19

아래 내용보면 기존 포트폴리오는 csr+ssr 같이 합쳐진 상태에서 개발하고 있어서 양쪽상황은 이해는 하고 있습니다.
다만 프론트 쪽은 아직 공부를 안해서 기본지식이 거의 바닥입니다.

 
서버사이드 렌더링:

클라이언트 사이드 렌더링:

' > Spring' 카테고리의 다른 글

http서블릿  (0) 2023.06.20
Spring 프로젝트 시작하기방법  (0) 2023.06.20
쓰레드  (0) 2023.06.19
서블릿  (0) 2023.06.19
web server , was(web application server) 차이  (0) 2023.06.19

이건 최근에 제가 포트폴리오 만드는 이슈도 좀 잇어서 기억하고요.
2023.04.27 - [웹/Spring vue 웹 개발] - spring vue 연동 게시판 03-deadlock 현상 발생

spring vue 연동 게시판 03-deadlock 현상 발생

음 지금 다 완성했는데 몇가지 문제가 좀 발생했어요 오류코드는 아래에 있습니다. 게시판글 등록이랑 데이터들은 잘 조회되는데 디테일 조회시 jdbc에서 db가 끊기는 현상이 발생합니다. 그래서

kwaksh2319.tistory.com

음 스레드는 이전에 정리한글이 있어서 
2020.12.13 - [프로그래밍언어/JAVA] - Thread

<JAVA>Thread

Os 수업을 들었다면 알거라고 생각하지만 한번더 정리하는 개념으로 Process 실행중인 프로그램OS로부터 메모리르 할당 받음 Thread실제 프로그램이 수행되는 작업의 최소 단위하나의 프로세스에는

kwaksh2319.tistory.com

웹방식 자체가 단일 스레드로 돌아갈수 없는 구조입니다.
 
쉽게 설명하면 
단일 스레드 환경이고 10명의 사람이 로그인 접속을 한다고 가정하겠습니다,
어떤 특정 한사람이 로그인 로직 중에 문제가 발생해서 스레드의 대기 상태가 걸리면
다른 9명의 사람들은 계속해서 대기상태에 있어야합니다. 그리고 실제로 많은 사람의 숫자들이 접속한다고 가정하면 그 처리를 하나씩 해줘야하니 엄청나게 느리겠죠.
 
아래 그림은 스레드를 200개를 가지고 있는 스레드 풀입니다. 즉 요청자가 발생전에는 대기하고 있다가 누군가 요청을 시도하면 그 숫자에 맞춰서 여러요청을 동시에 실행할수 잇도록 실행해줍니다.
 
 

이미지 출처 
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -

www.inflearn.com

' > Spring' 카테고리의 다른 글

Spring 프로젝트 시작하기방법  (0) 2023.06.20
서버사이드 렌더링, 클라이언트 렌더링  (0) 2023.06.19
서블릿  (0) 2023.06.19
web server , was(web application server) 차이  (0) 2023.06.19
웹 로드맵  (0) 2022.09.13

+ Recent posts