KDT/WEB

240109 WEB - JSP20(MVC)

001cloudid 2024. 1. 9. 17:41
728x90

MVC 패턴

여러명에서 동시에 작업하기 위한 효율적인 프로그램 방식

Model : DB 작업 MemberDTO, MemberDAO

View : 화면 insert.jsp 화면

Controller : 제어 insepPro.jsp => 자바파일 메소드()

 

insert.jsp(화면)

=> MemberService insertPro() 메소드(처리) - MemberDAO 메소드(DB)

=> login.jsp(화면)

=> MemberService loginPro() 메소드(처리) - MemberDAO 메소드(DB)

=> main.jsp

 

주소 매핑 가상주소 만들어서 하이퍼링크 연결 => 실제 페이지 연결

public class MemberController extends HttpServlet {

//MemberController 파일을 servlet파일로 지정
//→ MemberController extends HttpServlet(자바내장객체(처리담당자) 상속
//→ 웹 애플리케이션 서버(처리담당서버)가 자동으로 서블릿 메소드 호출
//→ service(), doGet(), doPost(),... 자동으로 호출
//→ doGet(), doPost() 재정의(메소드 오버라이딩)해서 주소매핑 작업 처리


//메소드 오버라이딩(alt + shift + s → v)
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("MemberController doGet()"); //get방식일 때
//doProcess() 메소드 호출
doProcess(request, response);
}

@Override
protected void doPost(HttpServletRequest requset, HttpServletResponse response) throws ServletException, IOException {
System.out.println("MemberController doPost()"); //post방식일 때
//doProcess() 메소드 호출
doProcess(requset, response);
}

//주소 매핑을 위한 메소드 정의
protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("MemberController doProcess()");

//가상주소 http://localhost:8080/MVCProject/insert.me
//가상주소 뽑아보기 : /insert.me
String sPath = request.getServletPath();
System.out.println("가상주소 뽑아오기 : " + sPath);

/(...생략...)
//main.me 주소가 일치하면 member/main.jsp 주소변경없이 이동
if(sPath.equals("/main.me")) {
System.out.println("가상주소 비교 /main.me 일치");
RequestDispatcher dispatcher = request.getRequestDispatcher("member/main.jsp");
dispatcher.forward(request, response);
}

//logout.me 주소가 일치 => session초기화(session 객체 생성) => main.me 이동
if(sPath.equals("/logout.me")) {
System.out.println("가상주소 비교 /logout.me");
HttpSession session = request.getSession();
session.invalidate();
response.sendRedirect("login.me");
}
}
}

 

public class MemberController extends HttpServlet {

//메소드 오버라이딩(alt + shift + s → v)
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("MemberController doGet()"); //get방식일 때
//doProcess() 메소드 호출
doProcess(request, response);
}

@Override
protected void doPost(HttpServletRequest requset, HttpServletResponse response) throws ServletException, IOException {
System.out.println("MemberController doPost()"); //post방식일 때
//doProcess() 메소드 호출
doProcess(requset, response);
}

//주소 매핑을 위한 메소드 정의
protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("MemberController doProcess()");

//가상주소 http://localhost:8080/MVCProject/insert.me
//가상주소 뽑아보기 : /insert.me
String sPath = request.getServletPath();
System.out.println("가상주소 뽑아오기 : " + sPath);

(...생략...)
// /info.me 주소가 일치
//=> session값(로그인 표시값) 가져오기 => String id 변수에 저장
//=> MemberService 객체 생성
//=> MemberDTO getMember(id) 메소드 호출
//=> request에 "MemberDTO",memberDTO 담아서
//=> member/info.jsp 주소 변경 없이 이동
if(sPath.equals("/info.me")) {
System.out.println("가상주소 비교 /info.me 일치");
//=> session값(로그인 표시값) 가져오기 => String id 변수에 저장
HttpSession session = request.getSession();
String id = (String)session.getAttribute("id");
//=> MemberService 객체 생성
MemberService mc = new MemberService();

//=> MemberDTO getMember(id) 메소드 호출
MemberDTO memberDTO = mc.getMember(id);
request.setAttribute("memberDTO", memberDTO);

//=> member/info.jsp 주소 변경 없이 이동
RequestDispatcher dispatcher = request.getRequestDispatcher("member/info.jsp");
dispatcher.forward(request, response);
}
}
}

 

