java 36

Model2 - MVC

모델 ? 어떤 일이든 주로 사용하는 방식이 있다. 그들만의 룰. 우리는 '표준'이라고 한다. 웹 개발도 마찬가지다. 꼭 그래야만 할 필요는 없지만 웬만하면 이런 구조로 만들자, 고 하는 '표준'이 있다. 이것을 모델이라고 한다. Model1 비즈니스 로직과 화면 처리를 하나의 JSP가 모두 처리하는 것이 모델1 방식이다. 그러니까 지금까지는 one.jsp는 브라우저의 요청을 받아서 비즈니스 로직을 수행한 뒤, 다시 화면까지 처리하는 구조였다. 모델1 방식의 장점이라면 구현이 쉽고 편하다는 것이다. 그러나 화면이 복잡해지면 화면 처리와 비즈니스 로직이 섞일 위험이 있다. 그럼 붕괴된 도로처럼 유지 보수하기가 힘들어진다. Model2 모델2 방식의 핵심은 클라이언트의 요청/응답 처리, 비즈니스 로직 처리를 ..

Servlet-JSP 2020.09.11

JSP😇

JSP? 먼 옛날. 서블릿 위에 html태그를 써서 화면으로 전달하던 시절. 디자이너와 개발자는 서로 얼굴 붉힐 일이 많았을 것이다. 이런 일이 있었다. 디자이너는 오늘 일찍 퇴근해서 애인과 종로에서 가장 오래된 레스토랑인 아지오에 갈 생각이다. 그런데 개발자라는 작자가 작업을 끝내지 못해서 오전 내 작업을 못하고 있다. 오후 세시께야 파일을 받았다. 디자이너는 세 시간 안에 작업을 끝내겠다는 생각으로 열의를 불태운다. 흠. 너무 과했던 모양이다. 실수로 자바 코드 몇 개를 건드렸는데...controll + z도 안 먹는다... 그렇게 디자이너와 개발자 사이는 비포장도로처럼 위태로워졌을 것이며 어쩌면 타이어에 펑크가 났을지도 모르는 일이다. 이런 배경에서 누군가. 그러니까 평화를 지향하던 인간 하나가 J..

Servlet-JSP 2020.09.11

Servlet Filter

서블릿 필터 요청/응답과 관련된 작업을 미리 처리한다. 이를테면 setCharacterEncoding()같은 귀찮은 작업을 필터에 설정해두면 요청/응답할 때 알아서 한다. Request Filter - Response Filter 필터는 크게 요청 필터와 응답 필터로 나눌 수 있다. 요청 필터 사용자 인증 및 권한 검사 요청 시 요청 관련 로그 작업 인코딩 응답 필터 응답 결과에 대한 암호화 서비스 시간 측정 관련 API javax.servlet.Filter javax.servlet.FilterChain javax.servlet.FilterConfig Filter인터페이스의 메서드 Method 기능 destroy() 필터 소멸 시 컨테이너에 의해 호출되어 종료 작업 수행 doFilter() 요청/응답 시..

Servlet-JSP 2020.09.11

서블릿 스코프

Servlet Scope! 서블릿 속성attribute 세 가지 ServletContext HttpSession HttpServletRequest 각 속성을 setAttribute()로 바인딩하고 getAttribute()로 꺼내서 쓴다. 서블릿 스코프scope란, 서블릿 속성에 접근할 수 있는 범위를 말한다. servlet scope ! 스코프 종류 해당 서블릿API 속성의 스코프 애플리케이션 스코프 ServletContext 속성은 애플리케이션 전체에서 접근할 수 있다. 세션 스코프 HttpSession 속성은 브라우저에서만 접근할 수 있다. 리퀘스트 스코프 HttpServletRequest 속성은 해당 요청-응답 사이클 안에서만 접근할 수 있다. 스코프의 기능 로그인 상태 유지 장바구니 MVC - ..

Servlet-JSP 2020.09.11

예외처리

예외 Exception 이미지 출처 예외 클래스 다이어그램 자바에서 에러는 크게 두 갈래로 나눌 수 있다. error exception 예외exception는 처리할 수 있지만, 에러는 손 쓸 방법이 없다. Exception은 RunTimeException과 그 외 Exception 두 갈래로 다시 나뉜다. 다이어그램을 자세히 보면 RuntimeException은 Unckecked, 그 외 Exception은 Checked라고 표시되어 있다. checked - unchecked check : 컴파일러가 예외 체크 (Exception클래스) unchecked : 컴파일러가 예외 체크 x (RuntimeException) 언체크드 예외인 RuntimeException은 선택적으로 처리할 수 있다. 그러니까 ..

Java 2020.09.10

람다Lambda

📚 자바의 정석을 정리한 내용입니다. ▪ 람다식Lambda Expression 자바는 두 번의 큰 변화가 있었다. JDK1.5의 지네릭스. JDK1.8의 람다. 람다의 등장으로 객체지향언어를 너머 함수형 언어가 가진 기능까지 갖추게 되었다. 말하자면 비로소 호모 사피엔스의 길에 접어든 것일까? 람다식이란 간단히 메서드를 하나의 식으로 표현한 것이다. 함수를 간략하면서도 명확한 식으로 편할 수 있다. 메서드를 람다식으로 표현하면 반환 값이 없어진다. 그래서 익명 함수라고 부르기도 한다. 그래서 어떻게 쓰는 거냐면. int max(int a, int b) { return a > b ? a:b; } 두 값을 입력받고 큰 값을 반환하는 max라는 메서드가 있다. 이것을 람다로 변환하면 이렇게 쓸 수 있다. (i..

Java 2020.09.09

와일드카드

참고 : 자바의 정석 와일드 카드 기호 '?' 표현하는데, 와일드카드는 어떤 타입도 될 수 있다. 아래 코드를 보자. package com.javaex.generics; import java.util.ArrayList; import java.util.List; public class FruitsBoxEx3 { public static void main(String[] args) { FruitBox fruitBox = new FruitBox(); FruitBox appleBox = new FruitBox(); fruitBox.add(new Apple()); fruitBox.add(new Grape()); appleBox.add(new Apple()); System.out.println(Juicer.make..

Java 2020.09.09

제네릭 클래스Generics Class

자바의 정석을 참고했습니다. Generics 컬렉션 클래스 컴파일 시 타입 체크를 해주는 기능. 장점 타입 안정성을 높여서, 의도하지 않은 타입의 객체가 저장되는 것을 막는다. 지네릭 클래스 class Box { T item; void setItem(T item) { this.item = item; } T getItem() { return item } } Box에서 T를 타입 변수라고 한다. 타입변수는 꼭 T가 아니라도 상황에 맞는 다른 알파벳을 지정할 수 있다. 위에서 정의한 제네릭 클래스 Box의 객체를 생성한다고 했을 때, 가 무슨 타입인지 지정해야 한다. Box box = new Box(); new Box void add(Fruit item) fruitBox.add(new Fruit()); fru..

Java 2020.09.09