[JSP] login 2-3
heaer.jsp 수정
memberlist 를 추가할건데 일단 header를 수정하자.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
a{
text-decoration : none;
}
td {
border : 1px solid #444444;
width : 200px;
text-align : center;
}
.login:hover{
background-color : #AFC7F9;
}
</style>
</head>
<body>
<table align="center">
<tr>
<!-- non-member page -->
<c:if test="${empty loginUser}">
<td></td>
<td></td>
<td><a href="login.do">log-in</a></td>
<td style="width:300px;">
member registration <br> <span style="color:red">(can use only manager)</span>
</td>
<td>
member's page <br> <span style="color:red">(can use only member)</span>
</td>
<td>
member's list <br> <span style="color:red">(can use only manager)</span>
</td>
</c:if>
<!-- member / manager page -->
<c:if test="${!empty loginUser}">
<td>${loginUser.name}, hello!</td>
<td>level : ${loginUser.lev}</td>
<td class="login"><a href="logout.do">log-out</a></td>
<c:choose>
<c:when test="${result==2}">
<td class="login" style="width:300px;"><a href="custom.do">member registration </a></td>
</c:when>
<c:when test="${result==3}">
<td style="width:300px;">
member registration <br> <span style = "color:red">(can use only manager)</span>
</td>
</c:when>
</c:choose>
<td class="login">
<a href="mypage.do">member's page</a>
</td>
<c:choose>
<c:when test="${result==2}">
<td class ="login"><a href = "memberlist.do">member's list</a></td>
</c:when>
<c:when test="${result==3}">
<td>member's list<br> <span style = "color:red">(can use only manager)</span></td>
</c:when>
</c:choose>
</c:if>
</tr>
</table>
</body>
</html>
MemberList.java (/memberList.do)
get방식으로 넘어올 것이다.
로그인을 하면 session 정보에 들어가있으니, session 정보를 이용하여 manager인지 chk 한다.
@WebServlet("/memberlist.do")
public class MemberList extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
//VO객체에 담겨있는 session을 loginUser 에 저장했었던 것을 가져오기
EmployeesVO emp = (EmployeesVO)session.getAttribute("loginUser");
//loginUser 저장할때 level 도 저장했었음
int result = (Integer)session.getAttribute("result");
if(emp!=null && result==2) { //manager인 상태
//DB불러오기
EmployeesDAO memberDAO = EmployeesDAO.getInstance();
//DAO에서 메소드만들기
}else { //manager가 아니면
response.sendRedirect("login.do");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
EmployeesDAO 에서 selectMember 메소드 만들기
조회된 결과가 여러개인데, 그것을 담아서 servlet 으로 보내서 그 정보를 서블릿에서 회원정보를 출력할 수 있는 상태로 만들어야한다.
select에서 조회된 정보를 VO에서 저장해서 table에 있는 만큼 조회해서 반환해야한다.
while문을 한번 실행할 때마다 정보를 저장해두고 또 while 문을 실행하면 그정보를 또 저장하고 해야한다.
employeesVO 배열을 만들어서 거기에 저장하면된다. (회원이 정확히 몇명인지 모르니까 Arraylist 사용)
void하면 여기서만 쓸수있으니까 void 말고 반환타입을 ArrayList<EmployeesVO> 이다.
package com.magic.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import com.magic.dto.EmployeesVO;
....
public ArrayList<EmployeesVO> selectMember() {
EmployeesVO member=null;
ArrayList<EmployeesVO> memberlist = new ArrayList<>();
Connection conn = null;
String sql = "select * from employees";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = getConnection();
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while(rs.next()) { //rs 에서 받아온 것을 vo 객체에 넣어주기
member = new EmployeesVO();
member.setId(rs.getString("id"));
member.setName(rs.getString("name"));
member.setLev(rs.getString("lev"));
member.setPass(rs.getString("pass"));
member.setEnter(rs.getDate("enter"));
member.setGender(rs.getInt("gender"));
member.setPass(rs.getString("phone"));
//방금 입력한 값들을 저장하기
memberlist.add(member);
}
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
if(rs!=null) rs.close();
if(pstmt!=null) rs.close();
if(conn!=null) rs.close();
}catch(Exception e) {
e.printStackTrace();
}
}
return memberlist;
}
....
}
MemberList.java (/memberlist.do)
여기서는 generic 을 타입을 이용하여 ArrayList<EmployeesVO> 랑 List<EmployeesVO> 는 같은 타입이다.
memberlist 를 다음 페이지에서 사용해야하니까 request 영역에 저장해두자.
package com.magic.controller;
import java.io.IOException;
import java.util.List;
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 com.magic.dao.EmployeesDAO;
import com.magic.dto.EmployeesVO;
@WebServlet("/memberlist.do")
public class MemberList extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
EmployeesVO emp = (EmployeesVO)session.getAttribute("loginUser");
int result = (Integer)session.getAttribute("result");
if(emp!=null && result==2) {
EmployeesDAO memberDAO = EmployeesDAO.getInstance();
List<EmployeesVO> memberlist = memberDAO.selectMember();
request.setAttribute("memberlist",memberlist);
request.setAttribute("message", "사원정보 조회");
RequestDispatcher rd = request.getRequestDispatcher("memberlist.jsp");
rd.forward(request, response);
}else {
response.sendRedirect("login.do");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
memberlist.jsp
servlet 에 있는 회원정보 memberlist 를 가져온다.
몇명인지 모르니까 반복문 사용
package com.magic.controller;
import java.io.IOException;
import java.util.List;
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 com.magic.dao.EmployeesDAO;
import com.magic.dto.EmployeesVO;
@WebServlet("/memberlist.do")
public class MemberList extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
EmployeesVO emp = (EmployeesVO)session.getAttribute("loginUser");
int result = (Integer)session.getAttribute("result");
if(emp!=null && result==2) {
EmployeesDAO memberDAO = EmployeesDAO.getInstance();
List<EmployeesVO> memberlist = memberDAO.selectMember();
request.setAttribute("memberlist",memberlist);
request.setAttribute("message", "사원정보 조회");
RequestDispatcher rd = request.getRequestDispatcher("memberlist.jsp");
rd.forward(request, response);
}else {
response.sendRedirect("login.do");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ include file="header.jsp" %>
<%
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table align="center">
<tr>
<td colspan="6" align="center">
<h3>member's list</h3>
<div style="color:red">%{message}</div>
</td>
</tr>
<tr>
<td align="center">ID</td>
<td align="center">PASSWORD</td>
<td align="center">NAME</td>
<td align="center">LEVEL</td>
<td align="center">GENDER</td>
<td align="center">PHONE NUMBER</td>
</tr>
<c:forEach var="emp" items="${memberlist}">
<tr>
<td>${emp.id}</td>
<td>${emp.pass}</td>
<td>${emp.name}</td>
<td>
<c:choose>
<c:when test='${emp.lev=="A"}'>manager</c:when>
<c:otherwise>user</c:otherwise>
</c:choose>
</td>
<td>
<c:choose>
<c:when test='${emp.gender=="1"}'>man</c:when>
<c:otherwise>woman</c:otherwise>
</c:choose>
</td>
<td>${emp.phone}</td>
</tr>
</c:forEach>
<tr>
<td colspan="6" align="center">
<input type="button" value="go to the main page" onclick="location.href='main.jsp'">
</td>
</tr>
</table>
</body>
</html>