mv [옵션] [이동 할 파일] [이동 될 위치]
현재 디렉토리에 있는 test.txt 파일을 디렉토리 내부의 new_folder 디렉토리로 이동
ex) mv test.txt new_folder
현재 디렉토리에 있는 test.txt 파일을 new_test.txt라는 파일로 이름 바꾸기
ex) mv test.txt new_test.txt
/user/orignal 경로의 test.txt 파일을 /user/unoriginal 디렉토리에 new.txt로 바꾸어 이동
ex) mv /user/original/test.txt /user/unoriginal/test.txt
1. mv 명령어의 옵션을 제외한 인자값은 생략이 불가능
2. 경로를 지정하지 않으면 현 위치를 defualt로 함
3. 이동 시킬 때 새로운 이름을 지정하여 이동 할 수 있음
4. 현재위치에 이름만 바꿔서 이동시켜 파일의 이름바꾸기로 응용할 수 있음
5. 다양한 옵션을 사용하여 기존의 파일이나 디렉토리를 보호하는 등의 행동을 취할 수 있음
page(Object) == this : 커스텀 태그 개발에 활용. 커스텀 태그 사용 형태 : <!-- <prefix:tagname attributes.. > 백엔드 방식(자바코드) -->/ 현재 동작하고 있는 객체의 정보가 필요할때 config(ServletConfig) : 등록된 서블릿의 메타데이터를 가진 객체
exception(Throwable) : 예외 처리 목적으로 활용. isErrorPage = "true"/ error exception 상위객체
CAC(Context Aware Computing) **** pageContext(PageContext) : 현재 JSP 페이지에 대한 모든 정보를 가진 객체, 가장 먼저 생성되고, 나머지 모든 기본 객체의 참조를 소유함.
JspWriter를 이용한 버퍼 관리
1. 응답 데이터를 버퍼에 기록, append, write, print... 2. 버퍼의 상태 확인
세션 : 시간과 통로의 개념을 가진다 시간의 개념(Web) : 사용자가 어플리케이션을 사용하기 시작하는 순간부터 사용종료 까지의 시간.(= web에서의 개념)
세션트래킹모드: 언제 시작되고 종료되는지 알려줌 통로의 개념(DB) : 클라이언트와 서버 사이의 수립된 유일한 연결(connection)
세션의 생명주기 시작 : 해당 사용자로부터 최초의 요청이 발생했을 때 -> 세션 아이디 부여 -> 응답 데이터로 사용자에게 전송 사용자는 timeout 이내에 새로운 요청을 발생(저장되어있던 세션아이디를 첨부) 종료 : 명시적인 로그아웃, timeout(만료 시간)의 개념을 도입 -> timeout 이내에 새로운 요청이 발생하지 않을때 -> 브라우저를 종료하는 등의 쿠키 트래킹 모드 데이터(ex)쿠키)가 삭제되는 경우 -> 쿠키와 같은 트래킹 모드 데이터를 직접 삭제한 경우
세션의 식별 속성
세션 아이디 : <%=session.getId() %>
세션의 기타 속성
세션 생성 시점 :<%=new Date(session.getCreationTime()) %>
마지막 요청 시점 : <%=new Date(session.getLastAccessedTime()) %>
timeout : <%=session.getMaxInactiveInterval()%>s <button>연장</button>
세션 트래킹 모드 1. COOKIE : JSESSIONID 와 같은 쿠키의 형태로 C/S 사이의 세션아이디 전송. 2. URL : <a href="sessionDesc.jsp;jsessionid=<%=session.getId()%>">세션 유지</a> 3. SSL : C/S 사이에 전송되는 세션 아이디를 암호화
cookie 와 session을 사용하는 이유?
HTTP 프로토콜의 statless를 보완하는 저장개념
* HTTP 프로토콜의 특징
1.Connectionless 프로토콜( 비연결지향)
클라이언트가 서버에 요청(Request)을 했을 때, 그 요청에 맞는 응답(Response)을 보낸 후 연결을 끊는 처리 방식
2. Stateless 프로토콜
커넥션을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않는 특성이 있다
서버와 클라이언트가 통신을 할 때 통신이 연속적으로 이어지지 않고 한 번 통신이 되면 끊어진다.
따라서 서버는 클라이언트가 누구인지 계속 인증을 해줘야 한다. 하지만 그것은 매우 귀찮고 번거로운 일이다.
그런 번거로움을 해결하는 방법이 바로 쿠키와 세션이다.
쿠키(Cookie)
HTTP의 일종으로 사용자가 어떠한 웹 사이트를 방문할 경우,
그 사이트가 사용하고 있는 서버에서 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일이다.
HTTP에서 클라이언트의 상태 정보를 클라이언트의 PC에 저장하였다가 필요시 정보를 참조하거나 재사용할 수 있다.
쿠키의 동작 순서
클라이언트가 페이지를 요청한다. (사용자가 웹사이트에 접근)
웹 서버는 쿠키를 생성한다.
생성한 쿠키에 정보를 담아 HTTP 화면을 돌려줄 때, 같이 클라이언트에게 돌려준다.
넘겨받은 쿠키는 클라이언트가 가지고 있다가(로컬 PC에 저장) 다시 서버에 요청할 때 요청과 함께 쿠키를 전송한다.
동일 사이트 재방문 시 클라이언트의 PC에 해당 쿠키가 있는 경우, 요청 페이지와 함께 쿠키를 전송한다.
세션(Session)
일정 시간 동안 같은 사용자(브라우저)로부터 들어오는 일련의 요구를 하나의 상태로 보고, 그 상태를 유지시키는 기술이다.
여기서 일정 시간은 방문자가 웹 브라우저를 통해 웹 서버에 접속한 시점부터 웹 브라우저를 종료하여 연결을 끝내는 시점을 말한다.
즉, 방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 세션이라고 한다.
세션 특징
웹 서버에 웹 컨테이너의 상태를 유지하기 위한 정보를 저장한다.
웹 서버의 저장되는 쿠키(=세션 쿠키)
브라우저를 닫거나, 서버에서 세션을 삭제했을 때만 삭제가 되므로, 쿠키보다 비교적 보안이 좋다.
저장 데이터에 제한이 없다. (서버 용량이 허용하는 한에서)
각 클라이언트에 고유 Session ID를 부여한다. Session ID로 클라이언트를 구분해 각 요구에 맞는 서비스를 제공
session-id가 존재하지 않는다면 서버는 session-id를 생성해 클라이언트에게 돌려준다.
서버에서 클라이언트로 돌려준 session-id를 쿠키를 사용해 서버에 저장한다.
클라이언트는 재접속 시, 이 쿠키를 이용해 session-id 값을 서버에 전달
* 쿠기와 세션의 차이
쿠키는 '클라이언트(=로컬 PC)'에 저장하고, 세션은 '서버'에 저장한다
쿠키는클라이언트 로컬에 저장되기 때문에 변질되거나 request에서 스니핑 당할 우려가 있어서보안에 취약하지만
세션은 쿠키를 이용해서 session-id만 저장하고 그것으로 구분하여 서버에서 처리하기 때문에 비교적 보안성이 높다.
참고: https://dev-coco.tistory.com/61
<수업 필기> HCLC : 응집력은 높이고 결합력은 낮춤
퍼시스턴스 계층(Persistence Layer)이란?
쉽게 말해서 DB와 연결하는 부분을 말한다.<퍼시스턴스(Persistence)라는 단어 뜻 그대로 '영속성'을 가지는 DB와 연결을 하는 지점을 의미한다.>
MyBatis, Hibernate 등을 퍼시스턴스 프레임워크라고 부르는데 DB랑 연동을 시키는 기능을 하기 때문이다. MVC 패턴 내부에서 Model 계층은 비즈니스 계층과 퍼시스턴스 계층으로 구성된다고 할 수 있다.(Model Layer = Business Layer + Persistence Layer)
사실 비즈니스 계층에서 DB랑 연결을 하는 작업을 전부 처리해도 상관이 없지만 굳이 퍼시스턴스 계층을 따로 두는 이유는 개발자가 편하기 위해서다.
퍼시스턴스 프레임워크를 사용하면 PreparedStatement니 rs.next() 등과 같은 귀찮은(?) 코딩을 해주지 않아도 MyBatis가 전부 알아서 SQL Mapping을 해준다. 비즈니스 계층에서는 그냥 MyBatis를 호출(API를 사용해서)하기만 하면 된다.(MyBatis가 대신 일을 해주기 때문!)
Model 계층에서 이뤄지는 작업의 90% 이상은 JDBC 연동이라고 할 수 있는데, 퍼시스턴스 프레임워크를 사용함으로써 생산성을 획기적으로 향상시킬 수 있다!