●boardApp
●Cookie
[ 세션 ]
String getId() : 세션 id를 반환
long getAccessedTime() : 세션 내에서 최근 요청을 받은 시간을 반환, 가장 마지막에 요청한 시간을 반환
boolean isNew() : 새로 생성된 세션인지를 반환
request.getSession() 호출 후 사용
void invalidate() : 세션 객체를 제거(저장된 객체도 함께), 즉시 세션 종료(logout)
void setMaxInactiveInterval(int interval) : 지정된 시간(초) 후에 세션을 종료(예약 종료)
int getMaxInactiveInterval() : 예약된 세션 종료 시간을 반환
<속성 관련 메소드>
void setAttribute(String name, Object value) : 지정된 값(value)을 지정된 속성 이름(name)으로 저장
Object getAttribute(String name) : 지정된 이름(name)으로 저장된 속성의 값을 반환
void removeAttribute(String name) : 지정된 이름(name)의 속성르 삭제
Enumeration getAttributeNames() : 기본 객체에 저장된 모든 속성의 이름을 반환
--------------------
세션의 종료
HttpSession session = request.getSession();
session.invalidate() : 세션을 즉시 종료
session.setMaxInactiveInterval(30*60) ; // 예약 종료 (30분 후), 초단위
-----------------------
쿠키(Cookie) : 브라우저에 저장, 서버 부담 없음, 보안에 불리(그래서 암호화 많이 함), 서버 다중화에 유리
세션(HttpSession) : 서버에 저장, 서버 부담 있음, 보안에 유리, 서버 다중화에 불리
▣ 람다식(Lambda Expression)
- 자바에서 함수적(functional) 프로그래밍을 지원하는 기법
- 코드의 간결화 및 병렬처리에 강함(Collection API 성능 효과적 개선 )
함수적 프로그래밍 : 기능만 전달하면 내부적으로 처리
자바는 약간 다른데 이것을 자바에서 처리하게 하는 것이 람다식임
- 자바는 새로운 함수 문법을 정의한 것이 아니라 이미 있는 인터페이스를 빌어 람다식을 표현
메소드의 정의 -> 람다식 표현
메소드의 호출 -> 참조변수.메소드이름 // 객체 지향과 동일
- 함수적 인터페이스(functional interface)
내부에 단 1개의 추상메소드만 존재하는 인터페이스
1. 람다식 정의
1) 인터페이스의 구현 메소드(함수) -> 람다식으로 변환
-- 메소드 1
void lamdaTest01(){
System.out.println("hi");
}
-- 람다식 1
() -> { System.out.println("hi"); }
() -> System.out.println("hi"); // 실행문이 하나일 경우만 {} 생략가능
-- 메소드 2
void lamdaTest02(int a) { System.out.println(a); }
-- 람다식2
(int a) -> { System.out.println(a);}
a -> { System.out.println(a);} // 매개변수 타입 생략 가능
// 매개변수가 하나일 경우 ( )는 생략 가능
a -> System.out.println(a);
-- 메소드 3
int lamdaTest03() { return 3; }
-- 람다식 3
() -> {return 3;}
-- 메소드 4
double lamdaTest04(int a, double b) { return a+b;}
-- 람다식 4
(int a, double b) -> {return a+b;}
(a, b) -> {return a+b;}
(a, b) -> a + b; // return만 있는 경우는 생략 가능
// return이 생략되는 경우 매개변수 타입은 반드시 생략해야 함
- 익명 이너 클래스 내 람다식 표현
interface A{
void method1()
}
A a = new A(){
public void mthod1(){
……
}
}
A a = () -> { ……. }
2) 메소드 참조(method reference)
- 전달할 동작을 수행하는 메소드가 이미 정의된 경우에 표현할 수 잇는 람다식의 축약형
- 람다식에 아직 남아 있는 불필요한 정보까지 없애기 때문에 람다식에 비해
더욱 간결하고 가독성이 좋음
- 메소드를 참조해서 매개변수의 정보 및 리턴 타입을 알아내 람다식에서 불필요한
매개변수를 제거하는 것을 목적으로 함
- 클래스 :: 메소드
s -> Integer.parseInt(s)
Integer::parseInt
(left, right) -> Math.max(left, right)
Math :: max
- 정적 메소드 참조 : 클래스이름::정적메소드
인스턴스메소드 참조 : 객체이름 ::인스턴스메소드 , 또는 클래스이름::인스턴스메소드
생성자 참조 : 클래스이름 :: new
또는 배열타입이름::new
●Comput
package lambdaexam;
@FunctionalInterface //이 어노테이션 : 추상 메소드 단 하나만 가진 언페이스
public interface Comput {
int compute(int x, int y); //추상 메소드
}
●LamdaComput
package lambdaexam;
public class LamdaComput {
public static void main(String[] args) {
//Comput com = new Comput();
Comput com = new Comput() {
@Override
public int compute(int x, int y) {
// TODO Auto-generated method stub
return 0;
}
};
//----------------------------------------- 람다식
Comput com1 = (int x, int y) -> {
return x + y;
};
//인터페이스나, 추상메소드가 못올라가는 것은...
//힙이라는 영역에는 비어있는게 들어갈수없습니다.
//완성되지 않는 것이 올라갈수없습니다.
}
}
'6.spring' 카테고리의 다른 글
spring_개념_Day_05 (0) | 2024.04.03 |
---|---|
spring_개념_Day_04 (0) | 2024.03.14 |
spring_개념_Day_02 (0) | 2024.03.13 |
spring_개념_Day_01 (0) | 2024.03.13 |