카테고리 없음

오전수업

logloglog 2020. 12. 31. 12:52

오늘은 서버단 세팅하고  json형태의 데이터 만들고 그걸 실제로 ajax로 받고 처리를 하느냐

 

클랄이언트      서버(WAS)

받기만 하면 서버가 아님 줘야 서버임.. 뭔가를 제공하면 서버임

정보를 보내주면 받아서 처리하는 녀석.. 서비스를 소비하는자는 클라이언트 (고객)

서비스나 정보를 제공하는쪽이 서버 ... 

뭘주곳받느냐를 알아야함

데이터는 어떤 목적하에 수집되어잇는 값임

정보는 목적하에 수집된것들을 비교하여 얻어지는 판단의 근거

 

어떤형태로 데이터를 주고받는가?

가장많은 게 text임

오라클의 바차, 자바의 스트링

또 하나는 binary... (파일)(바이트)

 

서버에서 클라이언트로 보낼때에도,, 클라이언트에서 서버로 보낼때에도...

이게 무슨 타입인가를 얘기해줘야함

 

실제 넘겨줘야하는 데이터 + 메타데이터를 붙이게 되는데, META 데이터.. 메타는 본질의 의미.. 택배의 운송장같은것

신분증도 나에대한 메타데이터

정보는 항상 그 정보가 뭔지에 대한 정보를  (메타데이터) 아는쪽은 항상 보내는쪽임 그래서 보내는쪽에서 담아서 보내야한다

보내는놈은 아니까 문제가 없는 데 받는놈은 이게 뭔지를 알려면 뭘 받는지를 알아야함... 택배오면 운송장을 먼저 보는것이랑 같다.

데이터가 키-밸류로 만들어진 이유도 여기에 있따. 보내;는놈은 이게 아이디인지 패스워드인지 알지만 받는놈은 모르니까

 

암튼 그래서 req, resp 둘다 이렇게만들어져잇음

Meta Data (Header)
Body (정보) post방식은 정보를 여기에 담는다. 그래서 공간에 제약이 없다.

float건 short건 날리게되면 무조건 String이다.

서버에서 boolean으로 만들었따고 해서 클라이언트쪽에서 boolean으로 받을수있는게 아님 ㅁ

무조건 스트링

그걸 자기에맞게 바꿔서 쓸라면 다 캐스팅해야함...

대표적으로 날짜.. 2020/12/31

을 보냈지만 서버는 받아서 그게 String 으로 받음.. 날짜라고 생각X

그걸 받자마자 date형식으로 변환시키려고 하면 parsing에러가 터짐

 

기억하자.. 넘기면 무조건 STring.. 그래서 json받을떄도 json으로 넘기지만 STring으로 넘어옴

그래서 그 받은 스트링을 다시 json으로 바꿔주는 작업을 해야함

서버에서도 memberVO를 객체로 보낼수없음 무조건 스트링만 넘어가기떄문에 시리얼라이즈 하는거임

 

파라미터와 어트리뷰트의 차이? (리퀘스트쪽에서)

겟파라미터는 리턴타입이 무조건 스트링이다. (데이터주고받을떄 무조건 String형태이기떄문에)

겟파라미터는 있어도 셋파라미터는 없는 이유?

 

내가 결혼식같이가는 친구한테 축의금을 줬는데 그걸 그놈이 본인 봉투에 넣음. 그럼 금액은 같지만 내가준돈이사라지고 친구의돈이 두배가되는거임

셋을 해버리면 클라이언트가 보낸데이터와 서버가 세팅한 데이터의 구분이 안됨

사용자로부터 넣어온 데이터와 서버가 자체적으로 처리한 데이터를 구분하고싶었떤거임

그래서 클라이언트에서 넘어온 데이터는 파라미터로 하고 우리는 건들지못하고 쓰기만( getparameter)할수있음

그래서 서버에서 왓다리갓다리하는데이터는 어트리뷰트리고, 리턴타입이 오브젝트고, 세터와게터 모두있따 (자바내에서쓰는거니까)

 

메타데이터( haader)에 대한 세팅이 필요함

클>서버나 서버>클 둘다 헤더세팅해야함

 

 

jsp_spring,으로 바로가기만들기

 

실행했는데 만약 오류난다?

CMD창 열어서 자바버전쳐보고

 

 

 

이클립스도 자바로 만들었는디 jre가 내장되어있찌않다

이클립스는 jdk 가 필요한데 실행시에 레지스트리에 자바홈이나 자바빈을 찾아서 jre를 찾으려하는데 안맞으면 충돌나는거임

 

