JSP

211020_session으로 로그인/로그아웃

요옫 2021. 10. 20. 16:07

퀀텀db로 테이블 생성

 

 

idxDao.java

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();

//아이디를 통해서 name값을 얻는다..파라메타값을 아이디로..로그아웃을 하기 위해
public String getName(String id) {
Connection conn=db.getConnection();
PreparedStatement pstmt=null;
ResultSet rs=null;

String sql="select * from idx where id=?";
String name="";

try {
pstmt=conn.prepareStatement(sql);

//?바인딩
pstmt.setString(1, id);

rs=pstmt.executeQuery();

//하나만 구할거니까 if
if(rs.next())
{
name=rs.getString("name");
}

} catch (SQLException e) {
} finally {
db.dbClose(rs, pstmt, conn);
}
return name;
}


//id와 pass가 일치하는지 확인하는 메서드..로그인을 하려고
public boolean isLogin(String id,String pass) {

boolean flag=false;  //기본값을 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();

if(rs.next())
{
flag=true;  //비밀번호가 맞는 데이터가 있으면 true
}
} catch (SQLException e) {
} finally {
db.dbClose(rs, pstmt, conn);
}
return flag;
}
}

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

loginform.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<link href="https://fonts.googleapis.com/css2?family=Do+Hyeon&display=swap" rel="stylesheet">

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">

<script src="https://code.jquery.com/jquery-3.5.0.js"></script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>

<title>Insert title here</title>

</head>

 

<%

//세션으로부터 아이디저장체크값saveok, 아이디값idok을 얻는다

String saveok=(String)session.getAttribute("saveok");

String idok=(String)session.getAttribute("idok");

 

%>

<body>

<form action="loginproc.jsp" method="post">

  <table class="table table-bordered" style="width: 280px; border: 3px solid lightgray; margin: 0 auto;">

  <caption><b style="font-size: 15pt;">세션로그인</b></caption>

    <tr>

      <td colspan="2" style="padding-left: 10px;">

        <%

      if(saveok==null) //체크 안했다면

      {%>

      <input type="checkbox" name="savechk">아이디저장     

      <%} else //체크했다면

      {%>

      <input type="checkbox" name="savechk" checked="checked">아이디저장

      <%}

      %>

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

        <b>보안로그인</b>

      </td>

    </tr>

    

    <tr height="30">

      <th width="90">아이디</th>

      <td width="150" style="padding-left: 10px;">

             <%

      if(saveok==null)

      {%>

      <input type="text" name="id" size="10" autofocus="autofocus" 

      required="required" class="form-control" value="">

      <%} else

      {%>

      <input type="text" name="id" size="10" autofocus="autofocus" 

      required="required" class="form-control" value="<%=idok%>">

      <%}

      %>

      </td>

    </tr>

    

    <tr height="30">

      <th width="90">비밀번호</th>

      <td width="150" style="padding-left: 10px;">

       <input type="text" name="pass" size="10" required="required" class="form-control"> 

      </td>

    </tr>

    

    <tr height="30">

      <td colspan="2" align="center">

        <input type="submit" value="로그인" class="btn btn-info">

        <input type="button" value="회원가입" onclick="" class="btn btn-success">

      </td>

    </tr>

  </table>

</form>

</body>

</html>

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

loginproc.jsp

<%@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://fonts.googleapis.com/css2?family=Do+Hyeon&display=swap" rel="stylesheet">

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">

<script src="https://code.jquery.com/jquery-3.5.0.js"></script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>

<title>Insert title here</title>

</head>

<body>

<!-- 폼에서 입력한 값을 request.getparameter로 받고 db와 일치하는지 확인 -->

<%

String id=request.getParameter("id");

String pass=request.getParameter("pass");

String savechk=request.getParameter("savechk");

 

//아이디와 비번이 맞는지 확인

idxDao dao=new idxDao();

boolean flag=dao.isLogin(id, pass);

 

//맞으면 세션 저장후 로그인메인으로 이동

if(flag)

{

//로그인중인지를 알수있는 세션저장

session.setAttribute("loginok", "yes");

 

//아이디와 체크값 저장

session.setAttribute("idok", id);

//체크값 선택하면 on, 안하면 null로 콘솔에 뜨는 걸 세션저장

session.setAttribute("saveok", savechk);

 

//세션유지시간

session.setMaxInactiveInterval(60*60*8); //8시간유지

 

//로그인메인으로 이동

response.sendRedirect("loginmain.jsp");

} else

{%>

<script type="text/javascript">

alert("아이디와 비밀번호가 맞지않습니다");

history.back();

</script>

<%}

%>

</body>

</html>

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

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://fonts.googleapis.com/css2?family=Do+Hyeon&display=swap" rel="stylesheet">

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">

<script src="https://code.jquery.com/jquery-3.5.0.js"></script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>

<title>Insert title here</title>

</head>

<body>

<%

String loginok=(String)session.getAttribute("loginok");

 

if(loginok==null || loginok.equals("")) //로그아웃상태

{%>

<jsp:include page="loginform.jsp"/>

<%} else //로그인상태

{%>

<jsp:include page="logoutform.jsp"/>

<%}

%>

</body>

</html>

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

logoutform.jsp

<%@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://fonts.googleapis.com/css2?family=Do+Hyeon&display=swap" rel="stylesheet">

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">

<script src="https://code.jquery.com/jquery-3.5.0.js"></script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>

<title>Insert title here</title>

</head>

<body>

<%

//세션으로부터 아이디를 읽어온다

String id=(String)session.getAttribute("idok");

 

//아이디에 해당하는 이름을 dao로부터 얻어온다

idxDao db=new idxDao();

String name=db.getName(id);

%>

 

<br><br>

<b style="color: magenta;"><%=name %></b>님이 로그인하였습니다

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

<input type="button" value="로그아웃" onclick="location.href='logoutproc.jsp'">

 

<hr>

<img alt="" src="../image/m09.jpg">

</body>

</html>

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

logoutproc.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<link href="https://fonts.googleapis.com/css2?family=Do+Hyeon&display=swap" rel="stylesheet">

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">

<script src="https://code.jquery.com/jquery-3.5.0.js"></script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>

<title>Insert title here</title>

</head>

<body>

<%

//로그인에 대한 세션값loginok 삭제remove

session.removeAttribute("loginok");

 

//로그인메인으로 이동..항상 메인을 통해 이동하도록

response.sendRedirect("loginmain.jsp");

%>

</body>

</html>

 

 

 

 

 

'JSP' 카테고리의 다른 글

211021_파일입출력  (0) 2021.10.21
211020_session  (0) 2021.10.20
211020_jsp로 게시판 만들기  (0) 2021.10.20
211019_복습(jsp)  (0) 2021.10.19
211019_jsp로 게시판 만들기  (0) 2021.10.19