var formData = $("form[name=Form]").serialize();

$.ajax({
	url: url,
	type: 'POST',
	data: formData,
	processData: false,
	contentType: false,
	success:function(data){
        	 $("#fileJson").val(data);
        	 fncInsert(arg);
	},
	error:function(e){
	alert("업로드중 에러 발생.");
	}
});

 

MultipartHttpServletRequest 오류 발생한 상황에서 확인한 것들

 

1. bean 확인

2. pom 확인

3. ajax에 processData, contentType -> false로 선언

4. jsp-form에 enctype="multipart/form-data" 설정

5. 컨트롤러 확인

 

전부 다 설정되어있는 상태에서 계속해서 오류가 발생함.

 

Multipart 데이터이기 때문에 form.serialize()를 사용하면 안됨

 

1) multipart는 boundary로 구분되어야 하는데 form.serialize()를 사용할경우 json데이터로 전송이 되어 파싱이 안되는 문제 발생.

2) 파일데이터는 file.js를 통해서 new FormData() 개체를 만들어 append하고 있었고, 구분값이 있는 jsp-form 데이터는 ajax 상단에 다시 formData를 선언해서 보내려고함. 두 유형의 데이터를 하나의 변수값에 담으려는 행동을 한 것이 문제.

3) jsp-form 데이터를 보내는 것을 url을 이용해서 파라미터 붙여서 이동하게 해줌.

'JAVA' 카테고리의 다른 글

[JSP] 자바빈 관련 액션태그  (0) 2021.07.18
Spring 핵심 01 : 객체 지향 설계와 스프링  (0) 2021.05.18
Spring 05 : AOP  (0) 2021.05.18
Spring 04 : 스프링 DB 접근  (0) 2021.05.18
Spring 03 : 스프링 빈과 의존관계  (0) 2021.05.18
1. 도커 파일 작성
2. 도커 클라이언트
3. 도커 서버
4. 이미지 생성

1. 도커 파일 작성

  • 도커 파일이란 도커 이미지를 만들기 위한 설정파일
  • 컨테이너가 어떻게 행동해야하는지에 대한 설정을 정의함.
  • 도커 파일 만드는 순서
    • 베이스 이미지를 명시해준다.(파일 스냅샷에 해당)
    • 추가적으로 필요한 파일을 다운받기 위한 몇 가지 명렁어를 명시
    • 컨테이너 시작 시 실행될 명령어를 명시

From

- 이미지 생성 시 기반이 되는 이미지 레이어.

- <이미지이름>:<태그> 형식으로 작성.

- 태그를 안 붙이면 자동적으로 가장 최신 것으로 다운

ex) ubuntu:14.04

 

RUN

- 도커 이미지가 생성되기 전에 수행할 쉘 명령어

 

CMD

- 컨테이너가 시작되었을때 실행할 실행 파일 또는 쉘 스크립트

- 해당 명령어는  DockerFile 내 1회만 쓸 수 있다.

 

2. 도커파일이 도커 클라이언트에 전달되어 도커 서버가 인식되게 해야한다.

docker build ./

 

3. 이미지에 이름 주기

docker build -t dockerId/name : version


​인프런 '따라하며 배우는 도커와 CI환경​' 수강 중.

 

 

'Docker' 카테고리의 다른 글

[Docker] 기본 명령어 정리  (0) 2022.04.17
[Docker] Docker vs VM  (0) 2022.04.17
[Docker] Image / Container  (0) 2022.04.04

도커 작동순서

1) 도커 클라이언트에 명령어 입력 후 도커 서버로 보냄

2) 도커 서버에서 컨테이너를 위한 이미지가 이미 캐쉬가 되어있는지 확인

3) 없으면 도커 허브에서 다운받아옴. 있다면 갖고있는 이미지로 컨테이너 생성

 

이미지 내부 파일 시스템 구조

docker run 이미지이름 명령어

1) docker : 도커 클라이언트 언급

2) run : 컨테이너 생성 및 실행

3) 이미지 이름 : 이 컨테이너를 위한 이미지

