java 기초 흔한 문제 해석 (5) 입력 출력 흐름 및 서열화 및session

입력 출력 흐름 및 서열화 및session

  • 자바 언어에서 Object OutPutStream은 a. 바이트 흐름 b. 문자 흐름 c. 대상 출력 흐름 d. 데이터 흐름
  • 을 가리킨다.
    입력 및 출력 흐름
    입출력 스트림
    —1.바이트 흐름 InputStream(그림 오디오 등 비문자 데이터 읽기) - 바이트 읽기는 모든 바이트 입력 흐름의 슈퍼클래스입니다. 한 바이트(8bit)를 읽을 때마다 OutputStream과 대응하는 가장 일반적인 FileInputStream입니다.
    핵심:
    ObjectInputStream 객체 입력 바이트 흐름
    객체를 하드 드라이브에 저장 - 시리얼화된 후 저장 읽기 하드 드라이브의 객체 - 역시리얼화된 후 읽기
    ObjectOutPutStream 객체 출력 바이트 흐름
    —2.문자 흐름 Reader는 문자 흐름을 읽는 추상 클래스(이중 바이트 읽기)에 사용됩니다. 한 글자에 두 바이트입니다. - 문자 하위 클래스만 읽을 수 있습니다. BufferReader(버퍼 효율이 비교적 높음)
    서열화와 반서열화의 예
    /*
     *  , 
     * */
    public class ObjectStreamTest {
    
        public static void main(String[] args) throws Exception {
            //ObjectStreamTest.writeObject();
            ObjectStreamTest.readObject();
        }
        // 
        public static void readObject() throws Exception {
            ObjectInputStream read=new ObjectInputStream(new FileInputStream("C:/student.o"));
            Student s1=(Student)read.readObject();
            Student s2=(Student)read.readObject();
            System.out.println(s1 + "," + s2);
        }
        // 
        public static void writeObject() throws Exception {
            ObjectOutputStream write =new ObjectOutputStream(new FileOutputStream("c:/student.o"));
            write.writeObject(new Student(1, "aa"));
            write.writeObject(new Student(2, "bb"));
            write.close();
        }
    }

    솔리드 클래스 객체
    //  --->     ( )
    public class Student implements Serializable{// Serializable , 
        //  :  
        private static final long serialVersionUID = 3326694874182755921L;
        @Override
        public String toString() {
            return "Student [id=" + id + ", age=" + age + "]";
        }
    
        private int id;
        private String age;
    
        public Student(int id, String age) {
            super();
            this.id = id;
            this.age = age;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getAge() {
            return age;
        }
    
        public void setAge(String age) {
            this.age = age;
        }
    
    }
    
  • 웹 프로젝트에서의 응용 장면 서열화와 반서열화
  • 웹 서버에서work 디렉터리 아래에 서열화된session 파일이 있습니다 웹 서버가session을 닫아도 소각되지 않았습니다.session은 하드디스크에 영구화(서열화)되어 파일을 생성하고 웹 서버를 다시 시작한 후 하드디스크에 있는 파일을 메모리로 반서열화합니다.전제 서열화와 반서열화 대상은serializable 인터페이스를 실현해야 합니다.
    세션 폐기 조건 1.브라우저가 닫히고 30분 동안 서버 세그먼트와 상호작용을 하지 않았습니다. 세션 성명 주기가 만료되었습니다.세션 폐기 방법이 있어요.
    사용자가 로그인 상태에서session을 유지하고 웹 서버를 멈추면session은 소각되지 않으며 웹 서버를 다시 시작한 후에session는 메모리로 반서열화되어 페이지를 다시 갱신하고 로그인 상태입니다.브라우저를 다시 열면 (캐시 세션이 효력을 상실하지 않음) 로그인하지 않습니다.
    서열화 번호를 강제로 수정하면 웹 서버를 다시 시작하면 반서열화 오류가 발생합니다

    좋은 웹페이지 즐겨찾기