6.spring

spring_개념_Day_03

구이제이 2024. 3. 14. 08:30

●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