반응형

# MVC02_05~06

# MVC02_05 회원리스트 및 삭제 구현

## 회원가입 버튼 생성

  • 기존 memberList.jsp에 회원가입 버튼 추가.
  • 버튼 클릭 시 회원가입 페이지인 memberRegister.html로 이동될 수 있도록 작업.
<tr>
<td colspan="7" align="right"><input type="button" value="회원가입" class="btn" onclick="location.href='memberRegister.html'"/></td>
</tr>

## 회원삭제 기능 추가

  • memberList.jsp 에 삭제 버튼 추가. 및 삭제 버튼과 연결된 deleteFn 함수 추가.
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="kr.bit.model.*" %>
<%@ page import="java.util.*" %>
<%
	//1. 클라이언트 요청 받기 (memberList.do)
	MemberDAO dao = new MemberDAO();
		
	// 2. 회원 전체 리스트 가져오기(Model 연동)
	ArrayList<MemberVO> list = dao.memberList();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name='viewport' content='width=device-width, initial-scale=1'>
<link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css'>
<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js'></script>
<script src='https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js'></script>
<script>
	function deleteFn(num) {
		location.href="memberDelete.jsp?num=" + num;
	}
</script>
</head>
<body>
<table class="table table-bordered">
	<tr>
		<td>번호</td>
		<td>아이디</td>
		<td>비밀번호</td>
		<td>이름</td>
		<td>나이</td>
		<td>이메일</td>
		<td>전화번호</td>
		<td>삭제</td>
	</tr>
	<%
		for (MemberVO vo : list) {
	%>		
		<tr>
			<td><%=vo.getNum() %></td>
			<td><%=vo.getId() %></td>
			<td><%=vo.getPass() %></td>
			<td><%=vo.getName() %></td>
			<td><%=vo.getAge() %></td>
			<td><%=vo.getEmail() %></td>
			<td><%=vo.getPhone() %></td>
			<td><input type="button" value="삭제" class="btn btn-warning" onclick="deleteFn(<%=vo.getNum() %>)" /></td>
		</tr>
	<%	
		}
	%>
	<tr>
		<td colspan="8" align="right"><input type="button" value="회원가입" class="btn btn-primary" onclick="location.href='memberRegister.html'"/></td>
	</tr>
</table>
</body>
</html>
  • MVC02 > WebContext > member 우 클릭 > New > JSP File > memberDelete.jsp 생성
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="kr.bit.model.*" %>
<%
	int num = Integer.parseInt(request.getParameter("num"));
	
	MemberDAO dao = new MemberDAO();
	
	int cnt = dao.memberDelete(num);
	
	if (cnt > 0) {
		response.sendRedirect("memberList.jsp");
	} else {
		throw new ServletException("not delete");
	}
%>

 

 

# MVC02_06 회원상세보기 및 수정하기 구현

## 회원 상세보기 기능 추가

  • memberList.jsp 에서 회원의 번호에 상세보기용 a태그 추가.
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="kr.bit.model.*" %>
<%@ page import="java.util.*" %>
<%
	//1. 클라이언트 요청 받기 (memberList.do)
	MemberDAO dao = new MemberDAO();
		
	// 2. 회원 전체 리스트 가져오기(Model 연동)
	ArrayList<MemberVO> list = dao.memberList();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name='viewport' content='width=device-width, initial-scale=1'>
<link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css'>
<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js'></script>
<script src='https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js'></script>
<script>
	function deleteFn(num) {
		location.href="memberDelete.jsp?num=" + num;
	}
</script>
</head>
<body>
<table class="table table-bordered">
	<tr>
		<td>번호</td>
		<td>아이디</td>
		<td>비밀번호</td>
		<td>이름</td>
		<td>나이</td>
		<td>이메일</td>
		<td>전화번호</td>
		<td>삭제</td>
	</tr>
	<%
		for (MemberVO vo : list) {
	%>		
		<tr>
			<td><%=vo.getNum() %></td>
			<td><a href="memberContent.jsp?num=<%=vo.getNum()%>"><%=vo.getId() %></a></td>
			<td><%=vo.getPass() %></td>
			<td><%=vo.getName() %></td>
			<td><%=vo.getAge() %></td>
			<td><%=vo.getEmail() %></td>
			<td><%=vo.getPhone() %></td>
			<td><input type="button" value="삭제" class="btn btn-warning" onclick="deleteFn(<%=vo.getNum() %>)" /></td>
		</tr>
	<%	
		}
	%>
	<tr>
		<td colspan="8" align="right"><input type="button" value="회원가입" class="btn btn-primary" onclick="location.href='memberRegister.html'"/></td>
	</tr>
