id 통해서 이름 얻기
해당 시퀀스의 id 값만 가져옴
if(rs.next())
{
name=rs.getString("name");
}
public String getName(String id)
{
String name="";
Connection conn=db.getConnection();
PreparedStatement pstmt=null;
ResultSet rs=null;
String sql="select * from idx where id=?";
try {
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, id);
rs=pstmt.executeQuery();
if(rs.next())
{
name=rs.getString("name");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
db.dbClose(rs, pstmt, conn);
}
return name;
}
id에 맞는 pass인지 확인
if(rs.next())
flag=true;
public boolean isLogin(String id,String pass)
{
boolean flag=false;
Connection conn=db.getConnection();
PreparedStatement pstmt=null;
ResultSet rs=null;
String sql="select * from idx where id=? and pass=?";
try {
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.setString(2, pass);
rs=pstmt.executeQuery();
//비밀번호가 id와 맞으면 true값 출력
if(rs.next())
flag=true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
db.dbClose(rs, pstmt, conn);
}
return flag;
}
package idx.model;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import mysql.db.DBConnect;
public class IdxDao {
DBConnect db=new DBConnect();
//id 통해서 이름 얻기
//해당 시퀀스의 id 값만 가져옴
public String getName(String id)
{
String name="";
Connection conn=db.getConnection();
PreparedStatement pstmt=null;
ResultSet rs=null;
String sql="select * from idx where id=?";
try {
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, id);
rs=pstmt.executeQuery();
if(rs.next())
{
name=rs.getString("name");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
db.dbClose(rs, pstmt, conn);
}
return name;
}
//id에 맞는 pass인지 확인
public boolean isLogin(String id,String pass)
{
boolean flag=false;
Connection conn=db.getConnection();
PreparedStatement pstmt=null;
ResultSet rs=null;
String sql="select * from idx where id=? and pass=?";
try {
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.setString(2, pass);
rs=pstmt.executeQuery();
//비밀번호가 id와 맞으면 true값 출력
if(rs.next())
flag=true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
db.dbClose(rs, pstmt, conn);
}
return flag;
}
}
IdxDao db=new IdxDao();
boolean flag=db.isLogin(id, pass);
맞으면 세션 지정 후 로그인 메인으로 이동/판단은 메인에서 하기 때문
if(flag)
{
//로그인 중인지 알 수 있는 세션저장
session.setAttribute("loginok", "yes"); //상징적으로 로그인 성공의 경우 yes/ok 사용
//아이디 세션 저장
session.setAttribute("idok", id); //request로 받은 id값 저장
//체크값 세션 저장...체크하면 값이 on,안하면 null
session.setAttribute("saveok", save); //아이디저장 박스 체크유무
//세션 유지시간
session.setMaxInactiveInterval(60*60*8); //8시간동안 유지(생략시 30분)/아이디저장 시간도 같이 적용
response.sendRedirect("loginMain.jsp");
}
로그인 중인지 알 수 있는 세션저장
상징적으로 로그인 성공의 경우 yes/ok 사용
-> 값을 저장하고 받아오면 밑에 저장한 값들을 가져올 수 있음
session.setAttribute("loginok", "yes");
request로 받은 id값 저장
session.setAttribute("idok", id);
체크하면 값이 on,안하면 null
아이디저장 박스 체크유무
-> form id checkbox에 value값이 없으면 on,null
session.setAttribute("saveok", save);
8시간동안 유지(생략시 30분)/아이디저장 시간도 같이 적용
session.setMaxInactiveInterval(60*60*8);
체크박스 여부로 저장하기 위해서 먼저 얻어와야 조건지정가능
String myid=(String)session.getAttribute("idok");
String saveid=(String)session.getAttribute("saveok");
boolean save=true;
if(saveid==null)
{
//아이디 저장이 체크가 안되어있으면(null) 빈 칸이기에 빈값 넣어줌
myid=""; //아이디저장을 체크하지 않을 경우 아이디 없앤다 / 체크 되어있을 경우 아이디는 그대로 남아있다
save=false; //체크하지 않을 경우 false,그 이외에는 true니까 true가 된다
}
아이디 저장이 체크가 안되어있으면(null) 빈 칸이기에 빈값 넣어줌
아이디저장을 체크하지 않을 경우 아이디 없앤다 / 체크 되어있을 경우 아이디는 그대로 남아있다
체크박스 체크하지 않을 경우 false,그 이외에는 true니까 true가 된다
myid="";
save=false;
save는 유지 되어야해서 시간설정을 줘야한다
value값이 없으면 on null로 나옴
<%=save?"checked":"" %>>아이디저장
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Cute+Font&family=Diphylleia&family=Dokdo&family=Nanum+Brush+Script&family=Nanum+Gothic+Coding&family=Noto+Sans+KR&display=swap" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.7.0.js"></script>
<title>Insert title here</title>
<style type="text/css">
div.loginform{
width: 500px;
margin-top: 100px;
margin-left: 200px;
}
</style>
</head>
<body>
<%
//세션으로부터 아이디 아이디저장(세이브체크)값 얻기 -> 체크박스 여부로 저장하기 위해서 먼저 얻어와야 조건지정가능
String myid=(String)session.getAttribute("idok");
//action에 세션지정한 체크값을 saveok로 지정했기에 그 값을 받아와야함
String saveid=(String)session.getAttribute("saveok");
//save박스 체크했으면
boolean save=true;
//아이디저장 박스가 체크가 안됐을 경우
if(saveid==null)
{
//아이디 저장이 체크가 안되어있으면(null) 빈 칸이기에 빈값 넣어줌
myid=""; //아이디저장을 체크하지 않을 경우 아이디 없앤다 / 체크 되어있을 경우 아이디는 그대로 남아있다
save=false; //체크하지 않을 경우 false,그 이외에는 true니까 true가 된다
}
%>
<div class="loginform">
<form action="loginAction.jsp" method="post">
<input type="text" name="id" style="width: 200px;"
class="form-control" placeholder="로그인할아이디" required="required"
value="<%=myid%>"><br>
<input type="password" name="pass" style="width: 200px;"
class="form-control" placeholder="로그인할 비밀번호" required="required"><br>
<button type="submit" class="btn btn-success btn-lg"
style="width: 200px;">로그인</button>
<br>
<%-- save는 유지 되어야해서 시간설정을 줘야한다 --%>
<%-- value값이 없으면 on null로 나옴 --%>
<input type="checkbox" name="savechk"
<%-- 자바에서 준 boolean save가 체크 되어있으면 체크 아니면 빈값 --%>
<%=save?"checked":"" %>>아이디저장
</form>
</div>
</body>
</html>
<%@page import="idx.model.IdxDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Cute+Font&family=Diphylleia&family=Dokdo&family=Nanum+Brush+Script&family=Nanum+Gothic+Coding&family=Noto+Sans+KR&display=swap" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.7.0.js"></script>
<title>Insert title here</title>
</head>
<body>
<%
//로그인에서 유일하게 저장하는 공간
request.setCharacterEncoding("utf-8");
String id=request.getParameter("id");
String pass=request.getParameter("pass");
String save=request.getParameter("savechk");
//아이디와 비번이 맞는지 확인
IdxDao db=new IdxDao();
boolean flag=db.isLogin(id, pass);
//맞으면 세션 지정 후 로그인 메인으로 이동/판단은 메인에서 하기 때문
if(flag)
{
//로그인 중인지 알 수 있는 세션저장
session.setAttribute("loginok", "yes"); //상징적으로 로그인 성공의 경우 yes/ok 사용
//아이디 세션 저장
session.setAttribute("idok", id); //request로 받은 id값 저장
//체크값 세션 저장...체크하면 값이 on,안하면 null
session.setAttribute("saveok", save); //아이디저장 박스 체크유무
//세션 유지시간
session.setMaxInactiveInterval(60*60*8); //8시간동안 유지(생략시 30분)/아이디저장 시간도 같이 적용
response.sendRedirect("loginMain.jsp");
}
else
{%>
<script type="text/javascript">
alert("아이디와 비밀번호가 맞지 않습니다");
history.back();
</script>
<%}
%>
</body>
</html>
loginAction에 저장한 세션값 읽어오기
세션으로 부터 idok읽어오기
loginAction에서 아이디 세션 저장해놓음
String id=(String)session.getAttribute("idok");
아이디에 해당하는 이름을 dao로부터 얻는다
IdxDao db=new IdxDao();
String name=db.getName(id);
<%@page import="idx.model.IdxDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Cute+Font&family=Diphylleia&family=Dokdo&family=Nanum+Brush+Script&family=Nanum+Gothic+Coding&family=Noto+Sans+KR&display=swap" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.7.0.js"></script>
<title>Insert title here</title>
</head>
<body>
<%-- 로그인된 상태 --%>
<%
//세션으로 부터 idok읽어오기
//loginAction에서 아이디 세션 저장해놓음
String id=(String)session.getAttribute("idok");
//아이디에 해당하는 이름을 dao로부터 얻는다
IdxDao db=new IdxDao();
String name=db.getName(id);
%>
<br><br>
<b style="color: green;"><%=name %></b>님이 로그인중~~~
<input type="button" value="로그아웃" class="btn btn-danger"
<%-- 세션 remove로 로그아웃할 수 있다 --%>
onclick="location.href='logoutAction.jsp'">
<br><br>
<img alt="" src="../image/f3.png">
</body>
</html>
넘겨준 세션 key값(loginok) 삭제
로그인에 대한 세션값 삭제
session.removeAttribute("loginok");
메인 --> 로그인창으로 이동
response.sendRedirect("loginMain.jsp");
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Cute+Font&family=Diphylleia&family=Dokdo&family=Nanum+Brush+Script&family=Nanum+Gothic+Coding&family=Noto+Sans+KR&display=swap" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.7.0.js"></script>
<title>Insert title here</title>
</head>
<body>
<%
//로그인에 대한 세션값 삭제 --> 로그아웃
session.removeAttribute("loginok");
//메인 --> 로그인창으로 이동
response.sendRedirect("loginMain.jsp");
%>
</body>
</html>
각각의 login logout form을 가져와서 한 곳에 모아주기
로그인 먼저 하는 이유는 로그인 먼저 해보고 회원가입 하고 그대로 쓰기 위해서
include로 longinok여부에 따른 loginok/loginout이 와야해서 가져와야함
dto는 필요없음
하위 세션들을 넘겨주기 위해 넘겨주는 값
String loginok=(String)session.getAttribute("loginok");
if(loginok==null || loginok.equals(""))//로그아웃 상태
{%>
<jsp:include page="loginForm.jsp"/>
<%}
else //로그인 상태
{%>
<jsp:include page="logoutForm.jsp"/>
<%}
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Cute+Font&family=Diphylleia&family=Dokdo&family=Nanum+Brush+Script&family=Nanum+Gothic+Coding&family=Noto+Sans+KR&display=swap" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.7.0.js"></script>
<title>Insert title here</title>
</head>
<body>
<%-- 로그인 먼저 하는 이유는 로그인 먼저 해보고 회원가입 하고 그대로 쓰기 위해서
include로 longinok여부에 따른 loginok/loginout이 와야해서 가져와야함
dto는 필요없음 --%>
<%
String loginok=(String)session.getAttribute("loginok");
if(loginok==null || loginok.equals(""))//로그아웃 상태
{%>
<jsp:include page="loginForm.jsp"/>
<%}
else //로그인 상태
{%>
<jsp:include page="logoutForm.jsp"/>
<%}
%>
</body>
</html>