앞서 데이터베이스 테이블 생성 시 name, year, form과 같은 키워드를 컬럼명으로 사용하지 않도록 주의해야 합니다. 이번에는 JSP와 MySQL을 연동하여 학생 정보 관리 시스템의 로그인 기능을 구현하는 방법을 살펴보겠습니다.
1. 관리자 테이블 생성
CREATE TABLE manager (
id INT AUTO_INCREMENT PRIMARY KEY,
user_name VARCHAR(50) NOT NULL,
pwd VARCHAR(50) NOT NULL,
num INT NOT NULL
);
2. 관리자 도메인 클래스
public class Manager {
private int id;
private String userName;
private String password;
private int accessLevel;
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getUserName() { return userName; }
public void setUserName(String userName) { this.userName = userName; }
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password; }
public int getAccessLevel() { return accessLevel; }
public void setAccessLevel(int accessLevel) { this.accessLevel = accessLevel; }
}
3. 로그인 검증 메서드
public class ManagerDAO {
public boolean validateLogin(String userName, String password) {
boolean isValid = false;
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = DatabaseUtil.getConnection();
String sql = "SELECT * FROM manager WHERE user_name = ? AND pwd = ? AND num = 1";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, userName);
pstmt.setString(2, password);
rs = pstmt.executeQuery();
if (rs.next()) {
isValid = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DatabaseUtil.closeResources(rs, pstmt, conn);
}
return isValid;
}
}
4. 로그인 JSP 페이지
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>학생 관리 시스템 로그인</title>
</head>
<body>
<div style="text-align:center;">
<h1>학생 관리 시스템</h1>
<hr/>
<form action="login" method="post">
<table style="margin:0 auto;">
<tr>
<td>아이디 : </td>
<td><input type="text" name="userId" /></td>
</tr>
<tr>
<td>비밀번호 : </td>
<td><input type="password" name="userPwd" /></td>
</tr>
<tr>
<td colspan="2" style="text-align:center;">
<input type="submit" value="로그인"/>
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
5. 로그인 처리 서블릿
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
String userId = request.getParameter("userId");
String userPwd = request.getParameter("userPwd");
ManagerDAO dao = new ManagerDAO();
boolean loginSuccess = dao.validateLogin(userId, userPwd);
if (loginSuccess) {
StudentDAO studentDAO = new StudentDAO();
List<Student> studentList = studentDAO.getAllStudents();
request.setAttribute("studentList", studentList);
request.getRequestDispatcher("/studentList.jsp").forward(request, response);
} else {
response.sendRedirect("/login.jsp");
}
}
}
6. 메인 페이지 (학생 목록)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.example.model.Student, java.util.List" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>학생 정보 목록</title>
</head>
<body>
<%
List<Student> studentList = (List<Student>) request.getAttribute("studentList");
%>
<div style="text-align:center;">
<h1>학생 정보 관리</h1>
<hr/>
<form action="search" method="post">
<table style="width:80%; margin:0 auto;">
<tr>
<td><a href="addStudent.jsp">추가</a></td>
<td>정확 검색 : <input type="text" name="exactSearch"/></td>
<td>부분 검색 : <input type="text" name="partialSearch"/></td>
</tr>
</table>
</form>
<table border="1" style="width:80%; margin:0 auto;">
<tr>
<th>ID</th>
<th>이름</th>
<th>성별</th>
<th>나이</th>
<th>출신지</th>
<th>학교</th>
<th colspan="2">관리</th>
</tr>
<%
if (studentList != null && !studentList.isEmpty()) {
for (Student student : studentList) {
%>
<tr>
<td><%= student.getId() %></td>
<td><%= student.getName() %></td>
<td><%= student.getGender() == 1 ? "남" : "여" %></td>
<td><%= student.getAge() %></td>
<td><%= student.getHometown() %></td>
<td><%= student.getSchool() %></td>
<td><a href="editStudent?id=<%= student.getId() %>">수정</a></td>
<td><a href="deleteStudent?id=<%= student.getId() %>">삭제</a></td>
</tr>
<%
}
}
%>
</table>
</div>
</body>
</html>
JSP에서 데이터베이스와의 상호작용은 서블릿(Controller)을 통해 이루어집니다. JSP 페이지 내에서는 <% %> 스크립트릿을 사용하여 Java 코드를 직접 작성할 수 있으며, 이를 통해 컨트롤러에서 전달받은 데이터를 출력하거나 화면 로직을 처리합니다.