1.정적 리소스

  EX) 웹브라우저 정적인  HTML,CSS,JS를 제공할때 정적 리소스 사용

   정적 리소스란?

    웹서버에 저장되어 변하지않는 리소스

    /static, /resource, /public 

2.뷰 템플릿

   웹 브라우져에 동적인 HTML을 제공할떄는 뷰탬플릿

   /templates/response 

3.HTTP 메시지

   HTTP API를 제공하는 경우에는 HTML이 아닌 데이터만 전달, 즉 HTTP 메세지 바디에 JSON 형식으로 데이터를 보냄

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

 

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

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

www.inflearn.com

 

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

HTTP 메시지 컨버터란?  (0) 2023.09.03
view Resolver란?  (0) 2023.09.03
@RequestBody , @ModelAttribute 파라미터 어노테이션 사용방법  (0) 2023.07.05
spring 구조  (0) 2023.07.03
스프링 mvc 패턴 이해  (0) 2023.06.22

이둘은 일단 단편적으로 말해서 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

+ Recent posts