JSP

[JSP] login2-2

worri-pi 2021. 8. 2. 14:32

 

 

 

mypageServlet.java (mypage.do)

로그인이 완료된다면, mypage.do 페이지로 이동할 수 있도록 header.jsp 에서 설정해놨다.

로그인이 완료되어있는 상태인지 확인하기 위해서 session 정보를 이용하여 doGet 메소드에서 확인하자.

package com.magic.controller;

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 com.magic.dao.EmployeesDAO;
import com.magic.dto.EmployeesVO;

@WebServlet("/mypage.do")
public class MypageServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//session 정보가 있는지 확인하기
		HttpSession session = request.getSession();
		EmployeesVO emp = (EmployeesVO)session.getAttribute("loginUser");
		if(emp!=null) {
			RequestDispatcher dispatcher = request.getRequestDispatcher("mypage.jsp");
			dispatcher.forward(request, response);
		}
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		
		EmployeesVO member = new EmployeesVO();
		
		member.setPhone(request.getParameter("phone"));
		member.setGender(Integer.parseInt(request.getParameter("gender")));
		member.setLev(request.getParameter("lev"));
		member.setPass(request.getParameter("pwd"));
		member.setName(request.getParameter("name"));
		member.setId(request.getParameter("id"));
		
		EmployeesDAO eDao = EmployeesDAO.getInstance();
		eDao.updateMember(member);

		//수정완료
		
		HttpSession session = request.getSession();
		
		 //방금 updqte한 member를 session에 담아두기.
		request.setAttribute("member", member);
		request.setAttribute("message", "회원정보가 수정됐다");
		
		EmployeesVO emp = eDao.getMember(member.getId());
		session.setAttribute("loginUser",emp);//session에 저장하기 
		
		int result = eDao.userCheck(member.getId(), member.getPass(), member.getLev());
		session.setAttribute("result", result);
		RequestDispatcher rd = request.getRequestDispatcher("joinsuccess.jsp");
		rd.forward(request, response);
	}

}

 

 

 

joinsuccess.jsp

mypageservlet.java 에 session에서 emp와 result

request 에서 message -> ${message}

request 에서 member -> ${member.id}

lev는 lev속성${member.lev}으로해도 되고 result<c:choose> </c:choose> 로 해도된다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="header.jsp" %>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<table align="center">
		<tr>
			<td colspan="2">
				<span>success join! your information</span>
				<div style="color:red;">${message}</div>
			</td>
		</tr>
		<tr>
			<td>ID</td>
			<td>${member.id}</td>
		</tr>
		<tr>
			<td>PASSWORD</td>
			<td>${member.pass}</td>
		</tr>
		<tr>
			<td>PHONE NUMBER</td>
			<td>${member.phone}</td>
		</tr>
		<tr>
			<td>GENDER</td>
			<td>
				<c:choose>
					<c:when test='${member.lev=="1"}'>man</c:when>
					<c:otherwise>woman</c:otherwise>
				</c:choose>
			</td>
		</tr>
		<tr>
			<td>LEVEL</td>
			<td>
				<c:choose>
					<c:when test='${member.lev=="A"}'>manager</c:when>
					<c:otherwise>user</c:otherwise>
				</c:choose>
			</td>
		</tr>
		<tr>
			<td>NAME</td>
			<td>${member.name}</td>
		</tr>
		<tr>
			<td colspan="2">
				<input type="button" value="go to the main page" onclick="location.href='main.jsp'">
			</td>
		</tr>
	</table>
</body>
</html>

 

 

 

 

main.jsp

 

login 완료 시 볼 수 있는 페이지이다.

위쪽에 header.jsp 를 include 하고, member에게만 보이는 화면과 manager 에게만 보이는 화면이 다르다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file = "header.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body align="center">
	<h2>WELCOME! <br> page for member</h2>
	<img src = "images/2.jpg" width ="30%" height="30%">
