일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Android
- Java
- ddit
- 생활코딩
- pyqt
- Error
- 반복문
- 자바
- Oracle
- 객체지향
- API
- Mac
- nodejs
- ibatis
- 맥
- jsp
- 대덕인재개발원
- 배열
- 단축키
- JDBC
- html
- python
- servlet
- 이클립스
- 자바문제
- 컬렉션프레임워크
- spring
- crud
- Homebrew
- FastAPI
Archives
- Today
- Total
romworld
Session 본문
sessionTest.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Session 연습</title>
</head>
<body>
<a href="<%=request.getContextPath() %>/sessionAdd.do">Session 정보 저장하기</a><br><br>
<a href="<%=request.getContextPath() %>/sessionRead.do">Session 정보 확인하기</a><br><br>
<a href="<%=request.getContextPath() %>/sessionDelete.do">Session 정보 삭제하기</a><br><br>
</body>
</html>
SessionAdd
package kr.or.ddit.basic.session;
import java.io.IOException;
import java.io.PrintWriter;
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;
@WebServlet("/sessionAdd.do")
public class SessionAdd extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Session 저장하는 방법
// 1. Session객체를 생성하거나 현재의 Session 가져오기
// 형식1) request객체.getSession(); 또는 request객체.getSession(true);
// ==> 현재 세션이 존재하면 현재 세션을 반환하고,
// 세션이 존재하지 않으면 새로운 세션을 생성해서 반환한다.
// 형식2) request객체.getSession(false);
// ==> 현재 세션이 존재하면 현재 세션을 반환하고,
// 세션이 존재하지 않으면 새로운 세션을 생성하지 않고 null을 반환한다.
HttpSession session = request.getSession();
// 2. 구해진 Session에 데이터 저장하기
// 형식) session객체.setAttribute("key값",저장할데이터값;);
// ==> key값 : String, '저장할데이터값' : 자바의 모든 자료형
session.setAttribute("testSession", "연습용 세션입니다.");
session.setAttribute("username", "홍길동");
session.setAttribute("age", 30);
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf8");
PrintWriter out = response.getWriter();
out.println("<html><head><meta charset=utf-8><title>Session 연습</title></head>");
out.println("<body>");
out.println("<h3>Session 데이터를 저장했습니다</h3>");
out.println("<a href='" + request.getContextPath()
+ "/basic/session/sessionTest.jsp'>시작문서로 이동하기</a>");
out.println("</body></html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
SessionRead
package kr.or.ddit.basic.session;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
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;
@WebServlet("/sessionRead.do")
public class SessionRead extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 저장된 Session 읽어오기
// 1. Session객체를 생성하거나 현재의 Session 가져오기
HttpSession session = request.getSession();
// 2. Session에 저장된 데이터 가져오기 ==> getAttribute()메서드 이용
// 형식) session객체.getAttribute("key값");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf8");
PrintWriter out = response.getWriter();
out.println("<html><head><meta charset=utf-8><title>Session 연습</title></head>");
out.println("<body>");
out.println("<h3>세션 데이터 1개 가져오기</h3>");
out.println("- testSession의 세션값 : ");
String sessionValue = (String)session.getAttribute("testSession"); // 변수에 저장하려면 형변환을 하고 저장해라
if(sessionValue==null) {
out.println("세션값이 없습니다.");
}else {
out.println(sessionValue);
}
out.println("<br><hr><br>");
out.println("<h3>전체 세션 데이터 확인하기</h3>");
Enumeration<String> sessionKeys = session.getAttributeNames(); // 세션의 모든 key값 가져오기
int cnt = 0;
out.println("<ul>");
while(sessionKeys.hasMoreElements()) { // 가져올 데이터가 있는지 검사
cnt++;
String key = sessionKeys.nextElement(); // key값 1개 가져오기
out.println("<li>" + key + " : " + session.getAttribute(key) + "</li>");
}
if(cnt==0) out.println("<li> 세션 데이터가 하나도 없습니다.</li>");
out.println("</ul>");
out.println("<hr>");
out.println("<a href='" + request.getContextPath()
+ "/basic/session/sessionTest.jsp'>시작문서로 이동하기</a>");
out.println("</body></html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
SessionDelete
package kr.or.ddit.basic.session;
import java.io.IOException;
import java.io.PrintWriter;
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;
@WebServlet("/sessionDelete.do")
public class SessionDelete extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Session 삭제하기
//1. Session객체 생성 및 현재 세션 가져오기
HttpSession session = request.getSession();
// 2. Session 정보 삭제하기
// 2-1. session객체변수.removeAttribute("Key값")메서드로 삭제하기
// ==> 세션 자체는 삭제되지 않고 개별적인 세션값(지정한 key값에 해당하는 세션값)만 삭제한다.
//session.removeAttribute("testSession");
//2-2. session객체변수.invalidate()메서드로 삭제하기
// --> 세션 자체를 삭제한다.
session.invalidate();
//----------------------------------------------------------------------------
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf8");
PrintWriter out = response.getWriter();
out.println("<html><head><meta charset=utf-8><title>Session 연습</title></head>");
out.println("<body>");
out.println("<h3>Session 데이터를 삭제했습니다</h3>");
out.println("<a href='" + request.getContextPath()
+ "/basic/session/sessionTest.jsp'>시작문서로 이동하기</a>");
out.println("</body></html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
로그인 화면 구성하기
sessionLogin.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인</title>
<style type="text/css">
table{
margin:10px auto;
}
</style>
</head>
<body>
<%
//JSP문서에서 세션은 'session'이라는 이름으로 저장되어 있다.
String userID = (String) session.getAttribute("USERID");
%>
<%
if(userID==null){ // 세션값이 null이면 로그인이 안된 상태이다...
%>
<form action="<%=request.getContextPath() %>/sessionLogin.do" method="post">
<table border="1">
<tr>
<td>ID : </td>
<td><input type="text" name="userid" placeholder="ID를 입력하세요"></td>
</tr>
<tr>
<td>PASS : </td>
<td><input type="password" name="pass" placeholder="Password를 입력하세요."></td>
</tr>
<tr>
<td colspan="2" style="text-align:center">
<input type="submit" value="Login">
</td>
</tr>
</table>
</form>
<%
}else{
%>
<h3> 관리자님 반갑습니다.</h3>
<a href="<%=request.getContextPath() %>/sessionLogout.do">로그아웃</a>
<%
}
%>
</body>
</html>
SessionLogin
package kr.or.ddit.basic.session;
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.SendResult;
@WebServlet("/sessionLogin.do")
public class SessionLogin extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
HttpSession session = request.getSession();
// 입력한 회원ID와 패스워드를 받아온다.
String userID = request.getParameter("userid"); //id 값
String pass = request.getParameter("pass"); //password값
if("admin".equals(userID) && "1234".equals(pass)) { //로그인 성공
session.setAttribute("USERID", userID); // 세션의 정보 저장
}
response.sendRedirect(
request.getContextPath() + "/basic/session/sessionLogin.jsp");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
SessionLogout
package kr.or.ddit.basic.session;
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;
@WebServlet("/sessionLogout.do")
public class SessionLogout extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 로그아웃 기능은 세션을 삭제한 후 페이지를 이동하면 된다.
HttpSession session = request.getSession();
session.invalidate();
response.sendRedirect(
request.getContextPath() + "/basic/session/sessionLogin.jsp");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
DB이용해서 로그인
sessionDBLogin.jsp
<%@page import="kr.or.ddit.vo.MemberVO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인</title>
<style type="text/css">
table{
margin:10px auto;
}
</style>
</head>
<body>
<%
//JSP문서에서 세션은 'session'이라는 이름으로 저장되어 있다.
MemberVO memVo = (MemberVO) session.getAttribute("loginMember");
%>
<%
if(memVo==null){ // 세션값이 null이면 로그인이 안된 상태이다...
%>
<form action="<%=request.getContextPath() %>/sessionDBLogin.do" method="post">
<table border="1">
<tr>
<td>ID : </td>
<td><input type="text" name="userid" placeholder="ID를 입력하세요"></td>
</tr>
<tr>
<td>PASS : </td>
<td><input type="password" name="pass" placeholder="Password를 입력하세요."></td>
</tr>
<tr>
<td colspan="2" style="text-align:center">
<input type="submit" value="Login">
</td>
</tr>
</table>
</form>
<%
}else{
%>
<h3> <%=memVo.getMem_name() %>님 반갑습니다.</h3>
<a href="<%=request.getContextPath() %>/sessionDBLogout.do">로그아웃</a>
<%
}
%>
</body>
</html>
SessionDBLogin
package kr.or.ddit.basic.session;
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 kr.or.ddit.vo.MemberVO;
@WebServlet("/sessionDBLogin.do")
public class SessionDBLogin extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
HttpSession session = request.getSession();
// 입력한 회원ID와 패스워드를 받아온다.
String userID = request.getParameter("userid"); //id 값
String pass = request.getParameter("pass"); //password값
// MemberVO객체 생성 후 입력받은 데이터를 셋팅한다.
MemberVO memVo = new MemberVO();
memVo.setMem_id(userID);
memVo.setMem_pass(pass);
// DAO객체 생성
MemberDao memDao = new MemberDao();
// DAO를 이용하여 회원ID와 Password가 일치하는 회원 정보 가져오기
MemberVO loginMemVo = memDao.getMember(memVo);
if(loginMemVo !=null) { // 로그인 성공
// 로그인한 회원의 전체 정보가 저장된 VO객체를 세션에 저장한다.
session.setAttribute("loginMember", loginMemVo); // 객체를 저장할 수 있다
}
response.sendRedirect(
request.getContextPath() + "/basic/session/sessionDBLogin.jsp");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
SessionDBLogout
package kr.or.ddit.basic.session;
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;
@WebServlet("/sessionDBLogout.do")
public class SessionDBLogout extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 로그아웃 기능은 세션을 삭제한 후 페이지를 이동하면 된다.
HttpSession session = request.getSession();
session.invalidate();
response.sendRedirect(
request.getContextPath() + "/basic/session/sessionDBLogin.jsp");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
MemberDao
package kr.or.ddit.basic.session;
import java.sql.SQLException;
import com.ibatis.sqlmap.client.SqlMapClient;
import kr.or.ddit.util.SqlMapClientFactory;
import kr.or.ddit.vo.MemberVO;
public class MemberDao {
private SqlMapClient smc;
// 생성자
public MemberDao() {
smc = SqlMapClientFactory.getSqlMapClient();
}
public MemberVO getMember(MemberVO memVo) {
MemberVO loginMemVo = null; // 반환값이 저장될 변수
try {
loginMemVo = (MemberVO) smc.queryForObject("member.getMember", memVo);
} catch (SQLException e) {
e.printStackTrace();
}
return loginMemVo;
}
}
'JAVA > 개념정리' 카테고리의 다른 글
File Upload (0) | 2022.12.06 |
---|---|
Ajax ( JSON) (1) | 2022.12.06 |
Cookie 2 ( login) (0) | 2022.12.06 |
Cookie (0) | 2022.12.06 |
Servlet 3 ( request, response, forward,redirect) (1) | 2022.12.06 |
Comments