0.비로그인 사용자는 로그인버튼과 가입버튼, 로그인 사용자는 로그아웃 버튼만 보이게
src-main-webapp-index.jsp에다가
a태그를 이용해 login_form.jsp(로그인창), join_form(회원가입창)를 넣어줍니다.
로그인했을때 로그인창으로,회원가입하기가 안보여야 하기때문에
안보이게 해보겠습니다.
위에 c태그라리브러리를 작성합니다.
먼저 session에 있는 변수를 받아옵니다.
스크립틀릿 변수를 el에 쓰는건 set같은걸 써야함
sId라는 변수안에다가 자바 sId를 넣어주겠다.
첫번째 방법
두번째 방법
실행하고 로그인을 하고 메인페이지로 오면 게시판 입장하기만 보여지는걸 확인할수 있다.
로그인 한사람한테 로그아웃 버튼을 보여지도록 하겠습니다.
<c:if test="${sId ne null}" >
if를 써서 sId가 null이 아닌사람 (=로그인 한사람)
로그인을 안한 사람은
이렇게 보이고
로그인을 한 사람은
로그아웃만 보이게 됩니다.
1.글쓰기 버튼은 회원에게만 보입니다.
BoardListService
로그인 여부는 세션값을 날려서 저장한 다음, 바인딩해서 jsp페이지에서 확인합니다.
서블릿 내부에서 세션쓰는법
일번. 세션 객체 생성(.jsp 내부에서는 자동으로 생성되는 "내장 객체" 이지만 서블릿 로직 하에서는 생성해줘야 쓸 수 있음.
체크해 보겠습니다.
로그인을 안한상태로 게시판에 들어가면
로그인 여부 null을 볼수 있습니다 .
로그인을 하고 들어가면
로그인 여부 velog로 들어온걸 체크할수 있습니다.
체크했을때 확인이 되면
바인딩해서 포워딩시 세션값이 같이 넘어가도록 처리 합니다.
boardlist.jsp
세션까지 체킹을 했고 체킹한 세션값을 보드리스트로 날려주고 있기 때문에 (글목록, 세션에 저장한값) 넘어갔을때 글쓰기 버튼이 로그인한 사람한테만 보이도록 해보겠습니다.
첫번째 방법
sId가 있을경우 (비어있지 않다 sId가)
두번째 방법
세션아이디가 null이 아닐경우
실행해 보면
로그인 했을때 글쓰기 버튼이 보이는걸 확인할 수 있다.
로그인 안했을때
글쓰기 버튼이 안보인는걸 확인할 수 있다.
2.비로그인 상태로 어찌저찌 글쓰기 주소를 강제로 입력해 글쓰기 창제 접근혀고 해도 로그인창을 리다이렉트 시켜버립니다.
서비스 없이 로그인 감지 하는거 먼저 만들어보겠습니다.
boardform.jsp
위에 c태그라브러리를 작성해줍니다.
서비스 없이 로그인 감지하는 방법은 c태그를써서 바로 리다리렉트를 씁니다.
세션언더바 아이디 값이 안들어 있으면 자바 스크립트를 가동시켜서 바로 보드리스트.do로 이동해버리는 로직이 실행.
확인해 보면
로그인 안한 사람이 글을쓸려고 주소에 바로 InsetForm.do를 쳐도 안들어가지고 boardlist.do로 오는걸 확인할 수 있습니다.
이걸 뚫는 방법은 f12누르고 설정에 들어가 디버거 - javaScript사용 안함 을 누르고
주소창에http://localhost:8181/MyFirstWeb/insertForm.do 쓰고 엔터버튼을 누르면 들어가지는걸 확인할 수 있음.
위에 방법을 막기 위해서 서비스를 만듭니다.
kr.co.ict.servlet.service - BoardInsertFormService 클라스 생성해줍니다.
생성 후 세션 객체를 생성해주신다음 세션값을 얻어 오게 해주고,
FrontController 내부와 연결해서
insertForm.do 접근시 세션값이 콘솔에 찍히도록 처리 하겠습니다.
session생성
session값을 얻어옴
콘솔에 찍어보기
FrontController
작성해준다.
실행해 보면
insertform.do가 null인걸 확인해서 session값을 얻어오는데 성공했단걸 알수 있습니다.
그럼 이제 boardform.jsp에서 썼던걸 지워줍니다.
(지워줌)
BoardInsertFormService에다가
throws ServletException, IOException {작성해주고
IBoardService
throws ServletException, IOException; 넣어줍니다.
BoardInsertFormService
포워딩을 해주면 된다.
실행해보면
로그인 안하사람은 접근 못하는걸 확인할수 있습니다.