2022.01.24.Mon.
✍ 복습
JSP
jsp는 java server page의 약자
- jsp는 서버에서 자바로 번역되어 실행한 다음 결과 html을 사용자에게 보내준다.
- 자바의 기본 뷰 기술은 jsp
- 뷰 기술에는 자바 기반의 jsp, 스프링 기반의 기본 븅니 thymeleaf등이 존재한다.
- jsp가 출력되는 곳 : 사용자화면 → out 객체
out.printIn()
사용자의 정보 저장
- http는 상태가 없다.(stateless) 즉, 정보를 가지지 않는다.
- 서버는 사용자가 누군지 구별이 절대 불가능
- 내가 사진이 10장 포함된 게시판 글을 읽으면 서버로 request가 11개 날아간다.
웹 서버가 사용자를 구별하고 정보를 저장하는 기술을 제공
- Cookie : 서버가 사용자 컴퓨터에 텍스트 파일로 정보를 저장(별로 중요하지 않은 정보)
- HttpSession : 서버측 저장 공간. 수명이 기본 30분
- 데이터베이스 : 영원히 저장
세션은 언제 만들어지는가?
세션이 없는 사용자가 접근 하면 만들어진다.
- 세션은 세션 번호(sessionid)라고 자바는 jsessionid라고 한다.
- 세션이 없는 사용자가 접근 하면 세션을 생성하고 그 세션은 세션 번호를 가진다.
- 서버는 세션 번호를 사용자 컴퓨터에 쿠키로 저장한다.
HttpSession session = request.getSession();
String username = (String)session.getAttribute("username");
session.invalidate();
session = request.getSession();
session.setAttribute("username", username);
서버의 역할을 분리
WS+정적, WAS+동적
- WS : 사용자의 신호를 듣고 있다.
- WAS : WS가 신호를 보내면 자바를 실행해서 결과를 WS에서 보고 프로그래머가 자바 클래스를 자기 마음대로 만들면 돌려주기가 어렵다. WAS가 돌려줄 수 있는 자바클래스 표준을 만들었다. → Servlet
Servlet과 jsp를 함께 사용하자
jsp를 html 대신 서블릿의 기본 뷰로 사용하자.
request와 session
- request : 하나의 작업, 작업이 끝나면 response가 만들어지고 request는 파괴
- session : 한명의 사용자, 세션이 없는 사용자가 접근하면 만들어지고, 아무런 동작없이 30분이 지날때까지 지속
예) 로그인-로그아웃
Web
- 웹 프로그래밍 구성방식 : MVC(Model-View-Controller)에서 View에 관한 이야기
- 웹 프로그램을 서블릿으로 처음부터 끝까지 모두 만드는 것이 가능하다. 뷰 분리 → 만약 result.html이라는 결과 출력 페이지를 만들었다고 하자. 그러면 서블릿이 value라고 하는 값을 result.html에 전달해줘야 한다.
- 웹의 주인공은 request. web은 request가 떠나는 여행
- 사용자가 버튼을 클릭하면 request가 만들어져서 서블릿을 향해 출발
- request는 서블릿에 도착하면 여행이 끝난다? 서블릿 여러개를 거쳐 갈수도 있다.
- request는 하나의 작업. 작업이 끝나면 결과가 response 또는 결과 뷰로 출력된다.
- 값을 뷰로 전달하려면 request에서 setAtribute한다.
request.setAttribute("value", value);
- 뷰로 이동
RequestDispatcher rd = request.getRequestDispatcher("뷰 이름");
rd.forward(request, response);
- forword : request가 이어진다(연속된 작업)
sendRedirect : request가 파괴되고 새로 만들어진다.
주소를 적을 때
현재 프로젝트 밖으로 이동이 가능하나?
<form>
, <a href="">
, sendRedirect
현재 프로젝트 내부 이동만 가능하나?
forward