session과 request 연습

session과 request 연습

과제 LAB10_1이자 오늘 만들어본 간단한 웹은 로그인 화면이다.

간단해 보이지만, 아이디에서 이름을 가져오고, 비밀번호는 'mia' 로 조건이 걸려있다. 펄프픽션에서 우마서먼 이름이 mia 로 나오기 때문이당. 비밀번호가 틀리면 처음 화면으로 초기화 되고, 비밀번호가 일치하면 입력한 아이디로 'XXX님 환영합니다' 가 뜬다. 내장객체 속성은 session 이다. 즉 같은 브라우저에서는 새 창을 열어도 계속 로그인이 되어있다.

<정리하자면>

1. 내장객체는 session 단위이다. (session의 소멸은 웹브라우저 종료시점이다.)

2. 아이디를 request.getParameter로 받는다.

3. 비밀번호는 'mia'로 설정해두고 틀리면 session.invalidate 로 return

우선 껍데기 부터 만든다. index.jsp 로 시작페이지

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> div { text-align: center; } table { margin-left:auto; margin-right:auto; } start page PULP FICTION

가운데에 예쁘게 투명 테이블을 만들어 주고, 오른쪽에 사진(viewer.jsp) 왼쪽에 로그인 폼(login.jsp)을 만든다.

viewer.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Image

viewer.jsp이다. lab폴더 안에 images파일을 만들어 상대경로를 썼다. alt태그를 쓰면 사진이 오류로 뜨지 않더라도 조그만한 귀여운 사진이미지가 생겨서 사람들이 이 자리가 사진이 있는 자리라는 것을 알 수 있게 해준다.

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> login #login, #logout {text-align:left;} <%request.setCharacterEncoding("UTF-8"); String username =(String)session.getAttribute("user"); if(username != null) { %> <%=username %>님 환영합니다. <% } else { %> 아이디: 비밀번호: <% } %>

여기서부터 정신차려야 한당. 우선 한글이 출력되는 부분은 환경을 setCharacterEncoding("UTF-8")로 바꿔준다.

checker.jsp 와 login.jsp response와 request 관계

if(username != null)

{ xxx님 환영합니다 }

else

{로그인 화면}

if조건은 충족을 시키지 않기 때문에 else 문이 실행된다.

text 창에 이름(userName)과 비밀번호(usepwd)를 넣고 로그인을 누르면 checker.jsp 파일로 이동한다.

이때, hidden태그는 자신의 value 인 "login"을 전송하고, submit은 form1 전체를 POST 방식으로 전달한다.

checker.jsp 로 이동하면 requset.getParameter("action")를 String act 에 넣는다. action은 hidden태그의 벨류값으로 login.jsp 에서 볼수 있듯이 "logout"과 "login"이 있다.

if(act == "login")

{

request.getParameter("username"), (userpwd)

if(아이디가 있고, 비밀번호가 mia면)

'user'에 아이디를 넣어라.

else(비밀번호가 mia가 아니면)

세션의 모든 값들 삭제

}

index.jsp페이지로 값 전달하지 않고 이동만.

이름과 비밀번호를 넣고 로그인을 눌렀기 때문에, 아이디와 비밀번호를 가져오는 작업을 한다. 비밀번호가 mia면 아이디 속성을 user 스트링에 넣고, 세션단위로 한다. checker.jsp에서 setAttribute로 저장한걸 login.jsp에서 getAttribute으로 가져오면서 username 에 넣는다. 이제 usesrname은 null이 아니다. 그러므로 'username님 환영합니다'가 출력된다.

session 범위로 로그인을 했기 때문에 같은 브라우저 내에서라면 새 창을 띄워도 계속 로그인이 되어있다.

로그아웃을 누르면 hidden 의 벨류인 'logout'이 checker.jsp 페이지로 전송되므로 sendRedirect("index.jsp")로 이동한다. sendRedirect은 값을 전송하지 않고 페이지만 넘어가기 때문에, 시작페이지로 새로 접속하는 것과 같다.

비밀번호가 mia가 아였다면 session.invalidate()로 입력했던 모든 속성의 값을 삭제시킨다.

from http://hyun-0805.tistory.com/4 by ccl(A) rewrite - 2021-11-23 04:02:16