성장 기록 블로그🌴

!1015 JSP&Servlet 뿌시기! ( Session, 세션 회원가입 , MemberVO 클래스 ) 본문

AI & BigData 교육과정/JavaScript 관련

!1015 JSP&Servlet 뿌시기! ( Session, 세션 회원가입 , MemberVO 클래스 )

wlswls2s 2022. 10. 15. 10:21
728x90

< JSP&Servlet 0일차 내용 >

 


◆ JSP&Servlet 기본

개념정리

 < Session > : Client의 정보를 서버의 Session 영역에 저장하는 것

 - Web browser를 거치지 않고 web Server에 있는 데이터 영역을 통해 데이터를 전달하는 방법

 - Session은 브라우저 당 하나씩 발급이 되며 Client 당 세션 영역을 구분하기 위해 
   고유의 (중복이 되지 않는) 키를 쿠키로 발급하여 관리한다! 

- Session의 만료기간은 브라우저가 종료되는 즉시 만료가 된다!

- 세션은 쿠키를 키 값으로 받기때문에 만약에 쿠키값을 삭제하면 세션도 당연히 삭제된다!

 

< 세션 값 저장하기! >

- jsp에서는 Session 객체가 내장객체로 존재함

 

 

< 쿠키와 세션의 차이! >

브라우저에 저장하는 것은 쿠키이며 ! , 웹 서버에 저장하는 것은 세션!

 

 

< 세션 간단 응용 예제 >

- 세션  값 생성 , 값 가져오기 , 삭제 , 유효기간 설정 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>

	<%
		// Session : Client의 정보를 서버의 Session 영역에 저장하는 것
		
		// - Session은 브라우저 당 하나씩 발급이 되며
		// Client 당 세션 영역을 구분하기 위해 
		// 고유의 (중복이 되지 않는) 키를 쿠키로 발급하여 관리한다! 
	
		// - Session의 만료기간은 브라우저가 종료되는 즉시 만료가 된다!
		
		// Session 값 저장하기!     .setAttribute(String,Object)
		// - jsp에서는 Session객체가 내장객체로 존재한다
		 session.setAttribute("name","길동이");
		
		// Session 값 가져오기! .getAttribute(String)
		// getAttribute에 넣은 것들은 다 Object 임 
		// --> 따라서, 다운캐스팅을 해줘야함!
		// --> 사용하고 싶은 타입에 맞게 형변환을 해줘야함
		String name = (String)session.getAttribute("name");
		
		out.print(name);
		
		
		// Session에 값 삭제하기 .removeAttribute(String)
		 session.removeAttribute("name");
		
		
		// Session 유효기간 설정 .setMaxInactionvInterval(int)
		// int에 주로 시간이 들어가는데 초단위로 실행됨
		 session.setMaxInactiveInterval(10);
		
	%>
</body>
</html>

 

< 회원가입 예제>

-  기본 구조 만들기 -

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
 
   <div class="container">
     <h2>메인페이지</h2>
     <div class="panel panel-default">
       <div class="panel-heading">원하시는 목록을 선택해주세요</div>
       
       <div class="panel-body">
         <a href= ""><button class="btn btn-info">회원가입</button></a>
         <a href=""><button class="btn btn-success">로그인</button></a>
         <a href=""><button class = "btn btn-warning">회원목록보기</button></a>
      </div>
       <div class="panel-footer">담당자 : 길동이 연락처 : 010-1111-2222</div>
     </div>
   </div>

</body>
</html>

- join.java -

package com;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.websocket.Session;

/**
 * Servlet implementation class join
 */
@WebServlet("/join")
public class join extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		
		// 문제
		// 입력한 회원정보 (id, pw, nick, addr)를 콘솔에 출력하시오!
		
		//1. 한글 인코딩하기
		request.setCharacterEncoding("EUC-KR");
	     
		//2. 회원정보 가져오기
		 String id = request.getParameter("id");
	     String pw = request.getParameter("pw");
	     String nick = request.getParameter("nick");
	     String addr = request.getParameter("addr");
	     
//	     System.out.println(id);
//	     System.out.println(pw);
//	     System.out.println(nick);
//	     System.out.println(addr);
	     
	    
	     // id , pw, nick , addr 정보를 session에 저장하기
	     HttpSession session = request.getSession();   
	     
	     session.setAttribute("id", id);
	     session.setAttribute("pw", pw);
	     session.setAttribute("nick", nick);
	     session.setAttribute("addr", addr);
	     
	     response.sendRedirect("joinResult.jsp");
	
	}

}

