롬복 이클립스 클릭하여 설치
노트북에서 안돼서..
-----------------writeForm.jsp-----------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
table {
border-collapse:collapse;
}
#memberWriteForm div{
font-size: 8pt;
font-weight: bold;
color: red;
}
</style>
</head>
<body>
<form id = "memberWriteForm" method="post" action="write.jsp">
<table border="1" cellspacing ="0" cellpadding ="7">
<tr>
<td width="100" align ="center">이 름</td>
<td>
<input type="text" id="name" name="name" placeholder= "이름 입력">
<div id="nameDiv"></div>
</td>
</tr>
<tr>
<th>아이디</th>
<td>
<input type="text" id="id" name="id" placeholder="아이디 입력" size="30">
<input type="button" value="중복체크" onclick="checkID()">
<input type="text" id="sw">
<div id="idDiv"></div>
</td>
</tr>
<tr>
<th>비밀번호</th>
<td>
<input type="password" id="pwd" name="pwd" size="40">
<div id="pwdDiv"></div>
</td>
</tr>
<tr>
<th>재확인</th>
<td>
<input type="password" name="repwd" id="repwd" size="40">
</td>
</tr>
<tr>
<td align = "center">성 별</td>
<td>
<input type="radio" name="gender" value="0">남성
<input type="radio" name="gender" value="1">여성
</td>
</tr>
<tr>
<th><label>이메일</label></th>
<td>
<input type="text" name="email1" id="email1" style="width:120px;">
@
<input type="text" name="email2" id="email2" style="width:120px;">
<select name="email3" id="email3" style="width:120px;">
<option value="직접입력">직접입력</option>
<option value="naver.com">naver.com</option>
<option value="gmail.com">gmail.com</option>
<option value="nate.com">nate.com</option>
</select>
</td>
</tr>
<tr>
<td><label>휴대폰</label></td>
<td>
<select name="tel1" id="tel1">
<option value="010">010</option>
<option value="011">011</option>
<option value="016">016</option>
<option value="019">019</option>
</select>
<input type="tel" id="tel2" name="tel2">
<input type="tel" id="tel3" name="tel3">
</td>
</tr>
<tr>
<th><label>주 소</label></th>
<td>
<input type= "text" name="zipcode" id="zipcode"readonly>
<input type= "button" value="우편번호검색" id="checkPostBtn"><br>
<input type= "text" name="addr1" id="addr1" style="width: 400px;" placeholder="주소" readonly/><br>
<input type= "text" name="addr2" id="addr2" style="width: 400px;" placeholder="상세주소"><br>
</td>
</tr>
<tr>
<th colspan="2">
<button type="button" id="writeBtn">회원가입</button>
<button type="button">다시작성</button>
</th>
</tr>
</table>
</form>
<script type="text/javascript">
function checkID(){
// var id = document.폼이름.name속성명.value;
// var id = document.getElementById("id명").value;
var id = document.getElementById("id").value;
if(id =="")
document.getElementById("idDiv").innerText = "먼저 아이디를 입력하세요.";
else
window.open("checkId.jsp?id=" +id, "checkId", "width=400 height=150 top=300 left=700");
}
</script>
<script type="text/javascript" src="http://code.jquery.com/jquery-3.6.1.min.js"></script>
<script src="http://localhost:8080/memberJSP/js/write.js"></script>
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
<script src="http://localhost:8080/memberJSP/js/post.js"></script>
</body>
</html>
-----------------checkId.jsp-----------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="member.dao.MemberDAO"%>
<%
//데이터
String id = request.getParameter("id");
//DB
MemberDAO memberDAO = new MemberDAO();
boolean exist = memberDAO.isExistId(id);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="checkId.jsp">
<%if(exist){ %>
<h3><%=id %>는 이미 사용 중입니다.</h3>
아이디 <input type="text" name="id">
<input type="submit" value="중복체크">
<%}else{ %>
<h3><%=id %>는 사용 가능합니다.</h3>
<input type="button" value="사용하기" onclick="checkIdClose('<%=id %>')">
<%} %>
</form>
<script type="text/javascript">
function checkIdClose(id){
opener.document.getElementById("id").value = id;
opener.document.getElementById("sw").value = id;
window.close();
opener.document.getElementById("pwd").focus();
}
</script>
</body>
</html>
-----------------write.js-----------------
$(function(){
$('#email3').change(function(){
var email3 = $('#email3').val();
$('#email2').val(email3);
if(email3 == '직접입력'){
$('#email2').val('');
}//if
});
$('#writeBtn').click(function(){
$('#nameDiv').empty();
$('#idDiv').empty();
$('#pwdDiv').empty();
if($('#name').val()==''){
$('#nameDiv').text('이름을 입력하세요.');
$('#name').focus();
}else if($('#id').val()==''){
$('#idDiv').text('아이디를 입력하세요.');
$('#id').focus();
}else if($('#pwd').val()==''){
$('#pwdDiv').text('비밀번호를 입력하세요.');
$('#pwd').focus();
}else if($('#repwd').val() != $('#pwd').val()){
$('#repwdDiv').text('비밀번호가 맞지 않습니다..');
$('#repwd').focus();
}else if($('#id').val() != $('#sw').val()){
$('#idDiv').text('중복체크 하세요.');
$('#id').focus();
}else{
$('#memberWriteForm').submit();
}
});
});
-----------------memberDAO.java-----------------
package member.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import member.bean.MemberDTO;
public class MemberDAO {
private String driver = "oracle.jdbc.driver.OracleDriver";
private String url = "jdbc:oracle:thin:@localhost:1521:xe";
private String username = "c##java";
private String password = "1234";
private Connection conn;
private PreparedStatement pstmt;
private ResultSet rs;
public MemberDAO() {
try{
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public void getConnection() {
try {
conn = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
e.printStackTrace();
}
}
public boolean isExistId(String id){
boolean exist = false;
String sql = "select * from member where id = ?";
getConnection();
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if(rs.next()) exist = true;
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(rs != null) rs.close();
if(pstmt != null) pstmt.close();
if(conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return exist;
}
public void write(MemberDTO memberDTO) {
String sql = "insert into member values(?,?,?,?,?,?,?,?,?,?,?,?,sysdate)";
getConnection();
try {
pstmt = conn.prepareStatement(sql); //생성
pstmt.setString(1, memberDTO.getName());
pstmt.setString(2, memberDTO.getId());
pstmt.setString(3, memberDTO.getPwd());
pstmt.setString(4, memberDTO.getGender());
pstmt.setString(5, memberDTO.getEmail1());
pstmt.setString(6, memberDTO.getEmail2());
pstmt.setString(7, memberDTO.getTel1());
pstmt.setString(8, memberDTO.getTel2());
pstmt.setString(9, memberDTO.getTel3());
pstmt.setString(10, memberDTO.getZipcode());
pstmt.setString(11, memberDTO.getAddr1());
pstmt.setString(12, memberDTO.getAddr2());
pstmt.executeUpdate();//실행
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(pstmt != null) pstmt.close();
if(conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public String login(String id, String pwd){
String name = null;
String sql = "SELECT * FROM MEMBER WHERE ID=? AND PWD=?";
getConnection();
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.setString(2, pwd);
rs = pstmt.executeQuery();
if(rs.next()) {
name = rs.getString("name");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(rs != null) rs.close();
if(pstmt != null) pstmt.close();
if(conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return name;
}
}
-----------------write.jsp-----------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="member.bean.MemberDTO"%>
<%@ page import="member.dao.MemberDAO"%>
<%
//데이터
request.setCharacterEncoding("UTF-8"); //한글처리 - post일 경우
String name = request.getParameter("name");
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
String gender = request.getParameter("gender");
String email1 = request.getParameter("email1");
String email2 = request.getParameter("email2");
String tel1 = request.getParameter("tel1");
String tel2 = request.getParameter("tel2");
String tel3 = request.getParameter("tel3");
String zipcode = request.getParameter("zipcode");
String addr1 = request.getParameter("addr1");
String addr2 = request.getParameter("addr2");
MemberDTO memberDTO = new MemberDTO();
memberDTO.setName(name);
memberDTO.setId(id);
memberDTO.setPwd(pwd);
memberDTO.setGender(gender);
memberDTO.setEmail1(email1);
memberDTO.setEmail2(email2);
memberDTO.setTel1(tel1);
memberDTO.setTel2(tel2);
memberDTO.setTel3(tel3);
memberDTO.setZipcode(zipcode);
memberDTO.setAddr1(addr1);
memberDTO.setAddr2(addr2);
//DB
MemberDAO memberDAO = new MemberDAO();
memberDAO.write(memberDTO);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>회원 가입이 되었습니다.</h3>
<input type="button" value="로그인" onclick="location.href='loginForm.jsp'">
</body>
</html>
-----------------memberDTO.java-----------------
package member.bean;
import java.util.Date;
import lombok.Data;
@Data
public class MemberDTO {
private String name;
private String id;
private String pwd;
private String gender;
private String email1;
private String email2;
private String tel1;
private String tel2;
private String tel3;
private String zipcode;
private String addr1;
private String addr2;
private Date logtime;
}
-----------------loginForm.jsp-----------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
table {
border-collapse:collapse;
}
#memberloginForm div{
font-size: 8pt;
font-weight: bold;
color: red;
}
</style>
</head>
<body>
<form id="memberloginForm" method="post" action="login.jsp">
<table border="1" cellspacing ="0" cellpadding ="7">
<tr>
<th>아이디</th>
<td>
<input type="text" id="id" name="id" placeholder="아이디 입력" size="30">
<div id="idDiv"></div>
</td>
</tr>
<tr>
<th>비밀번호</th>
<td >
<input type="password" id="pwd" name="pwd" size="40">
<div id="pwdDiv"></div>
</td>
</tr>
<tr>
<th colspan="2">
<button type="button" id="loginBtn">로그인</button>
<button type="button" onclick="location.href='writeForm.jsp'">회원가입</button>
</th>
</tr>
</table>
</form>
<script type="text/javascript" src="http://code.jquery.com/jquery-3.6.1.min.js"></script>
<script type="text/javascript">
$(function(){
$('#loginBtn').click(function(){
$('#idDiv').empty();
$('#pwdDiv').empty();
if($('#id').val()==''){
$('#idDiv').text('아이디를 입력하세요.');
$('#id').focus();
}else if($('#pwd').val()==''){
$('#pwdDiv').text('비밀번호를 입력하세요.');
$('#pwd').focus();
}else{
$('#memberloginForm').submit();
}
});
});
</script>
</body>
</html>
-----------------login.jsp-----------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="member.dao.MemberDAO"%>
<%
//데이터
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
//DB
MemberDAO memberDAO = new MemberDAO();
String name = memberDAO.login(id, pwd);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<% if(name == null) { %>
<h3>아이디 또는 비밀번호가 맞지 않습니다.</h3>
<%}else{ %>
<h3><%=name %>님 로그인</h3>
<%} %>
</body>
</html>
받아서 처리하여 넘겨줌.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.util.Date"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%= new Date() %>
</body>
</html>
실행했을 때에 시간만 입력된다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<img src="../image/망상토끼.gif" alt="망상토끼" width="200" height="200">
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>*** include directive ***</h3>
<%@ include file="today.jsp" %>
<h3>*** include JSP tag ***</h3>
<jsp:include page="image.jsp"></jsp:include>
<!-- 소스 코드를 드래그 해와라 -->
</body>
</html>
페이지 소스코드 보기.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<img src="../image/망상토끼.gif" alt="망상토끼" width="200" height="200">
image.jsp 페이지에서 위에 코드만 가져온 것 이라고 보면 된다.
today 파일에도 같은 변수를 입력하면 에러가 떨어진다.
변수를 설정한 후에 가져오면 아무런 문제 없다. 가져온 페이지에 있는 변수를 건들면 에러
변수를 설정한 것을 가져오면 아무런 문제없음
<h3>*** 3초 뒤에 네이버 이동 ***</h3>
<% response.setHeader("Refresh", "3;url=http://www.naver.com"); %>
그냥 이런게 있다 정도만 알아라~
sendRediredt - 각 파일마다 데이터가 공유가 되지 않음. 따로 따로 움직임
forward - 합병이 된다라고 생각하면 쉬울듯.
장점 - 데이터 공유
aa에 들어오면 bb를 보여줌 (주소는 aa, 결과는 bb)
request, response의 값은 aa의 것임
page(나 자신) < request(요청) < session < application
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<font color="red"><b>
start.jsp - sendProc.jsp - sendResult.jsp 페이지 이동합니다.<br>
sendRedirect로 이동하므로 데이터는 공유하지 않습니다.<br>
주소는 sendResult.jsp가 보인다<br>
</b></font>
<br>
<font color="blue"><b>
start.jsp - forwardProc.jsp - forwardResult.jsp 페이지 이동합니다.<br>
forward로 이동하므로 데이터는 공유합니다.<br>
주소는 forwardProc.jsp로 보이지만 결과는 forwardResult.jsp가 나온다<br>
</b></font>
<br>
<input type="button" value="sendRedirect" onclick="location.href='sendProc.jsp'">
<input type="button" value="forward" onclick="location.href='forwardProc.jsp'">
</body>
</html>
----------------sendProc.jsp----------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setAttribute("apple", "사과");
// 페이지 이동
response.sendRedirect("sendResult.jsp");
%>
----------------sendResult.jsp----------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String apple = (String)request.getAttribute("apple"); // apple의 실려있는 값을 가져오세요.
// 단. sendProc의 request 객체와 sentResult의 request 객체와는 다른것이다.
%>
결과 = <%= apple %>
----------------forwardProc.jsp----------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setAttribute("apple", "사과");
%>
<jsp:forward page="forwardResult.jsp"></jsp:forward>
----------------forwardResult.jsp----------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String apple = (String)request.getAttribute("apple"); // apple의 실려있는 값을 가져오세요.
// 단. sendProc의 request 객체와 sentResult의 request 객체와는 다른것이다.
%>
결과 = <%= apple %>
sendRedirect버튼을 클릭했을 때의 결과 (request가 다른 객체)
forward버튼을 클릭했을 때의 결과 (request가 같은 객체)
----------------forwardProc.jsp----------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setAttribute("apple", "사과");
// 페이지 이동
// forward와 같은 의미이다. - 훨씬 많이 쓴다.
// 인터페이스라 new가 안됨 -> 메소드를 이용해서 생성함.
RequestDispatcher dispatcher = request.getRequestDispatcher("forwardResult.jsp");
// 상대번지 , 절대번지 절대 x
// 제어권 넘기기
dispatcher.forward(request, response);
%>
결과는 같다.
----------------login.jsp----------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="member.dao.MemberDAO"%>
<%
//데이터
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
// DB
MemberDAO memberDAO = new MemberDAO();
String name = memberDAO.login(id, pwd);
// 응답
request.setAttribute("name", "?");
request.setAttribute("pwd", "?");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<% if(name == null) {
response.sendRedirect("loginFail.jsp");
}else{
response.sendRedirect("loginOk.jsp?name="+name);
} %>
<!-- response.sendRedirect("loginOk.jsp");는 데이터를 넘길 수 없어서 주소로 넘겨주면 된다. -->
</body>
</html>
----------------loginOk.jsp----------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String name = request.getParameter("name");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3><%= name %>님이 로그인 하셨습니다.</h3>
</body>
</html>
----------------loginFail.jsp----------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>아이디 또는 비밀번호가 일치하지 않습니다.</h3>
</body>
</html>
sendRedirect로는 못보내니 주소로 보낸다
아이디로 들어갔을 때 이름이 한글이면(주소에 한글이 있으면 한글이 깨져서) 에러가 떨어짐
http://localhost:8080/memberJSP/member/loginOk.jsp?name=a
----------------login.jsp----------------
<%@page import="java.net.URLEncoder"%>
<% if(name == null) {
response.sendRedirect("loginFail.jsp");
}else{
response.sendRedirect("loginOk.jsp?name="+ URLEncoder.encode(name, "UTF-8"));
} %>
<!-- response.sendRedirect("loginOk.jsp");는 데이터를 넘길 수 없어서 주소로 넘겨주면 된다. -->
http://localhost:8080/memberJSP/member/loginOk.jsp?name=홍길동
중요한 사이트에서는 get방식으로 넘기면 안됨
(주소의 홍길동 이름을 다른 사람으로 바꾸면 그 사람 이름으로 로그인됨)
숨겨줘야됨
-> 쿠키 or 세션
Cookie cookie = new Cookie("쿠키명", "값");
----------------login.jsp----------------
<% if(name == null) {
response.sendRedirect("loginFail.jsp");
}else{
// 쿠키
Cookie cookie = new Cookie("memName", name);
cookie.setMaxAge(3); // 초 단위 - 3초뒤 쿠키값 사라짐
response.addCookie(cookie); // 클라이언트에 저장
Cookie cookie2 = new Cookie("memId", id);
cookie.setMaxAge(3);
response.addCookie(cookie); // 클라이언트에 저장
response.sendRedirect("loginOk.jsp");
} %>
PC당 한개씩 발생하는(PC고유 아이디) 세션 아이디(쿠키명)를 가지고 들어옴
----------------login.jsp----------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String name = request.getParameter("name");
String id = request.getParameter("id");
// 쿠키
Cookie[] ar = request.getCookies();// 특정 쿠키만을 가져오지 못한다. (모든 쿠키들을 다 가져온다.)
if(ar != null){ // 쿠키 살아있는 시간 3초여서 조건을 이와같이 잡음
for(int i=0; i<ar.length; i++){
String cookieName = ar[i].getName();
String cookieValue = ar[i].getValue();
if(cookieName.equals("memName")) name = cookieValue;
if(cookieName.equals("memId")) id = cookieValue;
<body>
<h3><%= name %>님이 로그인 하셨습니다.</h3>
</body>
3초 뒤 새로고침
쿠키 삭제는 시간을 0으로 셋팅
----------------login.jsp----------------
<body>
<% if(name == null) {
response.sendRedirect("loginFail.jsp");
}else{
// response.sendRedirect("loginOk.jsp?name="+ URLEncoder.encode(name, "UTF-8"));
// 쿠키
Cookie cookie = new Cookie("memName", name);
cookie.setMaxAge(3*60*10); // 초 단위 - 30분 뒤 쿠키값 사라짐
response.addCookie(cookie); // 클라이언트에 저장
Cookie cookie2 = new Cookie("memId", id);
cookie2.setMaxAge(3*60*10); // 초 단위 - 30분 뒤 쿠키값 사라짐
response.addCookie(cookie2); // 클라이언트에 저장
----------------loginOk.jsp----------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String name = request.getParameter("name");
String id = request.getParameter("id");
// 쿠키
Cookie[] ar = request.getCookies();// 특정 쿠키만을 가져오지 못한다. (모든 쿠키들을 다 가져온다.)
if(ar != null){ // 쿠키 살아있는 시간 3초여서 조건을 이와같이 잡음
for(int i=0; i<ar.length; i++){
String cookieName = ar[i].getName();
String cookieValue = ar[i].getValue();
/*
System.out.println("쿠키명 = " + cookieName);
System.out.println("쿠키값 = " + cookieValue);
System.out.println();
*/
if(cookieName.equals("memName")) name = cookieValue;
if(cookieName.equals("memId")) id = cookieValue;
}//for
}//if
// 세션
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3><%= name %>님이 로그인 하셨습니다.</h3>
<input type="button" value="로그아웃" onclick="location.href='logout.jsp'">
</body>
</html>
----------------logout.jsp----------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
// 쿠키
Cookie[] ar = request.getCookies();
if(ar != null){
for(int i=0; i<ar.length; i++){
if(ar[i].getName().equals("memName")){
ar[i].setMaxAge(0); // 쿠키 삭제
response.addCookie(ar[i]);// 클라이언트에 보내기 - 쿠키가 사라진 것은 전달
}
if(ar[i].getName().equals("memId")){
ar[i].setMaxAge(0); // 쿠키 삭제
response.addCookie(ar[i]);// 클라이언트에 보내기 - 쿠키가 사라진 것은 전달
}
}//for
}//if
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>로그아웃</h3>
</body>
</html>
30분 뒤에 쿠키 사라짐
로그아웃 클릭 후 다시 돌아와서 새로고침을 하면 쿠키 사라짐
중요한 정보를 데이터에 실어보내면 안됨
----------------login.jsp----------------
<body>
<% if(name == null) {
response.sendRedirect("loginFail.jsp");
}else{
session.setAttribute("memName", name);
session.setAttribute("memId", id);
response.sendRedirect("loginOk.jsp");
} %>
</body>
----------------loginOk.jsp----------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String name = request.getParameter("name");
String id = request.getParameter("id");
name = (String)session.getAttribute("memName");
id = (String)session.getAttribute("memId");
%>
----------------logout.jsp----------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
session.removeAttribute("memName");
session.removeAttribute("memId");
session.invalidate(); //무효화
%>
30분 뒤에 쿠키 사라짐
로그아웃 클릭 후 다시 돌아와서 새로고침을 하면 쿠키 사라짐
index라는 말을 자주 사용 (생략이 가능하다는 말임)
----------------index.jsp----------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>*** 메인화면 ***</h1>
<!-- memId 세션이 없으면 회원가입 로그인이 뜨게 -->
<% if(session.getAttribute("memId") == null){%>
<h3><a href="/memberJSP/member/writeForm.jsp">회원가입</a></h3>
<!-- (앞에 http://localhost:8080 )절대번지 -->
<h3><a href="./member/loginForm.jsp">로그인</a></h3>
<!-- 상대번지 -->
<%}else{%>
<!-- memId 세션이 있으면 로그아웃이 뜨게 -->
<h3><a href="./member/logout.jsp">로그아웃</a></h3>
<h3><a href="">글쓰기</a></h3>
<%}%>
<h3><a href="">목록</a></h3>
</body>
</html>
----------------loginOk.jsp----------------
<body>
<h3>
<img src="../image/망상토끼.gif" width="50" height="50" alt="망상토끼"
onclick="location.href='../index.jsp'" style="cursor: pointer">
<%= name %>님이 로그인 하셨습니다.
</h3>
<input type="button" value="로그아웃" onclick="location.href='logout.jsp'">
</body>
그림을 클릭하면 아래와 같이 index.jsp로 가고 세션이 생겨서
로그아웃, 글쓰기가 나오게 하고
로그아웃을 하고 다시 들어오면 회원가입, 로그인이 나오게 함