• 티스토리 홈
  • 프로필사진
    chantleman
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
chantleman
  • 프로필사진
    chantleman
    • 분류 전체보기 (328)
      • 프로젝트 (1)
      • react (2)
      • 코딩테스트 (133)
        • lv0 (101)
        • lv1 (10)
        • lv2 (7)
        • lv3 (15)
      • 오류 (14)
      • 리눅스 (5)
      • 자바 (75)
        • spring (7)
      • js (35)
      • 오라클 (39)
        • PLSQL (3)
      • cs (5)
      • 도커 aws (3)
      • 단축키 (3)
      • 나만봐 (0)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • react, spring boot 연동
        2024년 11월 26일
        • chantleman
        • 작성자
        • 2024.11.26.:29

         

         

        vscode에서 react 프로젝트 만들고

        npm run build

         

        로 배포하면 dist 폴더가 생성된당

         

         

        dist폴더에는 세개의 파일이 있는데 그 파일들을 spring boot의 static 폴더에 넣으면 됨

         

         

        node server와 spring(tomcat) server 두 개로 돌려서 테스트할 때는 port번호가 달라서 cors 에러가 발생한당 

        → spring에서 @CrossOrigin("프론트 경로")으로 서버를 연결시킴

         

        react에서 설정한 포트번호는 vite.config.js에서 설정함

         

        vite.config.js  ↓

        import { defineConfig } from 'vite'
        import react from '@vitejs/plugin-react'
        
        // https://vite.dev/config/
        export default defineConfig({
          plugins: [react()],
          server:{
            port:5173
          }
        })

         

         

         

        spring controller  ↓

        @Slf4j
        @RestController
        @RequestMapping("/habin")
        @CrossOrigin("http://localhost:5173") 
        public class JiyoungController {
        	private static List<String> suminFriends = new ArrayList<>();
        	
        	@PostConstruct
        	void hiphapMG() {
        		for(int i=1;i<=10;i++) {
        			suminFriends.add("수민 친구"+i);
        		}
        	}
        	
        	@GetMapping("/friends")
        	public List<String> getSumin6(){
        		return suminFriends;	
        	}	
        }

         

         

         

        react에서는 axios로 springboot의 포트번호를 설정해서 연결한당

        function App() {
          const [frds, setFrd] = useState([]);
        
          useEffect(()=>{
            axios.get("http://localhost:8080/habin/friends").then(resp=>{
              console.log("하빈체크: ", resp.data);
              setFrd(resp.data); //서버에서 준 데이터로 set
            })
          },[])

         

         

         

         

         

        App.jsx 전체 코드  ↓

        import styled, { css } from "styled-components"
        import axios from 'axios'
        import { useEffect, useState } from "react"
        
        const HabinContainer = styled.div`
          width:300px;
          height:300px;
          margin:10px auto;
          background-color:pink;
        `
        
        const JinwooTitle = styled.h1`
          background-color:black;
          color:yellow;
          font-size:2em;
        `
        
        const YjungButton = styled.button`
          width:100px;
          height:100px;
          border-radius: 30px ;
          background-color:skyblue;
          color:white;
          font-size:1.5em;
        
            ${props =>
            props.$primary &&
            css`
              background: black;
              color: white;
            `};
        
        
            ${props =>
            props.$secondary &&
            css`
              background: hotpink;
              color: white;
            `};
          `
        
        function App() {
          const [frds, setFrd] = useState([]);
        
          useEffect(()=>{
            axios.get("http://localhost:8080/habin/friends").then(resp=>{
              console.log("하빈체크: ", resp.data);
              setFrd(resp.data); //서버에서 준 데이터로 set
            })
          },[])
        
        
          return (
          /*   
            원래는 이런 모양
            <div>
              <h1>수민 만만세</h1>
            </div>
          */
        
            <HabinContainer>
              {
                frds.length && frds.map((frd,index) =>(<h1 key={index}>{frd}</h1>)) 
              }
              <JinwooTitle >수민 만만세</JinwooTitle>
              <YjungButton>눌렁</YjungButton>
              <YjungButton $primary>눌러방</YjungButton>
              <YjungButton $secondary>눌러바방</YjungButton>
            </HabinContainer>
          )
        }
        
        export default App

         

         

         

         

        하지만 

        서버 두개가 아니라 spring 서버 하나만 돌리면 상관없음!

        728x90

        '자바 > spring' 카테고리의 다른 글

        스프링 bean 등록하기 AOP  (0) 2024.12.29
        websocket  (0) 2024.11.18
        파일업로드  (0) 2024.11.14
        @RequestParam, @RequestBody, @ResponseBody  (6) 2024.11.12
        spring 설치 및 초기 설정  (3) 2024.11.08
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바