- Web Architecture 에서 HTML의 용도.
- HTML과 서블릿의 연동 방식의 이해.
- GET 요청과 POST 요청의 차이점.
1. 로그인 폼 (HTML 이용) /auth/LoginForm.html
- HTML을 이용한 UI 생성.
2. 사용자 인증처리 Servlet (LoginServlet.java)
- 이메일과 암호를 조회하여 그 결과를 출력.
- $contextRoot/auth/login

==========================================================================
authentication(인증) : 사용자 있냐/없냐
authorization(권한인증) : 일반사용자/ 관리자 / ... / ...
위의 두가지를 합쳐서 auth
==========================================================================

head: 웹 브라우저에게 이 문서에 대한 부가 정보를 제공한다.
title: 웹브라우저의 타이틀바에 출력 또는 탭에 출력된다.
body 웹브라우저 내용창에 출력할 것을 기술
form: 서버에 전달할 내용을 수집하는 입력폼
action: 요청을 전달할 대상이 되는 서블릿의 URL
input: 사용자로부터 입력을 받는 UI 컴포넌트를 생성
type: 입력 상자의 종류(text, checkbox, radio, ..)
name: 서버에 값을 보낼 때 사용할 파라미터 이름(url?파라미터명=값&파라미터명=값...)
value: 서버에 전달할 값. 사용자가 입력한 값
placeholder: 사용자에게 안내하는 문구를 입력 상자에 미리 출력.
submit: 사용자가 입력양식의 값 입력을 마친 후 이를 서버에 보내기 위해 사용.
<br>
- 다음 라인에 이어지는 내용을 출력할 것을 지시.
- 웹브라우저는 기본적으로 엔터를 무시한다.
- tag의 규칙에 따라 내용을 출력할 뿐이다.
* Element
- startTag + content + endTag
* root element ex) <html>... </html>
- 가장 바깥쪽에 있는 element
- 하나의 파일에 root element는 하나만 존재.
출력은 block방식과 inline방식으로 출력됨.
- block: 한라인 전체를 점유 ex) h1, p, div, ...
- inline: 라인을 그대로 유지 ex) a, i, span, ...
==============================================================================
* Redirect
- 서버의 응답결과에 자동 요청 정보를 포함한다.
* 자동 요청 방법
1) Redirect: ex) 로그인화면 -> 바로 메인화면.
2) Refresh: ex) 로그인화면 -> 로그인성공 화면 출력 -> 메인화면.
GET vs POST
- form 태그는 기본으로 GET 요청을 한다.
- method 속성에 POST를 지정해야 POST 요청을 수행한다.
1) GET 방식
- 요청URL에 데이터를 붙여서 서버에 보낸다.
- URL에 데이터가 포함되어 있기 때문에 검색결과를 공유할 때는 유용하다.
[보안]
- 하지만, URL이 웹브라우저에 캐시되기 때문에 쉽게 노출된다.
- 또한, URL이 웹브라우저 주소창에 보이기 때문에 입력 데이터가 쉽게 노출된다.
[Binary]
- URL에 포함되기 때문에 image, 동영상과 같은 binary 데이터를 서버에 보낼 수 없다.
[전송크기]
- HTTP 프로토콜에서 요청라인의 크기가 제한되어 있기 때문에, 대량의 데이터를 서버에
보낼 수 없다.
2) POST 방식
- HTTP 요청 프로토콜에서 Message body 영역에 데이터를 서버에 보낸다.
- URL을 저장해봐야 입력 데이터를 포함하지 않기 때문에 게시물조회나 검색에
맞지 않는다.
[보안]
- 보내는 값은 웹브라우저 주소창에 노출되지 않고, 캐쉬되지 않는다.
[binary]
- HTTP 요청정보에서 Message body 영역에 보내기 때문에 binary date 전송이 가능하다.
[전송크기]
- 제약없다.
* HTTP 요청을 구분하여 쉽게 다루는 방법
- GenericServlet을 상속받지 말고, HttpServlet을 상속 받아라.
- get 요청을 처리하고 싶으면 doGet()을 재정의.
- post 요청을 처리하고 싶으면 doPost()을 재정의.
- xxx 요청을 처리하고 싶으면 doXxx()을 재정의.
// 상속 및 구현관계
- public interface Servlet {...}
- public abstract class GenericServlet implements Servlet {...}
- public abstract class HttpServlet extends GenericServlet {...}