윈도우 레지스트리는 패스가 여러개있어도 머하나찾게되면 거기서 실행하고 끝내버림

지금 오라클에맞춰져있으므로 우리가설정한 jdk로 돌아가는게 아님

 

지금 이상태는 jdk1.8이 없는상태임

egove는 1.8에 맞춰진거임.. 패스가 오라클에맞춰진사람들은 실행이되는데

아랫줄 1.7로 맞춰진사람은 안될거임

밑줄은 오라클설치시 오라클이 넣은 자바임.. 그 jre을 쓰고있는거지 내가설치한 jdk를 쓰고잇는게 아님..이클립스내에서는 사용될지몰라도..

 

그니까 1.8설치해야함.. 

 

 

지금세팅하는거는 이클립스내에서만 쓰는게아니고

윈도우상에서 자바프로그램을 실행하게될떄 JRE를 요청할떄 실행하게되는거임

 

 

이렇게 바꿔준다

다시  egove 워크스페이스 잡자

 

 

html이랑 자바스크립트 편집용으론 이클립스보단 비쥬얼스튜디오같은게 더 좋음...

이툴저툴 왓다리갔다리 하다보면 자바스크립트에서 에러가터질수있기떄문에 그냥 이클립스로 한다

 

클> 서 에 index.html을 요청했따

그럼 서버>클 index,html을넘긴다??   이런개념이 아님!

 

파일을 넘기는게아님! 파일다운로드도아니고...

분명 아까 서-클사이에는 스트링이랑 바이너리밖에없다고 했음..

 

브라우저는 뷰어일뿐...

 

/index.html을 요청했을때 톰캣이 가지고있는 디폴트서블렛이 먼저 챙김 이걸

내가 만든 서블릿이 먼저가 아님

/index.html 이 경로를 그대로 webcontent를 루트 (여기가/ 시작)로 해서 사용자가 준 저 경로를 루트에 매핑을 해서 찾음

없으면 404...

있으면 /index.html을 연다

아웃풋스트링ㅁ으로 한줄한줄 보낸다.

근디 한줄한줄 보내면 중간에 사라짐..

그래서 버퍼를 이용해서 한번에 보내는거임

 

버퍼링 > 프로세스가 화면을 읽는속도보다 데이터가 오는 속도가 느려서  끊겨서 버퍼링이 생기는거임

 

암튼 버퍼로 모아서 한번에 String으로 보냄

 

암튼 클라이언트가 받아서 이게 뭐야??? 할때 필요한게 Content Type

 

순서 : Content Type 먼저 설정하고 보냄 (보낸다음에 설정  X) (선언적언어니까)

그럼 클라이언트가 일단  txt를 받음.. 이제 이걸 content 타입에 따라서 그 타입을 해석하는거임

 

그럼 텍스트라고 콘텐츠타입을 해놓고 html  보내면 브라우저에 태그까지 다 찍혀버림

 

자바스크립트도 마찬가지.. 자바스크립트는 자바상관안함.. 해석안함..텍스트일뿐임 자바코딩만 해석함

그럼 자바스크립트도 한낱 텍스트일뿐임.. 자바스크립트도  html이라고 브라우저로 던지는거임

즉 자바스크립트가 자바에서 해석되는게 아니고 html로 브라우저로 넘어가서 브라우저에서 실행되는거임

즉 자바스크립트의 실행여부는 이클립스가 아니라 브라우저로 봐야한다.

 

출처 : 다은이

 

우리가 작성하는게 사용자컴퓨터에서 실행된다는걸 잊으면 안됨

 

오후수업에 서버에는 물리적경로가 들어감... c:/어쩌고.. 근데 지금하는 제이쿼리의 경로는 사용자 컴에서 실행한다는 전제이기떄문에 물리적경로가 들어가지않음

 

서버와 클라이언트가 데이터를 주고받는데 이 스트링의 형식에 대해서는 헤더에다가 줄건데... 데이터 형식(인코딩)이 필요함.. 다시말해 부호화체계를 어떻게 할거냐 이말임

 

 

인코딩해주고 브라우저도 설정해주기

확인

 

 

서블릿은 WAS가 실행함

우리는 서버만 켜주면 됨

그래서 서버를 runtime enviroment라고 한다 그 런타임인바이로먼트에 WAS 가 들어가있음

was를 지정해주는

 

아파치톰캣이 없이 서블렛을 치면 임포트가 안됨

 

그냥 프젝에는 톰캣이안들어옴

다이나믹웹프젝에 톰캣이잇음

 

 

 

서블릿3.0에 우리가 배운 파일다운로드에 이용되는 파트가있음