- join.jsp - 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
   <form action="join" method="post">
   <div class="container">
     <h2>회원가입 홈페이지</h2>
     <div class="panel panel-default">
       <div class="panel-heading">회원가입</div>
       
       <div class="panel-body">
         <table class = "table table-hover table-sm table-borderless ">
         	<tr>
         		<td>아이디</td>
         		<td><input name="id" class="form-control" type = "text"></td>
         	</tr>
         	<tr>	
         		<td>비밀번호</td>
         		<td><input name="pw" class="form-control" type = "text"></td>   		
         	</tr>
         	<tr>	
         		<td>닉네임</td>
         		<td><input name = "nick" class="form-control" type = "text"></td>   		
         	</tr>
         	<tr>	
         		<td>주소</td>
         		<td><input name="addr" class="form-control" type = "text"></td>   		
         	</tr>
         	<tr>
         		<td colspan = "2">
         			<button class = "btn btn-sm btn-info" type = "submit">회원가입</button>
         			<button class = "btn btn-sm btn-warning" type = "reset">취소</button>
         	</tr>         	         	
         </table>
      </div>
       <div class="panel-footer">담당자 : 길동이 연락처 : 010-1111-2222</div>
     </div>
   </div>
   </form>
</body>
</html>

- joinResult.jsp -

<%@page import="com.MemberVO"%>
<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<%
		// Join Servlet에서 Session에 저장한
		// id, pw, nick, addr을 web페이지로 출력하시오.
		// 응답페이지에 출력시키기!
		String id = (String)session.getAttribute("id");
		String pw = (String)session.getAttribute("pw");
		String nick = (String)session.getAttribute("nick");
		String addr = (String)session.getAttribute("addr");
		
	
	%>
</body>
</html>

 

 

< MemberVO.java > 로 한번에 받아오기!

@ MemberVO.java

package com;

public class MemberVO {
   private String id;
   private String pw;
   private String nick;
   private String address;
   
   
   
   public MemberVO(String id, String pw, String nick, String address) {
      this.id = id;
      this.pw = pw;
      this.nick = nick;
      this.address = address;
   }
   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 getNick() {
      return nick;
   }
   public void setNick(String nick) {
      this.nick = nick;
   }
   public String getAddress() {
      return address;
   }
   public void setAddress(String address) {
      this.address = address;
   }
   
   
   
   
}

- join.java-

package com;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.websocket.Session;

/**
 * Servlet implementation class join
 */
@WebServlet("/join")
public class join extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		
		// 문제
		// 입력한 회원정보 (id, pw, nick, addr)를 콘솔에 출력하시오!
		
		//1. 한글 인코딩하기
		request.setCharacterEncoding("EUC-KR");
	     
          
	     MemberVO vo = new MemberVO(id,pw,nick,addr);
	     // id , pw, nick , addr 정보를 session에 저장하기
	     HttpSession session = request.getSession();
	     
	     session.setAttribute("vo",vo);
	     
	     
	     response.sendRedirect("joinResult.jsp");
	
	}

}

 

- join.jsp -

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
   <form action="join" method="post">
   <div class="container">
     <h2>회원가입 홈페이지</h2>
     <div class="panel panel-default">
       <div class="panel-heading">회원가입</div>
       
       <div class="panel-body">
         <table class = "table table-hover table-sm table-borderless ">
         	<tr>
         		<td>아이디</td>
         		<td><input name="id" class="form-control" type = "text"></td>
         	</tr>
         	<tr>	
         		<td>비밀번호</td>
         		<td><input name="pw" class="form-control" type = "text"></td>   		
         	</tr>
         	<tr>	
         		<td>닉네임</td>
         		<td><input name = "nick" class="form-control" type = "text"></td>   		
         	</tr>
         	<tr>	
         		<td>주소</td>
         		<td><input name="addr" class="form-control" type = "text"></td>   		
         	</tr>
         	<tr>
         		<td colspan = "2">
         			<button class = "btn btn-sm btn-info" type = "submit">회원가입</button>
         			<button class = "btn btn-sm btn-warning" type = "reset">취소</button>
         	</tr>         	         	
         </table>
      </div>
       <div class="panel-footer">담당자 : 길동이 연락처 : 010-1111-2222</div>
     </div>
   </div>
   </form>
</body>
</html>
<%@page import="com.MemberVO"%>
<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<%
		// Join Servlet에서 Session에 저장한
		// id, pw, nick, addr을 web페이지로 출력하시오.

		// 클래스도 다운 캐스팅이 가능하다!!
		MemberVO vo = (MemberVO)session.getAttribute("vo");
	
		out.print("입력한 아이디 : " + vo.getId() + "<br>");
		out.print("입력한 비밀번호 : " +vo.getPw() + "<br>");
		out.print("입력한 닉네임 : " + vo.getNick() + "<br>");
		out.print("입력한 주소 : " + vo.getAddress() + "<br>");
		
		
		
		
	%>
</body>
</html>

728x90