20180806

Today I Learned

CSS

  • ☺ // 웹 화면에는 웃음 표시가 표현되는 코드.
    • 실행결과 : ☺
  • display : block, lnline …

  • pisition : static, absolute, relative, float, fixed …
    • absolute 는 default 값인 static을 기준점으로 인식하지 않음.
    • float : left, right ..
      • 다른 포지션들과 달리 3차원으로 봤을 때, 화면에서 붕 떠있다고 생각하면 편함.
  • box size
    • default는 box-sizing : content-box
    • content-box를 border-box 로 변경 가능.
    • padding 값을 증가시켰을 때 border-box의 경우 엘리멘트의 크기를 최대한 유지하고자 함.
      • content-box의 경우 엘리멘트안의 콘텐츠 크기를 유지하고자 하는 것 같았음.
  • display : block, inline …

  • clear : left, both..
    • footer 엘리멘트가 떠있는 float를 인지하지 못하고 상단으로 올라왔을 때, 해당 속성값 추가 시 float를 인식.
  • overflow : auto, hidden, float ..
    • 비슷하게, html구조에서 하위 항목이 float인 경우 자식으로 인지하지 않는다.
    • overflow 속성으로 자식 인식 가능
  • 상속관련하여 box모델 (margin, padding .. )은 상속되지 않고, style(color, font .. ) 은 상속된다.

Servlet

  • 자바 웹 어플리케이션.
    • WAS에서 deploy 되어 동작하는 어플리케이션.
    • HTML, CSS, class, Servlet, JSP 등이 포함.
    • WAS에 의해서 동작한다.
  • WEB-INF 폴더 하위.
    • lib : jar 파일들.
    • classes : class, java패키지.
  • web.xml
    • 웹 어플리케이션의 정보를 다 가지고 있다.
    • servlet 3.0 이상에서는 어노테이션을 사용해 그 역할을 대신 가능.
      • 하지만, spring에서는 web.xml을 사용.

  • Sevlet 이란?
    • 자바 웹 어플리케이션의 구성 요소 중 동적인 처리를 하는 프로그램의 역할.
    • WAS에서 동작하는 java class.
    • HttpServlet Class 를 상속 받는다.
    • JSP / Servlet을 조화롭게 사용하면 최상의 결과를 얻을 수 있다.

    • 작성 방법.
      • 3.0 이상 : java annotation 사용.
      • 3.0 미만 : web.xml 사용.
    • Servlet의 Lifecycle
      • Servlet 객체를 여러개 생성하지 않는다.
        • servlet 객체는 기본적으로 하나이고 멀티쓰레드 방식으로 동작한다고 알고 있긴 한데, 옵셔널하게 여러개를 생성하는 경우도 있을것만 같다.
      • lifecycle 출처
      • servlet의 메소드는 init , service , (destory) 순으로 호출
        1. WAS는 서블릿 요청을 받으면(해당 url로 접근 시) 해당 서블릿이 메모리에 있는지 확인.
        2. if(메모리에 없음) { 해당 서블릿 클래스를 메모리에 올림(생성자 실행) init() 메소드를 실행 } service() 메소드를 실행 // 요청의 응답은 이부분에 구현
      • WAS가 종료되거나, 웹 어플리케이션이 새롭게 갱신될 때 destory() 호출

      • service()를 오버라이드 하지 않았으면, 부모(HttpServlet) 의 service()메소드를 수행.
        • HttpServlet 의 service()메소드의 구성
          • 템플릿 메소드로 구현
            • 템플릿 메소드란, 알고리즘의 단계, 틀(구조, 템플릿)을 정의.
            • 일부 단계는 추상메소드로 서브클래스에서 구현하도록 설계.
            • 코드 재사용에 큰 도움.
          • 클라이언트의 요청에 따라 doGet, doPost.. 메소드를 호출
      • <from> submit 버튼을 눌렀을 때, method와 action의 경로를 요청.

      • WAS는 웹 브라우저로부터 Servlet 요청을 받으면, 요청 정보를 HttpServletRequest 객체 생성하여 저장
      • 웹 브라우저에게 응답을 보낼 때 사용하기 위해 HttpServletResponse 객체 생성
      • 생성된 HttpServletRequest, HttpServletResponse 객체를 서블릿에게 전달

      • HttpServletRequest
        • HTTP프로토콜의 request 정보를 서블릿에게 전달하기 위한 목적.
        • 헤더정보, 파라미터, 쿠키, URI, URL 등의 정보를 읽어 들이는 메소드를 가지고 있다.
        • Body의 Stream을 읽어 들이는 메소드를 가지고 있다.
      • HttpServletResponse
        • WAS가 해당 클라이언트에게 응답을 보내기 위한 목적으로 객체 생성.
        • 서블릿을 해당 객체를 이용하여 content type, 응답코드, 응답메시지 등을 전송.
      • HttpServletRequest 객체 헤더정보, 파라미터
        • 파라미터 정보 입력 시작은 URL에 ? 로 시작한다.
        • & 활용하여 복수개의 파라미터 전달이 가능하다.
        • ex) http://localhost:8080/firstweb/param?name=choi&age=5

TO-DO

  • 코딩야학 4기 수료 (~ 08/14)
    • JSTL & EL 개념 학습, MySQL 환경 구축, SQL 기초 학습 (~ 08/07)
  • Local에 Layout을 가진 매우 간단한 자바 웹 어플리케이션 구현.

  • 부스트코스 Full-Stack Web Developer 이수 (~ 09/30)

  • 온라인 (git, html/css, js, java) 강의 듣기.