JSP

[JSP] login 2-3

worri-pi 2021. 8. 3. 13:05

 

 

 

 

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>
728x90