본문 바로가기
개발 공부 Today I Learned

[국비 37일차 TIL] 게시판 로그인 페이지 만들기

by 개발자신입 2024. 1. 12.
반응형

HeidiSQL

 

member 테이블 생성

mno(pk,auto) / mid(10) / mpw(20) / mname(10) / mdate(datetime) / mgrade(1)

 

INSERT INTO member (mid,mpw,mname)
VALUES ('test1', '01234567', 'test1'),
('test2', '01234567', 'test2'),
('test3', '01234567', 'test3'),
('test4', '01234567', 'test4'),
('test5', '01234567', 'test5'),
('test6', '01234567', 'test6');


SELECT COUNT(*) AS count, mname FROM member 
WHERE mid='test' AND mpw='0000';

 

login.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!-- 선언문 core태그 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 페이지입니다.</title>

<link href="./css/index.css" rel="stylesheet">
<link href="./css/menu.css" rel="stylesheet">
<script type="text/javascript" src="./js/menu.js"></script>

<style type="text/css">

html, body {
	height: 100%;
	margin: 70px auto;

}
body {
	align-items: center;
}


#name_field, #pw_field{
	width: 400px;
	height: 30px;
	text-align: left;
	border-collapse: collapse;
	border-bottom: 1px solid black;
	border-left-style: none;
	border-right-style: none;
	border-top-style: none;
	margin: 0 autopx;
	padding-top: 10px;
	display: flex;
	align-items: center;
}

.h1{
	text-align: center;
	color : #8E44EC;
	font-size: 50px;
}

#login_form, #reset_form{
  width: 100%;
  padding: 7px;
  border: none;
  border-radius: 5px;
  color: white;
  font-weight: bold;
  background-color: #8E44EC;
  cursor: pointer;
  outline: none;
}


</style>
<script type="text/javascript">
function err(){
	let errBox = document.querySelector("#errorMSG");
	errBox.innerText="\n올바른 id와 pw를 입력하세요.";
	errBox.style.color="#E84636";
	errBox.style.fontSize="10pt"
}
</script>
</head>
<body>
	
	<header>
		<jsp:include page="menu.jsp"></jsp:include>
		<!-- jsp: 는 출력 결과만 화면에 나옴 -->
	</header>
	<div class="main">
		<div class="mainStyle">
			<article>	
				<h1 class="h1">Login </h1>
					<c:if test="${param.error ne null}">
						<script type="text/javascript">
							alert("올바른 암호와 아이디를 입력하세요.");
							</script> 
					</c:if>
				<div class="login">
					<form action="./login" method="post" style="width: 400px; margin: 0 auto; padding-top: 10px;">
						<input type="text" id="name_field" name="id" placeholder="아이디를 입력하세요."><br>
						<input type="password" id="pw_field" name="pw" placeholder="암호를 입력하세요."><br><br>
						<button type="reset" id="reset_form" style="width: 49%;"> 지우기 </button>
						<button type="submit" id="login_form" style="width: 49%;">로그인</button>
						<div id="errorMSG"></div>
					</form>
				</div>
			</article>
		</div>
	</div>
	<c:if test="${param.error ne null }">
		<script type="text/javascript">
			err();
		</script>
	</c:if>				
					
</body>
</html>

 

 

login.java

 

import java.io.IOException;

import javax.servlet.RequestDispatcher;
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;

import com.coffee.dao.MemberDAO;
import com.coffee.dto.MemberDTO;

@WebServlet("/login")
public class Login extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public Login() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		RequestDispatcher rd = request.getRequestDispatcher("login.jsp");
		rd.forward(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	// 2024-01-12 웹 서버 프로그래밍 구현
		if(request.getParameter("id") != null && request.getParameter("pw") != null) {
			MemberDTO dto = new MemberDTO();
			dto.setMid(request.getParameter("id"));
			dto.setMpw(request.getParameter("pw"));
			
			MemberDAO dao = new MemberDAO();
			dto = dao.login(dto);
			
			if(dto.getCount() == 1) {
				System.out.println("정상 로그인");
				// 세션 만들기
				HttpSession session = request.getSession();
				session.setAttribute("mname", dto.getMname()); // mname이라는 이름으로 세션 생성
				session.setAttribute("mid", dto.getMid()); // mid라는 이름으로 세션 생성
				// 페이지 이동 = board
				response.sendRedirect("./board");
			} else {
				System.out.println("로그인 불가 오류");
				// 페이지 이동 = login?error=4567
				response.sendRedirect("./login?error=4567");
			}
		} else {
			
		}
	}
}
반응형

댓글