정보보안공부

JSP_day13 본문

JSP

JSP_day13

Steady_sp 2017. 9. 26. 01:35

<session을 이용해 로그인하기>

 

1. 한 화면이 로그인 창으로만 구성되어 있을때

 

## login.jsp

 

 

--> 로그인 하려는 화면의 폼태그르 작성한다. action="loginOk.jsp"를 통해 사용자아이디와 암호를 loginOk.jsp로 전송한다.

 

## loginOk.jsp

 

 

--> request.getParameter를 이용해 아이디와 비밀번호를 받고 if ( userid != null && userid.equals(password ) userid에 값이 있고 임의의 조건으로 아이디와 비밀번호가 같으면 로그인이 된다고 설정한다. 로그인에 성공하면 session.setAttribute("userid", userid); 사용자 아이디를 세션 변수에 저장한다. response.sendRedirect("index.jsp") 를 통해 로그인성공하거나 로그인 성공못하거나 상관없이 index.jsp로 보낸다.

 

## index.jsp

 

 

--> if ( session.getAttribute("userid")==null ) 을 통해 세션변수에 저장된 userid값이 비어있으면 로그인이 안된 상태이므로 <a href='login.jsp'>로그인</a>를 통해 login.jsp파일로 링크를 걸어준다.

--> else는 로그인 되어있는 상태를 나타내므로 session.getAttribute("userid")를 이용해 세션변수에 저장된 userid를 String형으로 변환하여 out.println에 의해 출력하고 로그인 되어있는 상태에서 로그아웃을 할수 있게끔 <a href='logout.jsp'>로그아웃</a>를 이용해 logout.jsp파일로 링크를 걸어준다.

 

## logout.jsp

 

 

--> session.removeAttribute("userid")를 이용해 세션에 저장된 userid값을 지우고 response.sendRedirect("index.jsp")를 이용해 index.jsp파일로 보낸다.

--> 아래의 화면으로 과정을 확인해보자

 

 

--> login.jsp의 폼태그 화면에서 사용자 아이디와 암호를 다르게 입력하면 로그인 되지 않는다.

--> 로그인 버튼을 누르면 loginOk.jsp파일로 넘겨지는데 아이디와 암호를 다르게 입력하였으므로 바로 index.jsp파일로 넘겨진다. index.jsp파일에 의해 userid의 값이 비어있으면 login.jsp링크를 설정해두어서 로그인링크를 클릭하면 다시 로그인창이 뜬다.

 

 

--> 로그인링크를 클릭하면 다시 로그인창이 뜬다.

 

 

--> 이번에는 사용자 아이디와 암호를 동일하게 입력한뒤 로그인버튼을 틀릭한다. loginOk.jsp에의해 아이디와 암호가 동일하므로 세션값에 "userid"값이 저장되고 index.jsp파일로 넘겨진다. index.jsp파일의 조건에 의해 else조건과 일치하므로 환영합니다. 출력후 로그아웃 링크가 출력되어진다.

 

--> 로그아웃 링크를 누르게되면 logout.jsp파일에 의해서 세션에 저장된 userid값이 제거되고 response.sendRedirect에의해 login.jsp파일로 이동하게되어 다시 로그인창이 뜨게된다.

2. 한 화면에서 화면과 로그인창이 동시에 있을때 화면이 바뀌어도 로그인이 유지된다.

 

## login2.jsp

 

 

--> <% %> 안에 자바코드를 작성하는 스크립트릿 방식으로 session에 userid가 비어있으면 form태그 적용되서 loginOk2.jsp파일로 전송되고 else 그렇지 않을경우 userid가 저장되어있는경우 table로 session에 저장된 userid값을 getAttribute로 불러온다.

 

## loginOk2.jsp

 

 

 

--> String url = request.getHeader("referer")을 통해 어디에서 호출했는지 url에 저장하고 response.sendRedirect(url)을 통해 다시 그곳으로 보낸다.

 

## logout2.jsp

 

 

--> 세션에 저장된 userid를 제거하고 loginOk2.jsp와 마찬가지로 어디에서 호출했는지 url에 저장하고 다시 그곳으로 보낸다.

 

## main1, 2, 3

 

 

--> 3개의 페이지를 만든다. 3개의 페이지에 페이지1, 페이지2, 페이지3을 링크건다.

--> 페이지3 에서 <%@ include file="login2.jsp" %>을 통해 login2.jsp파일을 실행한다.

 

 

--> 메인페이지3 화면에 login2.jsp파일이 실행되어 로그인창이 보여진다.

 

 

--> 로그인하기 위하여 아이디와 암호를 같은것을 입력한뒤 로그인을 누르면

 

 

--> 이때 링크로 정해둔 페이지1을 누르면 메인페이지1로 넘어가는데 메인페이지도 <%@ include file="login2.jsp" %>를 사용하였으므로 세션에 저장된 로그인된 userid가 메인페이지 3과 마친가지로 똑같이 보여지는것을 확인 할 수 있다.

 

<useBean액션태그>

 

useBean액션태그 사용하지 않을 때

 

## form.jsp

 

 

--> 폼태그를 작성한다. action="result1.jsp"에 의해 result1.jsp로 데이터가 전송 된다.

 

## result1.jsp

 

 

--> request.getParameter을 할때 String, int, boolean 각각의 형변환을 해줘야되는 불편함이 있다. 받는정보가 위의 예시보다 많다면 매우 번거로울 것이다. 

 

 

--> 형변환을 안해주었을때 나이오류

 

## MemberDTO

 

 

--> 형변환을 손쉽게 하기위해 자바클래스를 만든뒤 getter & setter설정을 해놓는다.

 

## result2.jsp

 

 

--> <% request.setCharacterEncoding("UTF-8"); %>로 한글을 적용시킨다.

--> <jsp:setProperty property="*" name="vo"/>

--> <jsp:useBean id="vo" class="kr.koreais.vo.MemberDTO" scope="request"/> 로 설정한뒤 <jsp:setProperty property="변수" name="vo"/> 모든 setter을 호출할경우에는 property="*" name="vo" 로 설정하게되면 모든 setter가 호출된다. 값을 불러올 때는 jsp:getProperty를 사용하기도하지만 이방법보다는 scope="request"로 설정해 놓은뒤 EL표현인 ${vo.name} ${vo.age} ${vo.gender ? "남자":"여자"} 방법을 주로사용한다.

 

--> form.jsp 파일에 action="result2.jsp"로 설정해두고 form.jsp를 실행했을때 화면에 나타는 getProperty 와 EL표현식 확인

 

 

 

 

 

 

 

 

 

 

 

'JSP' 카테고리의 다른 글

JSP_day15  (0) 2017.09.28
JSP_day14  (0) 2017.09.27
JSP_day12  (0) 2017.09.23
JSP_day09_Gson을 이용해 온라인 설문조사 만들기  (0) 2017.09.19
JSP_8. Gson  (0) 2017.09.19
Comments