public class MemberService {

public void insertMember(HttpServletRequest request) {

System.out.println("MemberService insertMember(HttpServletRequest request)");

(...생략...)

//=> MemberDTO getMember(id) 메소드 호출
//=> request에 "MemberDTO",memberDTO 담아서
public MemberDTO getMember(String id) {
MemberDTO memberDTO = null;
System.out.println("MemberService getMember()");
try {
//MemberDAO 객체 생성
MemberDAO memberDAO = new MemberDAO();
//MemberDAO memberDAO = new MemberDAO()의 기억장소 주소.getMember(id)
memberDTO = memberDAO.getMember(id);
} catch (Exception e) {
e.printStackTrace();
}
return memberDTO;
}
}

 

<%@page import="com.itwillbs.domain.MemberDTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>member/info.jsp</title>
</head>
<body>
<h1>member/info.jsp</h1>
<h1>회원 정보 조회</h1>
<%
// String id = (String)session.getAttribute("id");
// //()클래스의 형 변환
// //main.jsp에서 info.jsp로 이동할 때 값을 들고오지 않음
// //연결정보를 저장하는 session 내장객체 안에 로그인표시("id","id값") 저장
// //session에서 로그인 표시값 가져오기 → String id 변수에 저장

// request.setCharacterEncoding("utf-8");

// //MemberDAO 객체 생성 -> 기억 장소 할당
// MemberDAO memberDAO = new MemberDAO();
// System.out.println("MemberDAO의 기억장소 주소 : " + memberDAO);
// //MemberDAO에 리턴할 형 MemberDTO getMember(String id) 메소드 정의
// //MemberDTO memberDTO = MemberDAO의 기억장소 주소.getMember(id) 메소드 호출
// MemberDTO memberDTO = memberDAO.getMember(id);
// //id가 일치했을 때 memberDTO에 id, pw, name, date가 저장해서 리턴,
// //그렇지 않을 경우 memberDTO에 비어있는 값 null이 리턴
// System.out.println("리턴 받은 MemberDTO의 바구니 기억장소 주소 : " + memberDTO);

MemberDTO memberDTO = (MemberDTO)request.getAttribute("memberDTO");
if(memberDTO != null){
%>
아이디 : <%=memberDTO.getId() %> <br>
비밀번호 : <%=memberDTO.getpw() %> <br>
이름 : <%=memberDTO.getName() %> <br>
가입날짜 : <%=memberDTO.getDate() %> <br>
<%
}else {
%> 아이디 없음
<%}
%>
<a href="main.me">main.me 이동</a>
</body>
</html>

 

public class MemberController extends HttpServlet {

(...생략...)

//주소 매핑을 위한 메소드 정의
protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("MemberController doProcess()");
String sPath = request.getServletPath();

(...생략...)
if(sPath.equals("/update.me")) {
System.out.println("가상주소 비교 /update.me 일치");
//세션값 가져오기 => String id 변수에 저장
HttpSession session = request.getSession();
String id = (String)session.getAttribute("id");
//MemberService 객체생성
//리턴할형 MemberDTO memberDTO = getMember(id) 메소드 호출
MemberService mc = new MemberService();
//request에 "memberDTO",memberDTO에 담아서 이동
MemberDTO memberDTO = mc.getMember(id);
request.setAttribute("memberDTO", memberDTO);
//member/update.jsp 주소 변경없이 이동
RequestDispatcher dispatcher = request.getRequestDispatcher("member/update.jsp");
dispatcher.forward(request, response);
}
}
}

 

<%@page import="com.itwillbs.domain.MemberDTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>member/update.jsp</title>
</head>
<body>
<h1>member/update.jsp</h1>
<h1>회원 정보 수정</h1>
<!-- 비밀번호가 맞는지 안맞는지를 먼저 확인한 후 이름만 수정 -->
<%
// request.setCharacterEncoding("utf-8");

// String id = (String)session.getAttribute("id");


// //자바 파일 MemberDAO 객체 생성
// MemberDAO memberDAO = new MemberDAO();
// System.out.println("MemberDAO의 기억장소 주소 : " + memberDAO);

// //MemberDTO memberDTO = MemberDAO의 기억장소 주소 .getMember(id) 메소드 호출
// MemberDTO memberDTO = memberDAO.getMember(id);

// System.out.println("리턴 받은 MemberDTO의 바구니 기억장소 주소 : " + memberDTO);

MemberDTO memberDTO = (MemberDTO)request.getAttribute("memberDTO");

if(memberDTO!=null){
%>
<form action="updatePro.me" method="post">
아이디 : <input type="text" name="id" value="<%=memberDTO.getId() %>" readonly><br>
비밀번호 : <input type="password" name="pw"> 비밀번호 입력 시 회원정보 수정<br>
이름 : <input type="text" name="name" value="<%=memberDTO.getName() %>"><br>
<%
}
%>
<input type="submit" value="회원정보수정">
</form>
</body>
</html>

 