</body>
</html>

 

 

 

 

customjoinservlet.java (@custom.do)

사원등록

session을 이용해서 manager 만 접근가능하게 하기.

변경값을 저장하는 loginUser session 이  mypageServlet에 있음. 사용하기/ (employeesVO 타입임)

 

package com.magic.controller;

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 com.magic.dao.EmployeesDAO;
import com.magic.dto.EmployeesVO;

@WebServlet("/custom.do")
public class CustomJoinServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		HttpSession session = request.getSession();
		
        //loginUser 속성 가져와서 변수에 담기
		EmployeesVO emp = (EmployeesVO)session.getAttribute("loginUser"); 
		int result = (Integer)session.getAttribute("result");
		if(emp!=null && result ==2) {
			RequestDispatcher rd = request.getRequestDispatcher("customjoin.jsp");
			rd.forward(request, response);
		}else { 
			response.sendRedirect("login.do");
		}		
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		
		EmployeesVO member = new EmployeesVO();
		member.setId(request.getParameter("id"));
		member.setPass(request.getParameter("pass"));
		member.setLev(request.getParameter("lev"));
		member.setPhone(request.getParameter("phone"));
		member.setGender(Integer.parseInt(request.getParameter("gender")));
		member.setName(request.getParameter("name"));
		
		EmployeesDAO memberDAO = EmployeesDAO.getInstance();
		
		//insertMember 메소드 이용하여 vo객체 넘겨주기
		memberDAO.insertMember(member);
		
		//회원 등록
		request.setAttribute("member", member);
		request.setAttribute("message", "사원등록 완료");
		
		RequestDispatcher rd = request.getRequestDispatcher("joinsuccess.jsp");
		rd.forward(request, response);
	}

}

 

 

 

customjoin.jsp

manager만 선택할 수 있는 회원등록하기 만들기

회원등록 폼 만들기 (header.jsp 에 선택영역 있음)

header넣기

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="header.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action ="custom.do" method="post">
	<table align="center" border="1">	
		<tr>
			<td colspan="2">
				<span>register your member. enter information</span>
			</td>
		</tr>
		<tr>
			<td>ID</td>
			<td><input type="text" name="id"></td>
		</tr>
		<tr>
			<td>PASSWORD</td>
			<td><input type="text" name="pass"></td>
		</tr>
		<tr>
			<td>NAME</td>
			<td><input type="text" name="name"></td>
		</tr>
		<tr>
			<td>GENDER</td>
			<td>
				<select name="gender">
					<option value="1">man
					<option value="2">woman
				</select>
			</td>
		</tr>
		<tr>
			<td>LEVEL</td>
			<td>
				<select name="lev">
					<option value="A">manager
					<option value="B">user
				</select>
			</td>
		</tr>
		<tr>
			<td>PHONE NUMBER</td>
			<td><input type="text" name="phone"></td>
		</tr>
		<tr>
			<td colspan="2">
				<input type="submit" value="confirm">
				<input type="reset" value="reset">
				<input type="button" value="go to the main page" onclick="location.href='main.jsp'">
			</td>
		</tr>
	</table>
</form>
</body>
</html>

 

 

customjoinservlet.java

customjoin.jsp 에서 이동됨. post로 처리. db 사용하여 회원정보 저장하기

일단 vo객체 생성, 후 vo 객체에 넣기

 

 

employeesdao.java

저장하는 메소드를 dao에서 처리해놓기

 insertMember()

입력한 데이터 받고 값을 넣어주기

sysdate 이용하여 오늘 날짜 넣기

 

 

customjoinservelt

회원정보 등록 성공 창 보여지기 

회우너정보가 잘 등록되었다면 post 에 있는 member 이용하여 joinsuccess.jsp로 넘겨서 메시지 보여주기

 

 

logoutservlet.java

get방식으로

session정보 받아서 삭제후 login.jsp 로 이동하게한다

send로 넘겨도된다.

728x90