4) 명령어 : 원래 이미지가 갖고 있는 시작 명령어를 무시하고 해당 자리에 있는 커맨드를 실행

 

컨테이너 나열

* docker ps -a : 모든 컨테이너 나열

  docker ps : 실행중인 컨테이너 나열

 

1) CONTAINER ID : 컨테이너의 고유한 아이디 해쉬값

2) COMMAND : 컨테이너 시작 시 실행한 명령어. 대부분 이미지에 내장되어 있으므로 별도 설정 필요X

3) STATUS : 컨테이너 상태. UP(실행중), EXITED(종료), PAUSE(일시정지).

4) PORTS : 컨테이너가 개방한 포트와 호스트에 연결한 포트. 특별한 설정을 하지 않은 경우 출력X

5) NAMES : 컨테이너 고유한 이름. 컨테이너 생성 시 --name 옵션으로 이름을 설정하지 않으면 도커 엔진이 임의로 형용사와 명사를 조합해 설정. id와 마찬가지로 중복이 안되고, docker rename 명령어로 이름을 변경할 수 있다.

     ->  docker rename original-name changed-name

 

컨테이너 중지

1) docker stop id/name: 컨테이너를 바로 중지시키지 않고 그동안 하고 있던 작업들을 완료하고(Grace Period) 중지시킨다.

2) docker kill id/name : 정리하는 시간 없이 바로 중지시킨다.

 

컨테이너 삭제

* 실행중인 컨테이너는 먼저 중지한 후에 삭제가 가능하다.

1) docker rm id/name 

   docker rm $(docker ps -a -q) : 윈도우(파워쉘에서 해야함. cmd에서 안됨)

 

이미지 삭제

1) docker rmi imgId

 

컨테이너, 이미지, 네트워크 모두 삭제

1) docker system prune

 - 도커를 쓰지 않을 때 모두 정리하고 싶을 때 사용하기

 - 실행중인 컨테이너에는 영향을 주지 않음.

 

실행중인 컨테이너에 명령어 전달

1) docker exec id

2) docker exec -it id 명령어 : -it를 붙여야 명령어 실행 후 계속 명령어를 적을 수 있다.

3) docker exec -it id sh : 실행 중인 컨테이너에 쉘 환경으로 접속하기

- 명령어를 입력할때마다 docker exec -it id 명령어를 적어주기에는 귀찮기 때문에 쉘환경으로 접속하여 명령어를 입력해준다.

4) Ctrl + D : 터미널 환경에서 나오기

 


​인프런 '따라하며 배우는 도커와 CI환경​' 수강 중.

'Docker' 카테고리의 다른 글

[Docker] 도커 이미지 생성하기  (0) 2022.04.18
[Docker] Docker vs VM  (0) 2022.04.17
[Docker] Image / Container  (0) 2022.04.04
도커
  • 도커 컨테이너에서 돌아가는 애플리케이션은 컨테이너가 제공하는 격리 기능 내부에 샌드박스가 있지만, 여전히 같은 호스트의 다른 컨테이너와 동일한 커널을 공유. 결과적으로, 컨테이너 내부에서 실행되는 프로세스는 호스트 시스템에서 볼 수 있다.
    •  ex) 도커와 함께 몽고DB 컨테이너를 시작하면 호스트(도커X)의 일반 쉘에 ps -e grep 몽고를 실행하면 프로세스가 표시된다.

 

가상머신
  • VM 내부에서 실행되는 모든 것은 호스트 운영체제 또는 하이퍼바이저와 독립되어있다.
  • 특정 VM에 대한 가상화 프로세스를 관리하기 위해 프로세스를 시작하고, 호스트 시스템은 그것의 하드웨어의 일부를 VM에 할당한다.
    • 시작 시간에 이 VM 환경만을 위한 커널을 부팅하고 운영체제 프로세스 세트를 시작해야한다. 이는 응용 프로그램만 포함하는 일반적인 컨테이너보다 VM의 크기를 훨씬 크게 만든다.

인프런 '따라하며 배우는 도커와 CI환경' 수강 중.

'Docker' 카테고리의 다른 글

