Session을 좀더 효과적을 사용하기 위해서 세션을 사용하여 로그인을 할 때, 데이타베이스에서 로그인한 사용자와 관련된 정보를 가져와서 세션에 저장 시켜 놓는 것이다. 그러면 사용자 정보가 필요할 때, 다시 데이타베이스를 접속하지 않아도 된다.

로그인을 통한 Session을 사용하는 방법과 사용자 정보를 가지고 와서 어떻게 유용하게 사용하는지 본다.

1. UserVO class를 만든다.


package org.web.member;

public class UserVO {

 private String id;
 private String pw;
 private String name;
 private String email;
 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
 public String getPw() {
  return pw;
 }
 public void setPw(String pw) {
  this.pw = pw;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getEmail() {
  return email;
 }
 public void setEmail(String email) {
  this.email = email;
 }

 public String toString(){
  return id + ":" + pw + ":" + name + ":" + email;
 }
}

2. login.jsp 작성 - 아이디와 패스워드를 입력하고 loginAction.jsp로 전송한다.


<%@ page contentType="text/html; charset=EUC-KR"
    session="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<FORM METHOD=POST ACTION="loginAction.jsp">
 <TABLE>
 <TR>
  <TD>아이디</TD>
  <TD><INPUT TYPE="text" NAME="id"></TD>
  
 </TR>
 <TR>
  <TD>패스워드</TD>
  <TD><INPUT TYPE="password" NAME="pw"></TD>
  
 </TR>
 <TR>
  <TD>로그인</TD>
  <TD><INPUT TYPE="submit" value="전송"></TD>
 
 </TR>
 </TABLE>
</FORM>
</body>
</html>

3. loginAction.jsp - 원래는 여기서 데이타베이스에서 로그인한 사용자의 정보를 가지고 와서 VO 객체에 저장시켜준다.


<%@ page contentType="text/html; charset=EUC-KR" session="true"%>
<%@ page import = "org.web.member.*" %>   
   
<%
 String id = request.getParameter("id");
 String pw = request.getParameter("pw");
 
 //데이타베이스를 통해서 데이타를 가지고 온다. 여기서는 그냥 임의로 입력한다.
 UserVO vo = new UserVO();
 vo.setId(id);
 vo.setPw(pw);
 vo.setName(id + "님");
 vo.setEmail("think@korea.kr");
 
 session.setAttribute("LOGIN", vo); //LOGIN이라는 이름으로 vo 객체를 담아 준다.
%>

<%= id %><br/>
<%= pw%>

4. insertBbs.jsp - 세션에서 정보를 받아와서 입력할 창에 넣어준다. 이러면 사용자가 다시 자기 이름과 이메일 주소를 입력하지 않아도 된다.


<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
   
<%@ page import = "org.web.member.*" %>   
 
<%
 //Object obj = session.getAttribute("LOGIN");
 UserVO vo = (UserVO)session.getAttribute("LOGIN"); //session에 있는 정보를 받아온다.
 
 if(vo == null){
  System.out.println("로그인 안한 사용자");
 }else{
  System.out.println("로그인한 사용자");
 }
%>   
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<FORM METHOD=POST ACTION="insertBbsAction.jsp">
 <TABLE border="1">
 <TR>
  <TD>제목</TD>
  <TD><INPUT TYPE="text" NAME="title"></TD>
 </TR>
 <TR>
  <TD>내용</TD>
  <TD><INPUT TYPE="text" NAME="content"></TD>
 </TR>
 <TR>
  <TD>작성자</TD>
  <TD><INPUT TYPE="text" NAME="writer" value="<%=vo.getName()%>"></TD>
 </TR>
 <TR>
  <TD>작성자 e-mail</TD>
  <TD><INPUT TYPE="text" NAME="email" value="<%=vo.getEmail()%>"></TD>
 </TR>
 <TR>
  <TD>전송</TD>
  <TD><INPUT TYPE="submit" value="전송"></TD>
 </TR>
 </TABLE>
</FORM>
</body>
</html>
- 결과 화면 보기

1. login.jsp


2. loginAction.jsp


3. insertBbs.jsp


+ Recent posts