데이터베이스를 사용하지 않고 세션만을 이용해서 로그인 기능을 구현해봅시다.
미리 값을 admin과 비밀번호 1111로 지정해줍시다.
세션의 경우에는 데이터베이스와는 달리 클라이언트 측에 저장이 됩니다.
테스트할 때 브라우저에서 쿠키 및 캐시 삭제를 하면서 진행하셔야 될지도 모릅니다.
저는 로그인 디자인을 끝낸 페이지에서 LoginServlet으로 POST 방식으로 값을 전달하도록 했습니다.
LoginServlet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
HttpSession session = request.getSession();
PrintWriter out = response.getWriter();
String email = request.getParameter("inputEmail");
String[] parse = email.split("@");
String name = parse[0];
String password = request.getParameter("inputPassword");
if(name.equals("admin")&&password.equals("1111")) {
session.setAttribute("name",name);
response.sendRedirect("map.jsp");
}else {
out.println("<script>alert('아이디와 비밀번호를 다시 확인해주세요'); history.back();</script>");
}
}
|
cs |
이메일로 입력받아서 내용이 길어 보입니다만 어렵지 않습니다.
일단 저는 나중에 admin@naver.com 이면 admin만 따로 보여주고 싶었습니다.
이럴 거면 ID로 할걸 그랬나 싶지만 파싱이 어렵지 않으니까 문자열을 잘라줍니다.
이후에는 원하는 값인 admin과 1111인지 비교하고요.
맞다면 세션에 저장 후 map.jsp로 redirect 시킵니다.
틀리다면 재확인 요청 문구를 출력합니다.
map.jsp
로그인 회원가입의 리스트를 계정명과 로그아웃으로 바꿔줍시다.
이를 위해서는 몇 가지 절차가 필요합니다.
- 이 사람이 로그인된 상태인지 알아보기(세션 활용)
- 리스트 바꾸기
거창하게 말하고 싶었으나 간단했군요.
1
2
3
4
5
6
7
8
9
|
<ul>
<%if(session.getAttribute("name")==null){ %>
<li class="menu"><a href="login.jsp">로그인</a></li>
<li class="menu"><a href="register.jsp">회원가입</a></li>
<% }else{ %>
<li class="menu"><%=session.getAttribute("name") %></a></li>
<li class="menu"><a href="logout.jsp">로그아웃</a></li>
<% } %>
</ul>
|
cs |
세션에 값이 없다면 위의 리스트를 출력하고 값이 있다면 계정명과 로그아웃 리스트를 출력합니다.
현재는 그냥 계정명만 출력하도록 했지만 나중에 개인 계정 프로필이라던지 다른 페이지로 이동시킬 예정입니다.
사용한 세션 정리
session.getAttribute 와 session.setAttribute를 사용했습니다.
자바의 getter와 setter를 떠올리면 둘이 값을 받아오고 전달하고 하는 메서드임을 확인할 수 있습니다.
추가로 JSP에서는 바로 session을 사용할 수 있습니다만 서블릿에서는
HttpSession session = request.getSession();
를 꼭 해주셔야 합니다.
'TechTalk' 카테고리의 다른 글
로그인 기능 구현하기 - 에러 (0) | 2020.07.23 |
---|---|
회원 데이터베이스 생성 및 로그인 기능 구현하기 - 준비단계 (0) | 2020.07.22 |
로그인 페이지 만들기 디자인편 (0) | 2020.07.20 |
github(깃허브) 오픈소스 컨트리뷰트하기 (0) | 2020.07.18 |
파이썬을 이용해 주식시장 상장된 종목 조회 (0) | 2020.07.15 |