jnk1m
Foliage IT
jnk1m
전체 방문자
오늘
어제
  • 분류 전체보기 (209)
    • Today I Learned (34)
    • Java (47)
    • Database (15)
    • [NHN Academy] (27)
    • Spring (47)
    • HTML + CSS + JavaScript (11)
    • JSP (3)
    • Node.js (10)
    • React Native (2)
    • 기타 (8)
    • 스크랩 (5)

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
글쓰기 / 관리자
jnk1m

Foliage IT

Spring

[Spring] Day07_1 (Note): 회원 가입 만들기, 세션

2022. 3. 24. 21:43

2022/3/24

회원 가입

1.   scr/main/java 패키지 구성
com.member.controller : 컨트롤러 클래스
com.member.service: 비즈니스 로직 처리하는 service 파일들
com.member.domain: DTO, VO
com.member.meppar: Mapper 인터페이스

scr/main/resources 패키지 구성
com > member> mapper 폴더: Mapper.xml

webapp
           resources
                     폴더: .css
                     js폴더: .js
                     imgs폴더: 이미지들
           WEB-INF
            views
                     member 폴더: .jsp파일들

 

2.   경로와 필요한 페이지

URL Method 설명 jsp페이지
/member/main GET 메인 페이지 Main.jsp
/member/signup GET 회원가입 폼페이지 Signup.jsp
/member/signup POST 회원가입 처리 (signupPro.jsp)
/member/login GET 로그인 폼페이지 Login.jsp
/member/login POST 로그인 처리 (loginPro.jsp)
/member/mypage GET 내정보 페이지 Mypage.jsp
/member/modify GET 회원정보수정 폼페이지 Modify.jsp
/member/modify POST 회원정보수정 처리 (modifyPro.jsp)
/member/delete GET 회원 탈퇴 폼페이지 Delete.jsp
/member/delete POST 회원 탈퇴 처리 (deletePro.jsp)

3.  DB 테이블: springMember
DB 테이블
프라이머리 키
foreign key라는 제약은 나중에 추가해라.

 

4.   Service
MemberService: 인터페이스
MemberServiceImpl: 구현 클래스 (@Service 어노테이션 붙일 거임) 스프링 프레임 자체가 인터페이스 기준으로 움직이기 때문에 인터페이스를 만드는 것.
루트에 <!-- service패키지 스캔 추가  -->
<context:component-scan base-package="com.member.service"/>

5.   DAO를 만든다고 하면 (수업에선 생략)
MemberRepository: 인터페이스
MemberRepositoryImpl: 구현 클래스 (@Repository)

6.   Mapper
MemberMapper: 인터페이스
MemberMapper: xml 파일

루트에
<!-- mybatis로 mapper패키지 스캔 추가 -->
<mybatis-spring:scan base-package="com.member.mapper"/>  

 

Session 세션

: 클라이언트와 웹 서버 간의 상태를 지속적으로 유지하는 방법.

쿠키와 세션의 차이점은 어디에 정보를 저장하느냐의 차이.

쿠키: 웹 브라우저에 사용자 정보 저장 (클라이언트 측 사용자 정보 보관소) -> 크롬

세션: 웹 서버 쪽의 웹 컨테이너에 정보를 저장 (서버 측 사용자 정보 보관소) -> 톰캣

 

서버는 세션을 사용해서 클라이언트 상태를 유지할 수 있기 때문에, 주로 로그인한 사용자 정보를 유지하기 위한 목적으로 세션을 사용한다. 세션은 웹 서버에서만 접근이 가능하므로 브라우저와 서버의 상태 유지가 훨씬 안정적이고 보안 유지에 더 유리하며 데이터 저장하는데 한계가 없다.

간혹, 웹 브라우저에서 쿠키를 지원하지 않을 경우나 강제적으로 쿠키를 막는 경우 세션은 상관없이 사용 가능. 하지만 세션은 여러 서버에서 공유할 수 없다.

 

웹 컨테이너에는 세션 컨테이너가 존재하며, 기본적으로 한 웹 브라우저마다 한 세션을 생성하여, 사용자의 구분 단위가 됨. 한 브라우저에서 여러 jsp 페이지를 보여줘도 하나의 세션을 사용, 같은 페이지라도 브라우저에 따라 서로 다른 세션을 사용.

 

세션을 사용하면 클라이언트(브라우저)가 웹 서버의 세션에 의해 가상으로 연결된 상태가 되며, 웹 브라우저를 닫기 전까지 웹 페이지를 이동하더라도 사용자의 정보가 웹 서버에 보관되어 있어 사용자 정보를 잃지 않는다.

로그인 상태 유지 -> 세션에 속성을 하나 추가해줄 것임.

 

*HttpSession 메서드

void              setAttribute(String name, Object value): 속성명 name이름으로 value 속성 값 세션에 추가

Object           getAttribute(String name): 속성 명 name인 속성 값 Object로 리턴. 없으면 null

void               removeAttribute(String name): name 속성과 값 삭제

void               invalidate(): 현재 세션에 저장된 모든 세션 속성 제거

 

java.util.Enumeration getAttributeNames(): 세션 속성 명들 모두 리턴

long              getCreationTime(): 세션 생성된 시간 리턴

int                 getMaxInactiveInterval(): 해당 세션을 유지하기 위한 유지시간 리턴 1,800초(30분)

void               getMaxInactiveInterval(int interval): 세션 유지시간 초 단위로 할당

String            getId(): 세션에 할당된 고유 아이디 리턴

 

웹 브라우저마다 별도의 세션을 갖는다고 했는데, 이런 각 세션을 구분하기 위해 세션마다 고유 ID를 할당하는데 이를 세션 아이디라고 한다. 웹 서버는 웹 브라우저에 세션 ID를 기본적으로 전송, 웹 브라우저는 웹 서버에 연결할 때마다 매번 세션 ID를 보내서 서버가 어떤 세션을 판단할 수 있게 한다.

웹 서버와 웹 브라우저는 세션 ID를 공유해야 하는데 이를 위해 사용하는 것이 쿠키. 쿠키 목록 중 JSESSION인 쿠키가 세션 ID 공유할 때 사용하는 쿠키이다.

 

    'Spring' 카테고리의 다른 글
    • [Spring] Day07 (Code)
    • [Spring] Day07_2 (Note+Code): MyBatis까지 완료한 최종 파일 생성법 정리!
    • [Spring] Day06 (Code)
    • [Spring] Day05 (Code)

    티스토리툴바