</table>
</body>
</html>
  • MVC02 > WebContext > member 우 클릭 > New > JSP File > memberContent.jsp 생성
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="kr.bit.model.*" %>
<%
	int num = Integer.parseInt(request.getParameter("num"));

	MemberDAO dao = new MemberDAO();
	
	MemberVO vo = dao.memberContent(num);
%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name='viewport' content='width=device-width, initial-scale=1'>
<link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css'>
<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js'></script>
<script src='https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js'></script>
</head>
<body>
<table border="1" class="table table-bordered">
<% if (vo != null) { %>
<tr>
<td colspan="2"><%=vo.getName() %> 회원의 상세보기</td>
</tr>
<tr>
<td>번호</td>
<td><%=vo.getNum() %></td>
</tr>
<tr>
<td>아이디</td>
<td><%=vo.getId() %></td>
</tr>
<tr>
<td>비밀번호</td>
<td><%=vo.getPass() %></td>
</tr>
<tr>
<td>이름</td>
<td><%=vo.getName() %></td>
</tr>
<tr>
<td>나이</td>
<td><input type="text" name="age" value="<%=vo.getAge() %>" /></td>
</tr>
<tr>
<td>이메일</td>
<td><input type="text" name="email" value="<%=vo.getEmail() %>" /></td>
</tr>
<tr>
<td>전화번호</td>
<td><input type="text" name="phone" value="<%=vo.getPhone() %>" /></td>
</tr>
<% } else { %>
<tr>
<td>일치하는 회원이 없습니다.</td>
</tr>
<% } %>
<tr>
<td colspan="2" align="center">
<input type="submit" value="수정하기" class="btn btn-primary" />
<input type="reset" value="취소" class="btn btn-warning" />
<input type="button" value="리스트" onclick="location.href='memberList.jsp'" class="btn" />
</td>
</tr>
</table>
</body>
</html>

## 회원 수정하기 기능 추가

  • memberList.jsp 에서 수정하기 기능을 위한 form 태그 추가 등 진행
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="kr.bit.model.*" %>
<%
	int num = Integer.parseInt(request.getParameter("num"));

	MemberDAO dao = new MemberDAO();
	
	MemberVO vo = dao.memberContent(num);
%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name='viewport' content='width=device-width, initial-scale=1'>
<link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css'>
<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js'></script>
<script src='https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js'></script>
</head>
<body>
<form action="memberUpdate.jsp" method="post">
<input type="hidden" name="num" value="<%=vo.getNum() %>"/>
	<table border="1" class="table table-bordered">
	<% if (vo != null) { %>
		<tr>
			<td colspan="2"><%=vo.getName() %> 회원의 상세보기</td>
		</tr>
		<tr>
			<td>번호</td>
			<td><%=vo.getNum() %></td>
		</tr>
		<tr>
			<td>아이디</td>
			<td><%=vo.getId() %></td>
		</tr>
		<tr>
			<td>비밀번호</td>
			<td><%=vo.getPass() %></td>
		</tr>
		<tr>
			<td>이름</td>
			<td><%=vo.getName() %></td>
		</tr>
		<tr>
			<td>나이</td>
			<td><input type="text" name="age" value="<%=vo.getAge() %>" /></td>
		</tr>
		<tr>
			<td>이메일</td>
			<td><input type="text" name="email" value="<%=vo.getEmail() %>" /></td>
		</tr>
		<tr>
			<td>전화번호</td>
			<td><input type="text" name="phone" value="<%=vo.getPhone() %>" /></td>
		</tr>
	<% } else { %>
		<tr>
			<td>일치하는 회원이 없습니다.</td>
		</tr>
	<% } %>
		<tr>
			<td colspan="2" align="center">
				<input type="submit" value="수정하기" class="btn btn-primary" />
				<input type="reset" value="취소" class="btn btn-warning" />
				<input type="button" value="리스트" onclick="location.href='memberList.jsp'" class="btn" />
			</td>
		</tr>
	</table>
</form>
</body>
</html>
  • MVC02 > WebContext > member 우 클릭 > New > JSP File > memberUpdate.jsp 생성
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="kr.bit.model.*" %>
<%
	int num = Integer.parseInt(request.getParameter("num"));
	int age = Integer.parseInt(request.getParameter("age"));
	String email = request.getParameter("email");
	String phone = request.getParameter("phone");

	MemberVO vo = new MemberVO();
	vo.setNum(num);
	vo.setAge(age);
	vo.setEmail(email);
	vo.setPhone(phone);
	
	MemberDAO dao = new MemberDAO();
	
	int cnt = dao.memberUpdate(vo);
	
	if (cnt > 0) {
		response.sendRedirect("memberList.jsp");
	} else {
		throw new ServletException("not update");
	}
