혜니니의 공부방
교내 자바특강 day5 본문
day5
몸이 아파서 day3,4 는 기록을 미뤄두고 day5인 오늘차를 먼저 써야겠다. 일단 ... 오늘은 금요일이라 너무 행복하지만 복습할 것들이 많아서 휴.. 오늘 진도는 collection,자료구조 남은 것과 JSP를 나갔다! 근데 collection framework가 아직 좀 이해가 안가서 따로 복습을 해야할 것 같다. 그리고 다음주 2-3일 동안 진행될 약간의 미니 프로젝트도 기획서를 작성했다.
개요 읽어보니 엉망이네 대충 쓴건데 한번 더 읽어볼걸... ㅎㅎ 하여튼 이렇게 대강 작성하고... 주말에 각자 Github 숙지하고 DB설계 해오기로했다... SQL쿼리 작성은 금방할테니까 커뮤니티 게시판, 쇼핑몰 고민하다가 그냥 강의평가했다.
Today's Index
- 아파치 톰캣+ LifeCycle
- JSP에 대한 기본적인 설명
- Encoding ("UTF-8")
- Redirect
- Session
- Servlet에 대한 간단 개념 +Filter/Listener(생략파트 따로 공부해서 적을 것)
-localhost / Port 개념
-Scope의 개념
-Application (Session과의 차이점 적기)
-Thread의 개념
-FrontEnd (WAS: 웹 애플리케이션 서버 ex) 아파치 톰캣, 제우스, 웹로직)
: html5/css3/JS/jQuery/React/Angular.js/Vue.js
: 브라우저가 해석하는 부분
-BackEnd
: Java기반 jsp servlet/asp/php/DB- Oracle, MS-SQL/MySQL/mongodb 등 브라우저가 해석할 수 없는 부분 ---> WAS가 필요하다.
오늘은 Apache Tomcat도 설치했다. 제일 최신버전이 아닌 안정성을 위해 Tomcat9 설치했다. Core :64bit-Windows.zip 압축파일 버전으로 선택했다.
압축과 install버전이 있는데 압축은 개발할 때 사용하고 배포할때 install버전을 사용한다고 .. 그래서 압축파일을 풀어서 사용하는 것으로 했다.
아파치 톰캣 LifeCycle (동작원리)
- 다른 프로그램과 포트번호가 같으면 충돌이 일어나니까 바꿔줄것 ( 오라클이 PC내에 설치되어 있을 경우, 포트번호가 같아 충돌이 나니 8080 > 8000으로 바꿔줌)
Port(포트)란 !?
일반적으로 포트 번호는 잘 알려진 포트(well-known port), 등록된 포트(registered port), 동적 포트(dynamic port) 세 가지로 나눌 수 있다. 잘 알려진 포트(well-known port)는 특정한 쓰임새를 위해서 IANA(Internet Assigned Numbers Authority)에서 할당한 TCP 및 UDP 포트 번호의 일부
localhost? url 주소 : http://localhost:(Portnumber)/contextPath/Filename.jsp , localhost = IP로 대체 가능
나는 localhost:8000을 사용했다.
port 넘버 참고 블로그 ⬇
코딩방식은 보통 2가지로 나뉘는데
1) Model1 방식
:사용자의 요청을 모두 JSP가 다 처리하는 것, jsp는 자바,서비스 클래스를 사용하여 웹 브라우저가 요청한 작업을 모두 처리하고 그 결과를 출력
2) Model2 방식 > MVC구조
: 사용자 요청을 Servlet이 받고 Servlet이 View와 Model 보낼 곳을 정하여 전송, View는 사용자에게 보여주는 역할만 담당하고 실질적인 기능은 Model에서 담당한다. html과 java 소스를 분리했기 때문에 개발을 확장시키기도 쉽고, 유지보수가 쉽다. // 대부분 MVC구조로 진행한다.
JSP
html코드에 java코드를 넣어 동적 웹페이지를 생성하는 웹 어플리케이션 도구이다.
JSP가 실행되면 자바 Servlet으로 변환되어 WAS에서 동작되면서 필요한 기능을 수행하고 생성된 데이터를 웹페이지와 함께 클라이언트로 응답한다.
DB연결 기능이 있으며 Form으로 넘어오는 데이터를 받아 처리능력이 있다.
JSP 태그 = 스크립팅 요소
1. <% ~~~ %> : 스크립트
2. <%! 전역변수 선언 및 메소드 선언 %>
3. <%= 지역변수 %> 출력문
include 지시자 => 메인 페이지에 다른 페이지를 포함시키는 것, 소스 전체가 메인 페이지에 포함되는 것이다. 서블릿문서가 하나 생성되는데 include지시자를 사용하면 하나의 페이지에서 소스를 바꾸면 다른페이지도 전부 저장되기때문에 편리하다.
한글 처리가 순조롭지 않아 Content Type을 꼭 설정해줘야한다.
아파치의 경우 8857Encoding 기본이므로 "UTF-8"로 변경해줘야한디.
화면에서 보여지는건 동일하지만 마우스 우클릭- 페이지소스보기를 하면 이렇게 차이가 난다. 육안으로 차이는 없으나 소스를 보면 br 태그가 먹혀있다는 것! -- > 근데 이 부분에 대해서는 좀 더 추가적으로 찾아보고 추가해야할 것 같다.
내장 객체
1. Request 요청
2. Response 응답
: forward방식과 redirect 방식이 있다.
Redirect 는 페이지가 늘어나고 늘어나서 뒤로가기 버튼이 나온다.
forward방식의 경우는 포워드를 쓴 페이지가 다시 로딩되는것으로 페이지가 늘어나지 않는다.
전 페이지로 가지 않음. 따라서 전 페이지의 요청(request)를 유지시킬 수 있다. 이렇게 동작하는게 forward 방식이다.
결국 정보 유지때문에 forward를 많이 쓰지만 redirect를 사용하기도 함.
클라이언트 상태 코드 별 상황 ⬇⬇⬇⬇⬇
: 상태코드 200 : 정상 (성공)
400 : request요청이 잘못된경우 (bad request)
403 : 인증은 했으나 권한이 부족할때 발생코드
404 : FileNotFoundException 잘못된 경로 인경우
405 : 요청방식 잘못된 경우(get방식, post방식 구분못햇을대)
500 : 소스코드 오류.
Session
: 클라이언트 정보를 서버측에 저장할 때 사용한다. 저장된 정보는 브라우저 창이 시작해서 종료 할 때까지 저장 정보가 유지된다. 예시 ) 일반적인 로그인 ->로그아웃
접속된 각각의 클아이언트마다 생성되며
기본적인 세션 시간은 30분(1800초)이다.
보안이 유력하면 세션시간을 줄여야겠지만 쇼핑몰같은건 훨씬 길어도될 것이다.
*session.setAttribute(String name, Object value) :세션의 정보를 저장하는 메소드
String id= session.getId();
=> 세션이 생성되면 자동으로 만들어지는 세션 아이디이다. 💥완전중요💥💥 서버는 세션 아이디를 발행해서 쿠키쪽에 저장을 함.💥💥
서블릿(servlet):
1) 서버에서 실행되는 자바 애플리케이션.
2) 대개 웹 서버 환경 안에서 실행되는 자바 Applet을 의미.
3) 클라이언트의 입력에 응답하여 주로 DB에 접근하는 웹 서버상에서 구동되는 작은 프로그램.
Field and Listener 추가 공부, 찾아서 적어넣을 것.
Scope 개념
http요청 웹은 요청이 완료되면 모든 정보연결이 stateless된다.
즉, 연결이 끊힘으로써 정보는 모두 사라진다. - 웹의 취약점.
: 매 페이지를 이동할때마다 정보를 유지하기 위한 저장방법이
필요하고 그래서, scope의 개념의 중요하다.
클라이언트쪽에 저장하는 기술 : Cookie, WebStorage
단점: 삭제가능, 보안취약
Application
: 특정 정보를 서버가 시작해서 종료될 때까지 유지되도록 한다. 프로젝트당 무조건 1개만 있다.
서버에 대한 정보를 추출하고 웹 어플리케이션 단위로 상태정보를 저장한다.
Application : 모든 유저가 공유할 수 있는 영역을 생성 |
Session : 각각의 유저에게만 만들어지는 개념이다. |
Thread
'공부 기록 > 자바 프로그래밍 기초' 카테고리의 다른 글
[국비지원] 210125 Java 개요 (0) | 2021.01.25 |
---|---|
교내 자바특강 day6 ~ 10 (0) | 2021.01.25 |
교내 자바특강 day4 (0) | 2021.01.15 |
교내 자바 특강 day3 (0) | 2021.01.15 |
교내 자바특강 day2 (0) | 2021.01.12 |