51일: JSP, Server, Web, Servlet 연습

Jiwontwopunch·2022년 1월 24일
0

국비기록

목록 보기
51/121
post-thumbnail

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

0개의 댓글