%>   

 

반응형
반응형

# MVC02_04 Controller용 JSP와 View용 JSP

  • MVC02 > WebContent 우 클릭 > New > JSP File 클릭 후 test02.jsp 이름으로 생성
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="kr.bit.model.*" %>
<%
	// import 없이 아래와 같이 사용 가능
	// kr.bit.model.MyCalc c = new kr.bit.model.MyCalc();
	
	// import 시 : page import="kr.bit.model.*" 아래와 같이 사용 가능
	MyCalc c = new MyCalc();

	int v = c.hap(1, 300);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table border="1">
	<tr>
		<td>1 ~ 300 까지의 총합</td>
		<td><%=v %></td>
	</tr>
</table>
</body>
</html>

## JSP 이용한 회원관리 프로그램 만들기

  • MVC02 > WebContent 우 클릭 > New > Folder 클릭 후 member 폴더 생성

### 회원 가입 JSP 생성 (memberInsert.jsp)

  • 우선 member 폴더에 기존 MVC01에서 작업한 memberRegister.html 파일 가져와서 작업.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC02_신규 회원 가입</title>
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<h1>회원가입화면</h1>
<form action="memberInsert.jsp" method="POST" >
	<table class="table table-bordered">
	  <tr>
	    <td>아이디</td>
	    <th><input type="text" name="id" /></th>
	  </tr>
	  <tr>
	    <td>패스워드</td>
	    <th><input type="password" name="pass" /></th>
	  </tr>
	  <tr>
	    <td>이름</td>
	    <th><input type="text" name="name" /></th>
	  </tr>
	  <tr>
	    <td>나이</td>
	    <th><input type="text" name="age" /></th>
	  </tr>
	  <tr>
	    <td>이메일</td>
	    <th><input type="text" name="email" /></th>
	  </tr>
	  <tr>
	    <td>전화번호</td>
	    <th><input type="text" name="phone" /></th>
	  </tr>
	  <tr>
	    <td colspan="2" align="center">
	    	<input type="submit" value="가입" class="btn btn-primary"/>
			<input type="reset" value="취소" class="btn btn-warning"/>
	    </td>
	  </tr>
	</table>
</form>
</body>
</html>
  • member 폴더 우 클릭 > New > JSP File 클릭 후 memberInsert.jsp 생성 (Controller용 JSP : 자바소스코드로 구성)
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="kr.bit.model.*" %>
<%
	// 파라미터 수집 (VO 이용)
	request.setCharacterEncoding("utf-8");

	String id = request.getParameter("id");
	String pass = request.getParameter("pass");
	String name = request.getParameter("name");
	int age = Integer.parseInt(request.getParameter("age"));
	String email = request.getParameter("email");
	String phone = request.getParameter("phone");
	
	// 파라미터 수집(VO)
	// MemberVO vo = new MemberVO(id, pass, name, age, email, phone);
	MemberVO vo = new MemberVO();		
	vo.setId(id);
	vo.setPass(pass);
	vo.setName(name);
	vo.setAge(age);
	vo.setEmail(email);
	vo.setPhone(phone);
	
	MemberDAO dao = new MemberDAO();
	int cnt = dao.memberInsert(vo);
	// PrintWriter out = response.getWriter();
	// 가입 성공
	if ( cnt > 0 ) {
		// 다시 회원 리스트 보기로 가야함.
		response.sendRedirect("memberList.jsp");
		// 가입 실패 -> 예외 객체를 만들어서 WAS에게 던지자.
	} else {
		throw new ServletException("not insert");
		
	}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

</body>
</html>
  • member 폴더 우 클릭 > New > JSP File 클릭 후 memberList.jsp 생성 (View 용 JSP : 화면에 응답만)
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="kr.bit.model.*" %>
<%@ page import="java.util.*" %>
<%
	//1. 클라이언트 요청 받기 (memberList.do)
	MemberDAO dao = new MemberDAO();
		
	// 2. 회원 전체 리스트 가져오기(Model 연동)
	ArrayList<MemberVO> list = dao.memberList();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name='viewport' content='width=device-width, initial-scale=1'>
<link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css'>
<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js'></script>
<script src='https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js'></script>
</head>
<body>
<table class="table table-bordered">
	<tr>
		<td>번호</td>
		<td>아이디</td>
		<td>비밀번호</td>
		<td>이름</td>
		<td>나이</td>
		<td>이메일</td>
		<td>전화번호</td>
	</tr>
	<%
		for (MemberVO vo : list) {
	%>		
		<tr>
			<td><%=vo.getNum() %></td>
			<td><%=vo.getId() %></td>
			<td><%=vo.getPass() %></td>
			<td><%=vo.getName() %></td>
			<td><%=vo.getAge() %></td>
			<td><%=vo.getEmail() %></td>
			<td><%=vo.getPhone() %></td>
		</tr>
	<%	
		}
	%>