[Docker] 도커 이미지 생성하기  (0) 2022.04.18
[Docker] 기본 명령어 정리  (0) 2022.04.17
[Docker] Image / Container  (0) 2022.04.04
Image
  • 도커에서 서비스 운영에 필요한 서버프로그램, 소스코드 및 라이브럴, 컴파일된 실행 파일을 묶는 형태
  • 특정 프로세스를 실행하기 위한 모든 파일과 설정값(환경)을 지닌 것으로, 더 이상의 의존성 파일을 컴파일하거나 이것저것 설치 할 필요 없는 상태의 파일을 의미
  • 하나의 이미지는 여러 컨테이너를 설정할 수 있고, 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아있다.

 

Layer
  • 기존 이미지에 추가적인 파일이 필요할 대 다시 다운로드 받지않고 해당 파일을 추가하기 위한 개념
  • 이미지는 여러 개의 읽기전용 layer로 구성되고, 파일이 추가되면 새로운 layer가 생성된다. 그리고 도커는 여러 개의 layer를 묶어 하나의 파일시스템으로 사용할 수 있게 해준다.

 

Container
  • 이미지를 실행한 상태로, 응용프로그램의 종속성과 함께 응용프로그램 자체를 패키징 or 캡슐화하여 격리된 공간에서 프로세스를 동작시키는 기술
  • 컨테이너는 이미지 layer에 읽기/쓰기 layer를 추가하는 것으로 생성/실행된다. 
  • 종료되어도 컨테이너 & 읽기/쓰기 layer 또한 그대로 존재하기 때문에 다시 시작할 수 있다.
  • 한 서버는 여러 개의 컨테이너를 가져도 상관없으며 컨테이너는 각각 독립적으로 실행된다.
  • 컨테이너는 커널 공간과 호스트OS 자원(시스템 콜)을 공유한다. 

'Docker' 카테고리의 다른 글

[Docker] 도커 이미지 생성하기  (0) 2022.04.18
[Docker] 기본 명령어 정리  (0) 2022.04.17
[Docker] Docker vs VM  (0) 2022.04.17

 

환경설정

  • mkdir movieql
  • git repository 생성
  • vscode
    • github init
    • git remote add origin https://github.com/nidoos/movieql
    • git pull origin main
    • yarn add graphql-yoga

 

에러생성

 

1. yarn 설치 안됨

npm install --global yarn

    -> npm 설치가 되어있지않아 불가능. npm부터 설치하기로 함.

    -> node.js 설치(npm 포함되어있음.)

 

2. 환경설정 안해서 에러

'yarn' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 
이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오. 위치 줄:1 문자:1

    -> 시스템 변수에서 path 설정 해줌.

    -> 설치경로를 확인 : yarn global bin​

 

3. 스크립트 허용오류