우리는 톰캣 7버전에 서블릿3.0이고jdk 는 6~이상으로 쓰면 됨

우리는 웹모듈이 3버전인거임 (서블릿)

 

다이나믹웹프젝만들면 모듈정보가 3.0으로 뜸

 

톰캣을 뭐쓰냐에따라서 서블렛버전이 결정되고 서블리으로 할수있는게 다르다

 

 

 

이 이클립스의 프리퍼런스들이 프로젝트만들면 프로퍼티에.. 이정보들이 들어가있음

즉 이클립스가 프리퍼런스들로 쓸수있는 자원을 널어놓으면 프로젝트는 그중에 필요한거만 프로퍼티로 골라쓰는거임

 

자바 엔터프라이즈 에디션....

 

만약 그냥 자바로 하면 왼쪽에 프로젝트 익스플로러 대신 패키지 익스플로러가 떠버림

 

 

타겟런타임 : was임 프리퍼런스에 하나바ㄸ에 안넣어줫으니까 하나만뜸

 

 

여기에서버ㅅ랑

 

여기서버랑 안맞으면 또 터짐

 

프리퍼런시스에 있어야 저 밑에 서버런타임어쩌구가 뜸

저기에 이름을 로컬호스트로 해줘서 로컬호스트를 써야하는거임 실행할때..

저 로컬호스트를 써줘야 톰캣이 호출된다는거임 그니까 톰캣의 도메인이 로컬호스트인것..

 

 

서버에서 포트는 입구. 전용문의 개념임

서버자체에 하드웨어적인 규정은 server.xml이고

어플리케이션실행시 필터걸고 자원들에 대한것들은 web.xml (연결과 관련된것들 뭐가실행되고 실행되지않아야하는)

톰켓자체의 접근권한에 대한건 users

 

 

8080 저거가 누가 점유하고잇어서 오류남

80 (아무나쓸수있는포트)로 바꿀거임

80포트면은 주소줄요청할떄 기본포트이기떄문에 안써도됨

80외는 PRIVATE포트이기떄문에 포트번호를 줘야한다.

 

우리가 도메인칠때 포트번호 안치는게 기본포트 80을 쓰고있따는거임

80으로 바꾸고 저장

 

 

톰캣7버전 이하는 주소줄파라미터에 주소줄에대한 이코딩이 잡혀있지않음

 

 

 

url과 uri 의 차이점

 

내 집안에서 내방위치 얘기할떄는 uri고 내집밖에서 내방위치 얘기할떄는 url

 

대전광역시 중구 오류동  xx번지 > URL

집안에서 얘기할거면 거실에서 왼쪽으로가면 제방입니다 > URI

 

http://localhost/member/login?id="mimi"&pwd="mimi" 에서 url은 전부임

 

파란색이 uri 임 컨텍스트패스포함에서 상대적주손, ㄴ uri

그니까 위에서  uri인코딩 준거는 저 파란부분 인코딩 준거임

 

톰캣 8부터는 안해줘두됨

 

 

톰캣은 각프로젝트 배포할때 각 프젝 구분위해서 컨텍스트패스를 만든다.

컨택스트패스가 필요없을때는 www.naver.com  은 메인화면이 바로나오니까 폴더구분을 하지않고 서버의 루트에 바로있는거임

톰캣도 마찬가지임 /

 

 ROOT = / 임

 locathost 딱 치면 나오는게 여기임

 

톰캣에 대한 배포정보... 프리퍼런스의 정보가 .meta 에이승ㅁ

 

이클립스에서 만들어진 워크스페이스를 실제로 배포하는 공간이 여기임
아까 톰캣으 루트와는 다르게 암것도없다
웰컴어쩌구는 사용자가 주소줄까지치고 ㅇ뒤에 암것도없으면 이거하겟따는 말임

localhost만 치면 was가 root로 가서 사용자가 요청한 파일이없으니까 index.html 혹은 index.htm 혹은 index.jsp 찾는데 암것도없으니까 아까 그 경로에서 본것처럼 404 찍은거임

 

그니까 거기에 저 파일넣어주면 네이버만 쳤을때 메인나오는것처럼 열린다는거임

 

index.html 지워도 같다

 

붙여넣기

이제 다시 localhost다시열면

 

기본서블렛이 열어준거임

 

 

서블릿 규정하지않으면 다 얘가열어

 

 

jsp열어주는 서블릿

이제 톰캣에 우클릭해서 새로만든 jQueryproject 에드해주고

 

여기들어가면 이거 들어가잇ㅇ다
다 들어감 뭔가..