</table>
</body>
</html>

### 작동 확인

  • 회원가입 후 회원 리스트 정상출력 확인 가능.

반응형
반응형

# MVC02_03 JSP를 Servlet으로 변경해보기

## JSP의 내장객체

  • 내장객체는 이미 Servlet으로 변환될 때 만들어짐
  • request, response : JSP의 내장객체(이미 만들어진 객체)
  • 그외에도 session, out, config, application, page, pageContext 등의 JSP 내장 객체가 존재.

## JSP를 Servlet으로 변환

  • 아래 JSP 코드를 Servlet으로 변환할 예정
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%-- 두 수 사이의 총합을 구하는 메서드 --%>
<%!
	public int hap(int s, int e) {
		int sum = 0;
	
		for ( int i = s; i <= e; i++ ) {
			sum += i;
		}
		
		return sum;
	}
%>
<%
	int sum = 0;

	for ( int i = 1; i <= 10; i++ ) {
		sum += i;
	}
%>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table border="1">
	<tr>
		<td>1 ~ 10까지의 총합</td>
		<td><%=sum %></td>
	</tr>
	<tr>
		<td>55 ~ 350까지의 총합</td>
		<td><%=hap(55, 350) %></td>
	</tr>
</table>
</body>
</html>
  • 위 코드를 변환 하면 아래와 같다.

### JSP 상단 페이지 지시자

JSP
=>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

Servlet 으로 변환
=>
response.setContentType("text/html; charset=utf-8");

### JSP 주석

JSP
=>
<%-- --%>	: 주석

Servlet 으로 변환
// 			: 주석

### 메서드

JSP
=>
<%!
	public int hap(int s, int e) {
		int sum = 0;
	
		for ( int i = s; i <= e; i++ ) {
			sum += i;
		}
		
		return sum;
	}
%>


Servlet 으로 변환
=>
public int hap(int s, int e) {
	int sum = 0;
	
	for ( int i = s; i <= e; i++ ) {
		sum += i;
	}
		
	return sum;
}

### 스크립트릿

JSP
=>
<%
  int sum = 0;

  for ( int i = 1; i <= 10; i++ ) {
  sum += i;
  }
%>

Servlet 으로 변환
=>
int sum = 0;

for ( int i = 1; i <= 10; i++ ) {
  sum += i;
}

### HTML 코드

  • 100% 다 변환되는 건 아니지만 대부분 아래처럼 변환
JSP
=>
<!DOCTYPE html>
등등... 

Servlet 으로 변환
=>
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<tr>");
out.println("<td>1 ~ 10까지의 총합</td>");
out.println(sum);
out.println("</tr>");

### JSP > Servlet 변환된 코드

import java.io.*;
import javax.servlet.*;
import.javax.servlet.http.*;

public int hap(int s, int e) {
	int sum = 0;
	
	for ( int i = s; i <= e; i++ ) {
		sum += i;
	}
		
	return sum;
}

public class test01_jsp extends HttpServlet {
	public void service(HttpServletRequest request, HttpServletResponse response) 
						throws ServletException, IOException {
		response.setContentType("text/html; charset=utf-8");
		PrintWriter out = response.getWriter();

		// 두 수 사이의 총합을 구하는 메서드
		int sum = 0;

		for ( int i = 1; i <= 10; i++ ) {
			sum += i;
		}

		out.println("<!DOCTYPE html>");
		out.println("<html>");
		out.println("<tr>");
		out.println("<td>1 ~ 10까지의 총합</td>");
		out.println(sum);
		out.println("</tr>");
		out.println("<tr>");
		out.println("<td>55 ~ 350까지의 총합</td>");
		out.println(hap(55,350));
		out.println("</tr>");
	}
}

반응형
반응형

# MVC02_02 JSP는 Servlet이다.

  • 클라이언트의 요청이 들어오면 톰캣은 JSP의 스크립트적인 요소를 해석(렌더링)

## JSP는 Servlet이다.

  • 클라이언트로 부터 요청이 오면  JSP 웹 페이지가 Servlet 형태로 변환된다.
  • test01.jsp > test01_jsp.java (Servlet) > Servlet 파일이 컴파일되어 test01_jsp.class 로 변환.
  • 변환된 test01_jsp.class 파일 중에서 결과페이지가 클라이언트에게 응답된다.
  • 변환된 파일은 (C:\eGovFrame-3.9.0\workspace.edu\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\MVC02\org\apache\jsp) 해당 경로에 저장된다.

 

반응형

+ Recent posts