2021 03 28
2021-03-28¶
SparkJava¶
- 개요 - JVM 기반에서 실행이 가능한 가벼운 웹 프레임워크 - 스프링과 같이 MVC 패턴 구조를 따르지 않는다 - 대신 "quickly creating web-applications in Java with minimal effort"를 위해 탄생
- 수업 들으면서 메모한 부분
- 참고 1: https://www.youtube.com/watch?v=bzgREaiJ6_E
- 참고 2: https://www.youtube.com/watch?v=7hyvWAB_2HY
- 참고 3: https://www.youtube.com/watch?v=FAjDHERF5to
- 참고 4: https://www.youtube.com/watch?v=2t22XmZj2kk
- HTML form에 입력한 정보를 처리하는 방식 - GET: url에 입력한 정보가 노출되어 전달됨 (queryString 형식) - POST: HTTP request의 body로 전달됨
- Template Engine으로 Web Server의 요청을 HTML 태그 자체로 넘겨주는 것이 아니라, 필요한 부분을 바꿔서 전달이 가능하다 - Handlebars template engine... Mustache의 방식 확장라는데...?
- Java bean 규약? - Java Class의 Data를 어찌 조회하는가? - ex) {{user.name}} 은 user.getName(); 을 실행시킴
Template Engine¶
- 참고 1: https://en.wikipedia.org/wiki/Template_processor
- 참고 2: https://gmlwjd9405.github.io/2018/12/21/template-engine.html
- 정의 - 템플릿 엔진은 결과 도큐먼트 생성을 위해 템플릿과 그에 상응하는 데이터 모델을 합치는 역할을 수행한다 - 템플릿은 템플릿 언어로 작성된다 - 이로써, 웹 템플릿 엔진은 view code(HTML)과 data logic code(DB connection)을 분리하는 기능을 한다
- 제공 기능 - 전반적으로 프로그래밍 언어와 비슷한 점이 많은데, 그 중 "텍스트 처리" 기능에 더 중점을 둔다 - 변수 & 함수 - 텍스트 대체 - 파일 삽입 - 조건문 & 반복문
- 서버 사이드 템플릿 엔진 VS 클라이언트 사이드 템플릿 엔진 - 서버 사이드 템플릿 엔진 - 서버에서 가져온 데이터를 미리 정의된 템플릿에 넣어 HTML을 생성 후, 클라이언트에게 전달 - HTML에서 고정적으로 사용하는 부분은 템플릿으로 만들고, 동적으로 생성되는 부분만 템플릿의 특정 장소에 끼워 넣도록 한다. - 클라이언트 사이드 템플릿 엔진 - HTML 형태로 코드를 작성하고, 동적으로 DOM을 그림 - 데이터를 받아 DOM 객체에 동적으로 그려주기
- Handlebars template engine
- 나중에 읽어보기 1: https://blog.naver.com/tmondev/220398995882
- 나중에 읽어보기 2: https://blog.naver.com/tmondev/220402051411
- 참고 1: http://jknack.github.io/handlebars.java/
- 서버 쪽 템플릿 고치면 프론트 쪽도 고쳐야함 - 유지보수 낭비가 됨 - 양쪽 모두 동일한 소스로 템플릿 관리하면 참 좋을텐데 - Handlebars.java를 적용하면 가능 - Handlebars.java는 Mustache를 java 환경에서 쓸 수 있도록 함 - 특히 JS를 많이 쓰는 웹에서 용이 - 아 잘 모르겠다 솔직히...
Java Bean¶
- 참고 1: https://imasoftwareengineer.tistory.com/101
- 참고 2: https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94%EB%B9%88%EC%A6%88
- 정의 - 빌더 형식의 개발도구에서 가시적으로 조작이 가능하고 재사용이 가능한 SW 컴포넌트 - 뭔소리지...?
- 특징 - JavaBean API Specification에 따른 Standard - 1. 모든 필드는 private, getter/setter로만 접근 가능 - 2. Argument가 없는 no-argument 생성자가 있음 - 3. java.io.Serializable 인터페이스를 구현