yarn : 이 시스템에서 스크립트를 실행할 수 없으므로 ~~~ 파일을 로드할 수 없습니다. 자세한 내용은 about_Execution_Policies(https://go.microsoft.com/fwlink/?LinkID=135170)를 참조하십시오.
위치 줄:1 문자:1
+ yarn --version
+ ~~~~
    + CategoryInfo          : 보안 오류: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

    -> yarn path설정 제대로 됐는지 버전확인하려했지만 다른 오류가 뜸.

    -> 스크립트 권한이 제한되어있기 때문에 나타나는 오류

    -> windows powershell 관리자 권한으로 실행

ExecutionPolicy

Restricted  : 스크립트를 제한한다는 뜻
Set-ExecutionPolicy RemoteSigned

    -> 모두 예 선택

    -> 다시 ExecutionPolicy 입력 후 RemoteSigned가 나오면 스크립트 코드 허용한다는 뜻.

 

스크립트코드 허용하니  graphql-yoga 설치 완료


​노마드코더 GraphQL로 영화 API 만들기 수강 중

'기타' 카테고리의 다른 글

[Oracle Cloud] 초기설정  (0) 2022.02.16
  • 리눅스 공부목적으로 VM 설치했다가 노트북의 한계로 VM 포기
  • 클라우드 사용해볼 겸 오라클 클라우드 사용해서 리눅스 등등 공부하기로 함

1. 회원가입

2. 구획 생성 (2개 가능)

  • ID&보안 -> 구획

3. 가상 네트워크 생성

  • 네트워킹 -> 가상클라우드 네트워크 -> 구획설정 -> VCN마법사 시작

4. 방화벽 설정

  • 가상클라우드 네트워크 -> 이름 -> 리소스 -> 보안목록 -> Default Security List for ~ -> 수신규칙 추가

  • TCP
    • 전송 제어 프로토콜(Transmission Control Protocol)
    • 인터넷프로토콜 스위트(IP)의 핵심 프로토콜 중 하나
    • IP와 함께 TCP/IP라는 명칭으로도 불림
    • 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟(컴퓨팅에서 8개의 비트가 한데 모인것)을 안정적으로, 순서대로, 에러없이 교환할 수 있게 한다. 
    • 전송계층에 위치
  • 80 포트 : http의 기본포트
  • 443 포트 : https의 기본포트

5. 공용IP 추가

  • 네트워킹 -> 예약된 공용 IP관리

'기타' 카테고리의 다른 글

[GraphQL] 영화API만들기 01  (0) 2022.03.06

셀렉터(selector)활용하여 특정단어가 포함된 name으로 값 찾기

 

$("input[name='123']") -> '123'

 

$("input[name^='123']") ->'123' 으로 시작하는 name. like '123%' 와 동일

 

$("input[name*='123']") ->'123'이 포함된 name. like '%123%' 와 동일

 

$("input[name$='123']") ->'123'으로 끝나는 nam. like '%123' 와 동일

 

 

'jQuery' 카테고리의 다른 글

id, class, name  (0) 2021.08.08

JSTL

  • 자바서버 페이지 표준 태그 라이브러리(JavaServer Pages Standard Tag Library)
  • html 코드 내에 java코드인 스크립틀릿을 대체하여 사용
  • xml 데이터 처리와 조건문, 반복문, 국제화와 지역화와 같은 일을 처리하기 위한 JSP 태그 라이브러리를 추가하여 JSP사양을 확장
  • JSP 페이지 내에서 자바코드를 바로 사용하지않고 로직을 내장하는 효율적인 방법 제공

 

JSTL의 태그

  • <c:set>
    <c:set var ="변수이름" value="값" scope="영역">값</c:set>
    • 변수명에 값을 할당. <%=  %>
    • 변수가 저장되는 영역 설정(page / request / session / application -> 생략가능. 생략 시 기본값 : page)
  • <c:out>
    • 값을 출력
  • <c:if> : if문
  • <c:choose> : switch
  • <c:when> : choose의 하위태그. switch에서 case. 조건이 true인 경우
  • <c:otherwise> : choose의 하위태그. switch에서 default. 조건이 false인 경우
  • <c:forEach> : for문
    <c:foreach items="${리스트가 받아올 배열이름}" var="for문 내부에서 사용할 변수" varStatus="상태용 변수">
     
       // 반복해서 표시할 내용 혹은 반복할 구문
     
    </c:foreach>

EL

  • 표현언어(Expression Language)
  • $와 {}를 사용하여 값을 표현. 값으로 표현되는 것만 와야함.
  • ${name}

'용어정리' 카테고리의 다른 글

[네트워크] MAC주소  (0) 2021.07.26
[CSTS] 개발 단계별 테스트(단위, 통합)  (0) 2021.06.14
[CSTS] SW품질  (0) 2021.06.14
[Git] branch name  (0) 2021.06.08
[네트워크] GET방식과 POST방식  (0) 2021.05.26

ID

  • 하나의 요소만 가능(페이지에서 유일. 겹치면 안됨.)
  • $("#id")

 

CLASS

  • 여러 요소에 적용 가능
  • $(".class")

 

NAME

  • 여러 요소에 적용 가능
  • $("input[name=이름]")

'jQuery' 카테고리의 다른 글

셀렉터(selector)  (0) 2021.09.30

+ Recent posts