public class MemberController extends HttpServlet {

(...생략...)
//주소 매핑을 위한 메소드 정의
protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("MemberController doProcess()");
String sPath = request.getServletPath();

(...생략...)
if(sPath.equals("/update.me")) {
System.out.println("가상주소 비교 /update.me 일치");
//세션값 가져오기 => String id 변수에 저장
HttpSession session = request.getSession();
String id = (String)session.getAttribute("id");
//MemberService 객체생성
//리턴할형 MemberDTO memberDTO = getMember(id) 메소드 호출
MemberService mc = new MemberService();
//request에 "memberDTO",memberDTO에 담아서 이동
MemberDTO memberDTO = mc.getMember(id);
request.setAttribute("memberDTO", memberDTO);
//member/update.jsp 주소 변경없이 이동
RequestDispatcher dispatcher = request.getRequestDispatcher("member/update.jsp");
dispatcher.forward(request, response);

}

if(sPath.equals("/updatePro.me")) {
System.out.println("가상주소 비교 /updatePro.me 일치");
//request 한글처리
request.setCharacterEncoding("utf-8");
//=> MemberService 객체 생성
MemberService mc = new MemberService();

//boolean result = userCheck(request) 메소드 호출
mc.userCheck(request);

boolean result = mc.userCheck(request);
if(result==true) {
mc.updateMember(request);
response.sendRedirect("main.me");
} else {
response.sendRedirect("update.me");
}
}

 

public class MemberService {

public void insertMember(HttpServletRequest request) {

System.out.println("MemberService insertMember(HttpServletRequest request)");

//insertPro.jsp 내용 넣기
try {
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String name = request.getParameter("name");
Timestamp date = new Timestamp(System.currentTimeMillis());

//MemberDTO 객체 생성 → 기억장소 할당
//패키지 com.itwillbs.domain.MemberDTO
MemberDTO memberDTO = new MemberDTO();
//멤버변수에 request에 가져온 값을 set 메서드 호출해서 저장
memberDTO.setId(id);
memberDTO.setpw(pw);
memberDTO.setName(name);
memberDTO.setDate(date);

// 패키지(폴더) member, 자바파일 MemberDAO 생성
//패키지 com.itwillbs.domain.MemberDAO
// insertMember() 메소드 정의
MemberDAO memberDAO = new MemberDAO();
memberDAO.insertMember(memberDTO);
} catch (Exception e) {
e.printStackTrace();
}
}

//loginPro.me 주소가 일치하면 MemberService 객체 생성
//리턴할 형은 looean userCheck(request) 메소드 호출
public boolean userCheck(HttpServletRequest request) {
boolean result = false;
System.out.println("HttpServletRequest userCheck()");
try {
//request에서 id, pw 태그(파라미터)값 가져와서 변수에 저장
String id = request.getParameter("id");
String pw = request.getParameter("pw");
//MemberDAO 객체 생성
MemberDAO memberDAO = new MemberDAO();
//userCheck메소드 호출
result = memberDAO.userCheck(id, pw);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}

//=> MemberDTO getMember(id) 메소드 호출
//=> request에 "MemberDTO",memberDTO 담아서
public MemberDTO getMember(String id) {
MemberDTO memberDTO = null;
System.out.println("MemberDTO getMember()");
try {
//MemberDAO 객체 생성
MemberDAO memberDAO = new MemberDAO();
//MemberDAO memberDAO = new MemberDAO()의 기억장소 주소.getMember(id)
memberDTO = memberDAO.getMember(id);
} catch (Exception e) {
e.printStackTrace();
}
return memberDTO;
}

//=> 리턴할 형 없음 updateMember(request) 메소드 호출
public void updateMember(HttpServletRequest request) {
System.out.println("HttpServletRequest updateMember()");
try {

//request에서 id, pass, name 태그(파라미터)값 가져와서 변수에 저장
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String name = request.getParameter("name");

//MemberDAO 객체 생성
//userCheck메소드 호출
MemberDTO memberDTO = new MemberDTO();
memberDTO.setId(id);
memberDTO.setpw(pw);
memberDTO.setName(name);

//MemberDTO 객체 생성
MemberDAO memberDAO = new MemberDAO();
memberDAO.updateMember(memberDTO);

} catch (Exception e) {
e.printStackTrace();
}
}
}

 

<%@page import="com.itwillbs.domain.MemberDTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>member/update.jsp</title>
</head>
<body>
<h1>member/update.jsp</h1>
<h1>회원 정보 수정</h1>
<!-- 비밀번호가 맞는지 안맞는지를 먼저 확인한 후 이름만 수정 -->
<%
// request.setCharacterEncoding("utf-8");

// String id = (String)session.getAttribute("id");


// //자바 파일 MemberDAO 객체 생성
// MemberDAO memberDAO = new MemberDAO();
// System.out.println("MemberDAO의 기억장소 주소 : " + memberDAO);

// //MemberDTO memberDTO = MemberDAO의 기억장소 주소 .getMember(id) 메소드 호출
// MemberDTO memberDTO = memberDAO.getMember(id);

// System.out.println("리턴 받은 MemberDTO의 바구니 기억장소 주소 : " + memberDTO);

MemberDTO memberDTO = (MemberDTO)request.getAttribute("memberDTO");

if(memberDTO!=null){
%>
<form action="updatePro.me" method="post">
아이디 : <input type="text" name="id" value="<%=memberDTO.getId() %>" readonly><br>
비밀번호 : <input type="password" name="pw"> 비밀번호 입력 시 회원정보 수정<br>
이름 : <input type="text" name="name" value="<%=memberDTO.getName() %>"><br>
<%
}

%>
<input type="submit" value="회원정보수정">
</form>
</body>
</html>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>member/delete.jsp</title>
</head>
<body>
<h1>member/delete.jsp</h1>
<h1>회원 정보 삭제</h1>
<%
//main.jsp에서 delete.jsp로 이동할 때 아무값도 없이 이동
//연결정보를 저장하는 session 내장객체 안에 로그인표시("id","asdf") 저장
//session에서 로그인 표시값 가져오기 String id 변수저장
String id = (String)session.getAttribute("id");
%>
<form action="deletePro.me" method="post">
아이디 : <input type="text" name="id" value="<%=id %>" readonly><br>
비밀번호 : <input type="password" name="pw"><br>
<input type="submit" value="회원정보삭제">
</form>
</body>
</html>

 

public class MemberController extends HttpServlet {

(...생략...)

//주소 매핑을 위한 메소드 정의
protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("MemberController doProcess()");
String sPath = request.getServletPath();
(...생략...)
if(sPath.equals("/update.me")) {
System.out.println("가상주소 비교 /update.me 일치");
//세션값 가져오기 => String id 변수에 저장
HttpSession session = request.getSession();
String id = (String)session.getAttribute("id");
//MemberService 객체생성
//리턴할형 MemberDTO memberDTO = getMember(id) 메소드 호출
MemberService mc = new MemberService();
//request에 "memberDTO",memberDTO에 담아서 이동
MemberDTO memberDTO = mc.getMember(id);
request.setAttribute("memberDTO", memberDTO);
//member/update.jsp 주소 변경없이 이동
RequestDispatcher dispatcher = request.getRequestDispatcher("member/update.jsp");
dispatcher.forward(request, response);
}


if(sPath.equals("/updatePro.me")) {
System.out.println("가상주소 비교 /updatePro.me 일치");
//request 한글처리
request.setCharacterEncoding("utf-8");
//=> MemberService 객체 생성
MemberService mc = new MemberService();

//boolean result = userCheck(request) 메소드 호출
mc.userCheck(request);

boolean result = mc.userCheck(request);
if(result==true) {
mc.updateMember(request);
response.sendRedirect("main.me");
} else {
response.sendRedirect("update.me");
}
}

if(sPath.equals("/delete.me")) {
System.out.println("가상주소 비교 /delete.me 일치");
//member/delete.jsp 주소 변경 없이 이동

}

if(sPath.equals("/deletePro.me")) {
//한글처리
//MemberService 객체생성
//boolean result = userCheck(request) 메소드 호출
//아아디 비밀번호 일치
//리턴할 형 없음 deleteMember(request) 메소드 호출
//세션 초기화(로그아웃)
//main.me이동
//아이디, 비밀번호 틀림 => delete.me 이동
}
}
}

 

728x90

'KDT > WEB' 카테고리의 다른 글

240112 WEB - JSP22(MVC, JSTL)  (0) 2024.01.12
240111 WEB - JSP21(MVC, JSTL)  (0) 2024.01.11
240104 WEB - JSP19(MVC)  (0) 2024.01.04
240102 WEB - JSP18(MVC, 커넥션풀)  (0) 2024.01.02
231228 WEB - JSP17(MVC)  (0) 2023.12.28