본문 바로가기

분류 전체보기298

5. 프로젝트 젠킨스로 배포 해보기 ㅁ 젠킨스- 젠킨스는 소프트웨어 빌드, 테스트, 배포를 자동화하는 오픈소스 CI/CD 도구입니다.     - 인스턴스 기존거는 선생님이 다 삭제했다.- 새로 만들어서 해본다. 인스턴스 시작을 누른다.  - 빌드할때는 꼭 도커 안써도 된다. 컨테이너 안쓰고 그냥 배포해도 된다.근데 그런 환경 구축하는게 훨씬 편하니까 도커를 설치한거다.    - 인스턴스 이름에 lsw-gdcampus-svr을 줬다.    - os는 우분투, ami는 2번째꺼 22.04를 선택했다.    - 이창이 뜨는데 그냥 변경 확인 누른다.    - 인스턴스 유형은 기본으로 선택되어 있는 t2.micro를 한다. - 새 키 페어 생성을 누른다.     - 키 페어 이름으로 lsw-gd-keypair를 줬다.- 키 페어 유형은 RSA, .. 2024. 12. 11.
4. 젠킨스로 배포 [6일차]  - 오늘은 어제 하던거 이어서 CI/CD하고 여러분 소스가지고 해볼거에요.       - ftp에서 저 2개를 가지고 왔다.      - aws ec2만들고나면 업데이트해주고 도커설치하고 이런걸 스크립트로 만들어놓은거에요.아예 처음 ec2 생성할때 이걸 포함시켜놓으면 아예 이상태로 만들어준다. 그럼 따로 설치할 필요가 없다.이거말고 더 필요한게 있으면 도커파일 만드는것처럼 파일 작업들(생성하면서 수행해야할 작업들)을 넣어주면된다.이게 쉘 스크립트다. 리눅스안에서 사용할수있느 ㄴ쉘스크립트다.- 맨 위의 #은 주석이아니라 이게 쉘스크립트라는걸 알려주는 포맷이다. - 위부터 명령 수업 쭉 하고, 마지막에 우분투 사용자가 sudo 명령 없이 할수있는것까지 했다.      - 이거 아셔야 해서.vpc.. 2024. 12. 11.
3. CI/CD - Jenkins, GitHub, Eclipse ㅁ CI/CD쪽하고 시간 남으면 AWS를 좀 더 본다.         - 젠킨스는 CI/CD도구다.CI는 지속적인 통합.CD는 지속적인 배포.를 의미한다. - 젠킨스말고 깃헙액션이란 것도 있다. CI/CD 도구는 ㅁ낳은데 젠킨스를 많이 쓰니까 젠킨스를 써본다.   - 젠킨스는 JDK17버전 이상을 써야 오류가 안뜸.11을 쓰면 오류가 나고 경고메세지가 뜬다.     - 윈도우에서 이클립스로 개발을 하고 깃허브에 올리면, 깃허브에서 젠킨스에다가 통지를 해준다.이렇게 통지하는거 가지고 WEBHOK이라 한다.- 기섷브에 PUSH하면 깃허브에 새로운 소스가 올라갈거고, 그럼 깃허브가 WEBHOK으로 젠킨스에 통지한다.그럼 젠킨스는 깃허브에 깃풀을 해서 소스를 땡겨온다. 그리고 빌드하고, 2, 3, 4한다. - .. 2024. 12. 10.
2. AWS EC2(우분투)에 배포하기 - https://gdu-cloud.signin.aws.amazon.com/console 에 접속하고 로그인한다. - stud_01~18 / !P@ssw0rd (숫자 0임)     - 인스턴스 시작을한다. - 모바엑스텀에서 접속한다.    - ec2를 누른다.     - 인스턴ㅅ ㅡ클릭   - 자기 이니셜-svr이 서버다. 왼쪾 체크박스 선택하고 인스턴스 상태보면 6개가 있는데 종료하기 누르면 삭제다. 인스턴스 시작을 누른다.    - 시작처리되었다고 뜬다.      - 요약 정보를 보면 ip가 이전과는 바뀌었을 거다.     ㅁ- 모바엑스텀에서 ec2를 킨다. - 모바 엑스텀에 기존에 퍼블릭 ipv4 dns를 햇는데 퍼블릭ipv4주소도, 퍼블릭ipv4 dns도 바뀌었다.그래서 바꿔줘야 한다.      .. 2024. 12. 10.
1. aws 개념 ㅁ - 지금까지는 컨테이너에 배포하는걸 해봤다.- 배포를 aws상에, 클라우드에 배포하는걸 해본다. 똑같다.- asw에 많은 서비스들이 있는데 다 알아볼 순 없다. 간략하게 aws가 어떤건지 봅시다.- 물리적으로 서버를 자체 전산실을 가지고 운영하는게 아니라 인터넷상에서 서비스하고 있는 가상의 네트워크 상에 서버도 만들고 네트워크도 만들고 여러가지 서비스들을 제공해주는 플랫폼이 클라우드 서비스다.전세계 곳곳에 인프라가 구축되어 있다. 그 위에 클라우드 서비스를 구축했다.      - 리전은 지역이다. - 가용 영역은 리전 안에 데이터센터들을 모아놓은 거다.데이터 센터는 실제 건물이 있고 그 안에 장비들이 들어가 있다. 네트워크 서버가 구축되어 있다.일반적인 데이터 센터를 생각하면 된다.그런 데이터 센터들.. 2024. 12. 10.
4. Dockerfile - Dockerfile을 이용해서 이미지를 생성한다.- docker pull로 이미지를 다운받고, 시작을 시켜놓고 그 컨테이너에 설정들을 하는데, 그 설정들을 미리 Dockerfile에 작성해둔다. - FROM, ARG 등의 지시자가 있다. 도커파일안에서 읽으면서 수행해야할 내용들을 지정해두는 명령이다.    - ubuntu 22.04를 base이미지로 해서 (22로바꿈 18에서)- apt-get update로 전체이미지 하고apt-get install -y apache2로 아파치 설치하고apt-get clean -y로 기존의 어쩌구 - expose80 80번 포트가 노출된다.- cmd는 아파치2ctrl이라는 명령어를 통해서 백그라운드로 실행한다. - ubuntu 22.04를 다운로드해서 아파치 설치된 .. 2024. 12. 9.
3. [4일차 시작]   ㅁ- 컨ㅌ네이너는 쉽게 가상서버다. 근데 애플리케이션에 동작하는ㄷ ㅔ필욯나 필수 파일들만 들어가 있는.애플리케이션이 동작하는ㄷ ㅔ필요한 파일들만 한 군데다가 집어놓고 격ㄱ리시켜놓은거다. - 버츄얼 박스에다가 여러 vm을 깔 수 있는 것처럼 여러 컨테이      - docker image ls 1번째 장점. 용량이 적은 걸 볼 수 있다. 경량이다.2번재 장점. 컨테이너 이미지를 만들 때ㅔ 우리가 필요한 것들을 다 집어놓고 설정을하고 그 이미질 ㅗ컨테이너를 ㅁ나들면 매번 환경설정을 해줄 필요가 없다. 환경설정을 매번 할 필요 없다.      - 도커는 컨테이너와 다르다.컨테이너는 리눅스 기술이다. 도커는 컨테이너를 제어하는 엔진이다. 컨테이너를 관리하는 플랫폼이다.도커 없어도 컨테이너는 .. 2024. 12. 9.
2. 이미지파일 다운&업로드 2024. 12. 9.
1. Docker 설명 [3일차 시작]    ㅁ 먼저 VirtualBox의 우분투를 '시작'으로 실행시킨다. 비밀번호도 입력했다.    ㅁ VirtualBox에 설치된 우분투 접속    - MobaXterm에서 VirtualBox에 설치된 우분투에 접속한다.     - 1, 2일차에는 로컬 리눅스 서버에 웹 애플리케이션을 배포하는 법을 배웠다.오늘은 컨테이너 관련 내용을 배운다.      - 컨테이너는 리눅스 기술이다.컨테이너는 서비스 구동에 필요한 파일들만으로 이루어진 컨테이너 이미지를 이용하여 동작시킨 가상서버다. - 컨테이너는 리눅스가 설치된 상태에서 리눅스 안에다가 공간을 만들어서 그 공간에 별도의 시스템처럼 가상화를 할 수 있는 기능이다. - 컨테이너는 서비스 구동에 필요한 파일만을 가지고 컨테이너를 만들기 때문에 전.. 2024. 12. 8.
11. 포트 번호를 바꿔서 접속해보기(WSL) ㅁ WSL에 포트 번호 바꿔서 접속해보기- 어제는 mvnw를 사용해 기본 포트로 빌드했었다.오늘은 포트를 80번으로 바꿔서 해본다.      ○ ls - 현재 디렉터리의 파일 및 폴더 목록을 출력하는 명령어다.   ○ cd guestbook - guestbook으로 이동한다.   ○ ls - 현재 디렉터리의 파일 및 폴더 목록을 출력하는 명령어다.  ○ history - 사용자가 이전에 실행한 명령어들의 목록을 출력하는 명령어다.   ○ cd src/main/resources - src/main/resources로 이동한다.   ○ nano application.properties - nano 편집기를 사용하여 application.properties 파일을 열고 편집하는 명령어다.        - se.. 2024. 12. 7.
10. 우분투에 오라클 설치하기(VM) ㅁ VirtualBox에 설치한 우분투에 디비로 오라클을 설치해본다.    - 어제 WSL에 설치한 우분투에 샘플 애플리케이션을 배포해봤다.그러려면 (1) DB가 있어야하고, (2) 개발환경과 동일한 jdk버전이 설치되어 있어야 한다. - 그리고 (3) 필요한 파일들(소스파일이나 jar 파일)을 가지고 빌드한다.우리는 소스파일을 메이븐으로 빌드했다.- 소스파일을 가지고 빌드해서 jar파일을 만들 때 maven이 필요하다. - (4) java 명령어로 jar파일을 동작시켜서 (6) 어제 접속까지 해봤었다.   - 웹 애플리케이션 서버는 HTTP 프로토콜을 처리할 때 기본적으로 8080(tcp) 포트를 사용한다.이 포트는 클라이언트 요청을 수신하는 역할을 한다.- application.properties 파.. 2024. 12. 7.
11. 이미지파일 다운&업로드 ㅁ 도커 설치   - 어제 wsl에 배포를 해봤기 때문에 이제 wsl은 닫는다.버츄얼박스 이용해서 도커내용을 학습할거다. aws도 일단 닫는다.192.168.10으로 시작하는 버츄얼박스에 설치되어있는 우분툼나 남겨놓는다.    - 구글에 docker install ubutnu      - https://docs.docker.com/engine/install/- 도커 데스크탑이 아닌 도커 엔진을 다운받아야 한다.      - 각각 배포판마다 조금씩 다르다. 으ㅜ린 ubuntu에 설치한다.    - apt라는 명령자체가 우분투에 저장하고있는 저장소에서 패키지를 다운받아서 설치하는ㄴ거다.그런데 도커라고하는 거는 최신 패키지가 우분투에 저장되어 있찌 않다. 우분투에 저장되어있긴한데 최신버전이 아니다. - 우분투.. 2024. 12. 6.
10. Docker 설명 ==========================================================================  [3일차 시작][1교시]    ㅁ      - VirtualBox의 우분투를 '시작'으로 실행시킨다. 비밀번호도 입력했다.- MobaXterm에서 VirtualBox에 설치된 우분투에 접속한다.      - 어제까진 로컬 리눅스에 배포하나는 내용ㅇ을 했다. 오늘은 컨테이너 얘기를 한다.        - 컨테이너는 리눅스 기술이다.리눅스가 설치된상태에서 리눅스 안에다가 어떤 공간을 만들어서 그 공간에다가 별도으 ㅣ시스템처럼 가상화를 할 수 있는 기능이다.- 컨테이너는 서비스 구동에 필요한 파일만을 가지고 컨테이너를 만들기 때문에 실제 리눅스 전체설치보다 용량이 훨씬 작다... 2024. 12. 6.
9. AWS EC2 인스턴스에 Nginx 웹서버 배포 및 보안그룹 설정 ㅁ WSL에 설치된 우분투에 접속한다.- EC2 인스턴스에 바로 접속하지 않고 WSL의 우분투에 접속하는 이유는, Windows에서 바로 SSH 접속을 시도할 경우 권한 설정이나 환경 설정에 문제가 생길 수 있기 때문이다.- 특히 Windows에서 PEM 키 파일을 사용할 때 권한 설정이 제대로 되지 않아 접속이 불가능할 수 있다.- WSL을 사용해서 리눅스 환경에서 쉽게 권한 설정을 하고, 이후 EC2에 접속하는 방식으로 진행한다.        - MobaXterm에서 WSL에 설치한 우분투로 접속한다. - d드라이브의 lsw-keypair.pem 파일을 드래그 앤 드랍으로 갖다놓는다.         ○ ls -l - 현재 디렉토리의 파일과 디렉토리 목록을 자세한 정보(권한, 크기, 수정 시간 등)와 .. 2024. 12. 5.
8. AWS EC2 인스턴스 생성과 접속 - aws에서 인스턴스 시작을 누른다. - 내가 원하는 사양, OS로 인스턴스(서버)를 생성할 수 있다.         - 이름에 lsw-svr을 작성한다. - -svr은 안써도 되긴 한다. 서버라는 표시하기 위해 붙여준거다.       - OS는 Ubuntu를 선택한다. - Amazon Machine Image(AMI)에서 버전은 2번째의 22.04를 선택한다. - 인스턴스유형은 t2.micro 그대로 둔다.  - 리눅스(우분투)를 WSL과 VirtualBox에 설치했다.이제 세번째로 aws에 설치한다.       - 반드시 키를 만들어줘야 한다. 키가 없으면 일반적인 방식으로는 접속이 불가능함.       - 키 페어 이름으로 lsw-keypair를 작성한다. - 키 페어 유형은 RSA로 한다. - .. 2024. 12. 5.
7. 개인키 변환(PPK -> PEM) 후 VirtualBox 우분투에 공개키를 추가하고 SSH 접속 ㅁ aws 사이트 접속  - https://gdu-cloud.signin.aws.amazon.com/console - 선생님이 준 위의 주소로 접속하고 sign in을 누른다.     - 로그인한다. 나는 stud_04다.- stud_01~18 / !P@ssw0rd (숫자 0임)         - 로그인에 성공하면 이렇게 aws 서비스에 접속되었다.- 본인 메일 계정으로 가입하면 1년 동안 정해진 시간동안 서비스를 쓸 수 있는 계정을 받는다.이 계정으로는 EC2에서 750시간 한도가 주어지며, 제공되는 사양도 상대적으로 낮다. - 왼쪽 위의 메뉴 아이콘을 클릭한다.       - 모든 서비스를 클릭한다.      - ec2를 누른다.- ec2가 aws에서 만든 가상서버명이다.       - 인스턴스가 서.. 2024. 12. 5.
6. 공개키/개인키 생성 ㅁ 키 생성 - 어제 WSL에 설치된 우분투에서 "ssh-keygen -t rsa -b 1024" 명령어를 사용해서 공개키와 개인키를 만들었다. - 키는 아무데서나 만들어도 상관없다. 어디에서 만들어도 상관이 없다.어쨌든 키는 만들면 개인키/공개키 한 쌍이나온다. - 개인키는 내가 가지고있고 공개키는 내가 접속하고자하는 시스템에 넣어주면 된다.       - MobaXterm에서 이번엔 VM에 설치된 우분투 세션에 접속한다.- 상단의 Tools 메뉴 - MobaKeyGen (SSH key generator)를 클릭한다.      - 어제 WSL에 설치된 우분투의 key를 만들 때는 명령어를 사용했는데, 여기서 Generate를 눌러서도 키를 만들 수 있다.- Generate를 누른다.       - Ge.. 2024. 12. 5.
5. SSH 인증 방식 ㅁ SSH와 텔넷 비교  (1) SSH(Secure Shell)- 원격 서버에 접속해 명령을 실행할 수 있는 보안 서비스.- 통신이 암호화되어 중간에 스니핑(도청)을 당해도 데이터가 노출되지 않는다.- 기본적으로 22번 포트를 사용한다.  (2) 텔넷(Telnet)- SSH와 동일한 목적의 서비스지만 암호화되지 않은 통신을 사용한다.- 중간에 스니핑 당하면 데이터가 노출되기 때문에 보안 문제로 거의 사용되지 않는다. 당연히 SSH를 쓴다.    ㅁ 포트와 프로토콜 - SSH : TCP 22번 포트 사용.- HTTP : TCP 80번 포트(암호화 없음).- HTTPS : TCP 443번 포트(암호화 지원).- 톰캣 : TCP 8080번 포트를 사용. - DNS: UDP 53번 포트(IP 주소와 도메인 이름.. 2024. 12. 5.
4. MobaXterm과 cmd로 우분투에 접속해보기 ㅁ 어제 리뷰(1~3) - 어제 WSL과 VirtualBox에 우분투를 깔았다.- WSL에 설치한 우분투와 버츄얼박스에 설치한 우분투, 이렇게 두개의 서버에 접속해본다.   (1) WSL에 설치한 우분투에 접속하기    - MobaXterm을 실행한다.- WSL에 설치한 우분투 주소인 172.24.92.208 (lsw) 세션을 클릭한다.       - 접속이 거부되었다. WSL 우분투가 실행되지 않아서 접속할 수 없다. - MobaXterm은 원격 서버가 실행 중이고, 접속 가능한 환경이 설정되어 있을 때 접속할 수 있는 터미널 프로그램일 뿐이다. - WSL에 있는 우분투를 먼저 실행하고 접속해야 된다.        - WSL에 설치한 Ubuntu를 실행한다.       ○ sudo service ssh.. 2024. 12. 5.
3. 가상화를 이용한 리눅스 설치 및 애플리케이션 배포 ㅁ 리눅스를 VM(Virtual Machine)에 설치한다.  ㅁ 가상화를 이용한 리눅스 설치 및 배포- 물리적 서버 없이 소프트웨어적으로 가상 환경에서 리눅스 운영체제를 실행하고 애플리케이션을 배포하는 방법이다. - 이 방식은 VMware, VirtualBox 등 가상화 소프트웨어를 사용하여 리눅스 서버를 생성하고,필요한 애플리케이션과 구성 요소를 설치해 배포를 진행한다. - 가상 환경은 물리적 자원에 구애받지 않고 서버를 손쉽게 복제, 확장, 수정할 수 있어 효율적이며,테스트 및 개발 환경을 구축하거나 실제 배포 시에도 자주 활용된다.      ㅁ ubuntu 다운로드 (https://releases.ubuntu.com/focal/)     - 빨간 박스를 클릭해서 다운받는다. 약 4gb.      .. 2024. 12. 4.
2. 로컬 리눅스에서 애플리케이션 빌드 및 배포 ㅁ ftp에 들어가서 guestbook.zip을 내 pc로 복사해서 가져온다.      - 내 pc로 가져온 guestbook.zip을 압축된 상태 그대로 MobaXterm으로 드래그한다.       - 드래그해서 가져온 후 ls를 쳐서 파일이 보이는지 확인한다.  - cmd 창은 닫으면 안된다. cmd 창을 닫으면 서버가 꺼진다.cmd 창이 꺼져버리면 시스템이 꺼지는 것이고, 꺼진 시스템에 접속은 불가능하다. - 만약 cmd 창을 껐다면 다시 검색에서 ubuntu를 찾아서 키고, sudo service ssh start를 한다.그래야 MobaXterm으로 접속할 수 있다.MobaXterm은 서버가 켜져있으면 접속하는 프로그램일 뿐이다.     ㅁ 참고(guestbook.zip 내용)   - 이렇게 생겼.. 2024. 12. 4.
1. 리눅스 설치 (WSL로 리눅스 설치) ㅁ 탐색기   - ftp://192.168.10.5를 입력한다.- 192.168.10.5는 선생님 컴에서 cmd로 ipconfig쳤을때 나오는 ipv4주소다. - 필요한 파일은 앞으로 여기에 둘테니 가져가면 된다.        - 우리가 개발한 애플리케이션을 사용자들이 들어와서 쓸 수 있게 하려면 어딘가에 노출(공개)시켜야 한다.이걸 배포과정이라고 한다.      ㅁ 서버는 윈도우, 유닉스, 리눅스 등 여러개가 있다. - 우리는 많이 쓰이는 리눅스 서버에 배포한다.- 개발은 윈도우에서 했다. 개발은 어디서하든 상관없다. - 첫번째로 로컬 리눅스(물리적인 서버)에 애플리케이션을 직접 배포하는 방식으로 해보고,두번째로 가상화 이용해서 리눅스를 설치하고 애플리케이션을 배포해본다.  - 리눅스 서버를 쓸 때 온.. 2024. 12. 4.
스프링 부트 프로젝트에 AOP로 트랜잭션 처리하기 ㅁ 하나의 서비스에 하나의 쿼리만 실행시, 쿼리가 성공적으로 수행되면 자동으로 스프링에서 커밋처리가 된다.- 그런데 하나의 서비스에 여러 dml문을 수행할 때가 있다.여러 dml문이 정상적으로 다 완료되었을 때만 커밋이 진행되어야 한다.중간에 하나라도 예외가 발생하면 rollback해서 모든 dml문들이 취소되어야 한다.   ㅁ 스프링 부트의 경우- ~ServiceImpl 클래스의 트랜잭션 처리가 필요한 메소드(여러개의 쿼리를 실행하는 메소드)들 위에 @Transactional을 붙인다.- 각 메소드 위가 아닌 클래스 위에 @Transactional을 붙이면 이 클래스 안의 모든 메소드에 트랜잭션 처리가 적용된다.    ㅁ - 스프링 부트에서 @Transactional처럼 내장된 AOP 기능을 사용할 때.. 2024. 12. 2.
Interceptor로 관리자 권한 체크하기 ㅁ Interceptor (정확히는 HandlerInterceptor)- servlet에서 특정 controller가 실행되기 전, 실행된 후에 낚아채서 실행할 내용을 정의할 수 있다.- 특정 요청을 할 수 있는 회원이 맞는지(로그인 여부 판단),특정 요청을 할 수 있는 권한이 맞는지(회원의 권한 체크) - preHandle(전처리 담당 메소드) : DispatcherServlet이 특정 Controller를 호출하기 전에 낚아채는 영역- postHandle(후처리 담당 메소드) : Controller에서 요청 처리 후 DispatcherServlet으로 뷰 정보가 돌아가는 순간 낚아채는 영역     ㅁ 현재 문제점    - 관리자 계정이 아닌 일반 계정으로 로그인해본다.      - 주소창에 http:.. 2024. 12. 1.
스프링 스케줄러를 사용해서 매일 밤 12시에 쿼리 실행하기 ㅁ 참고- https://moca7.tistory.com/333 스프링 스케줄러 글- https://moca7.tistory.com/340 스프링부트 스케줄러 글    ㅁ 스프링의 경우 (1) 매번 묵시적으로 실행시키고자 하는 작업들을 정의할 클래스를 만들기- 그리고 그 클래스를 빈으로 등록한다. 빈등록은 3가지 방법이 있었다. (2) 해당 클래스 내에 각 작업별 메소드를 작성하기- 반환형은 반드시 void여야 하고, 매개변수는 없어야 한다. 메소드명은 상관없다.- 메소드 위에 @Scheduled 어노테이션을 부여한다. (3) servlet-context.xml에서 스케줄링을 사용하기 위해 task를 추가하기     ㅁ 스프링 부트의 경우 - (3)번 대신 스프링 부트 프로젝트를 만들면 기본으로 만들어지.. 2024. 12. 1.
coolsms로 예약 신청 결과 문자로 전송하기 ㅁ coolsms란?- 기업 및 개발자를 위한 메시지 발송 플랫폼으로, SMS, LMS, MMS, 카카오 알림톡 등의 메시지를 안정적이고 빠르게 발송할 수 있는 API 서비스입니다. 이 API를 쉽게 사용할 수 있도록 다양한 프로그래밍 언어용 SDK(라이브러리)도 함께 제공합니다.   ㅁ coolsms 홈페이지- https://coolsms.co.kr/ 세상에서 가장 안정적이고 빠른 메시지 발송 플랫폼 - 쿨에스엠에스손쉬운 결제 전용계좌, 신용카드, 계좌이체 등 국내 결제 뿐만 아니라 해용신용카드로 한번의 카드번호 등록으로 자동충전까지 지원합니다. 전용계좌, 신용카드, 계좌이체 등 다양한 결제 방식coolsms.co.kr    ㅁ 순서 (1) 홈페이지에서 회원가입을 하고 본인 인증을 한다. (2) API.. 2024. 11. 30.
[문제] 예약 내역에서 비품이 안 보임 ㅁ 문제 발생   - 현재 예약 테이블에 예약 데이터가 비품 하나, 시설 하나 있는 상태다.(맨 위는 정적으로 임시로 박아놓은 데이터다.) - 화면에서 list를 받아서, classifcation이 "비품"이냐 "시설"이냐에 따라서 조건처리를 해서 화면에 뿌려주는데 이상하게 나온다.     ㅁ 원인    - ReservationDto를 다음 List를 조회해와서 model 객체에 담았다.- 그리고 List에서 ReservationDto를 꺼내서 이 예약이 비품 예약인지, 시설 예약인지 판단 후에 classification의 값을 담았는데, 계속 덮어 씌워져서 "비품" 예약도 "시설" 예약으로 조건처리되어서 분류, 번호, 이름을 못뽑고 있었다.     ㅁ 해결    - ReservationDto에 Stri.. 2024. 11. 27.
스프링 정리4 - 첨부파일 ㅁ  - 파일 업로드(1) 세팅의 attachment 테이블.- FILE_NO, FILE_PATH, ORIGINAL_NAME, FILESYSTEM_NAME 4개 컬럼에 추가적으로, REF_BOARD_NO 컬럼(참조 게시글 번호)이 있다.     - gdcampus 프로젝트의 attachment 테이블.- FILE_NO, FILE_PATH, ORIGINAL_NAME, FILESYSTEM_NAME 4개 컬럼에 추가적으로,EQUIP_NO, APPR_NO, UPLOAD_DATE, REF_TYPE 컬럼이 있다.     [파일 업로드(2) 한 개의 첨부파일 업로드 - https://moca7.tistory.com/299 ] ㅁ- 첨부파일을 선택하는 순간 10mb를 초과하면 alert를 띄우면서 막는다.화면단에서 유.. 2024. 11. 25.
[문제] 나갔다 들어오면 채팅이 안보임 ㅁ 문제 발생    - user1과 user2가 채팅방 1에 접속해서 서로 메세지를 보냈다. 지금은 정상적으로 메세지가 잘 보인다.        - 문제는 user1이 다른 채팅방을 갔다가 다시 이전에 있던 채팅방으로 돌아와서 메세지를 보내면, 계속 채팅방 1에 접속해있던 user2는 그 메세지가 보이지만 user1은 자기 메세지도 상대가 보낸 메세지도 화면에 보이지 않는다.       ㅁ 원인  - 맨 처음에는 채팅방 1에 연결되어 있는 세션이 2개다.    - user1이 다른 방에 갔다가 다시 채팅방 1로 돌아와서 메세지를 보낸 경우, 현재 채팅방 1에 연결되어 있는 세션이 1개다.user2의 세션은 남아있지만 user1의 세션은 제거되고 다시 추가가 되지 않고 있다.      ㅁ 해결 @Requi.. 2024. 11. 19.
스프링 정리3 - AJAX ㅁ ajax는 forward도 redirect도 아니다.- ajax 요청은 forward도, redirect도 하면 안된다.- 그냥 쿼리 실행 결과를 return 한다.   ㅁ @ResponseBody- Spring에서는 기본적으로 return result;로 문자열 리턴하면 포워딩하려 한다.  그래서 404 에러가 발생할 수 있다.- return 하는 문자열이 응답 뷰가 아니라 응답 데이터라는 것을 알려줘야 한다.- 메소드 상단에 @ResponseBody 어노테이션을 붙이면 반환값이 응답 뷰가 아니라 응답 데이터다. - 응답 뷰가 아닌 응답 데이터를 반환하는 경우, 돌려보내는 데이터에 대한 타입을 써줘야 한다.단순한 숫자나 영문이면 타입을 쓰지 않아도 상관없지만 한글 데이터는 깨질 수 있어서 무조건 써.. 2024. 11. 15.