JSP

이클립스 코드 JSP로 변경해보기 - 로그인 Controller 부분1

보배 진 2025. 11. 18. 11:01

 

전체적으로 JSP에서 Java 코드를 줄이고, MVC 패턴처럼 역할을 나누고, 자동화/편의성을 높이는 방향으로

 

 

 

파일 경로

 

 

 

index.jsp 전체코드

<!-- View -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>페이지 01</title>
</head>
<body>
<form action="controller_login.jsp" method="POST">
<!-- action="controller_login.jsp"는 command == 번호 와 같다 -->
   <table border="1">
      <tr>
         <td>아이디</td>
         <td><input type="text" name="mid" placeholder="아이디를 입력하세요." required></td>
      </tr>
      <tr>
         <td>비밀번호</td>
         <td><input type="password" name="mpw" placeholder="비밀번호를 입력하세요." required></td>
      </tr>
      <tr>
         <td colspan="2"><input type="submit" value="로그인"></td>
      </tr>
   </table>
</form>
</body>
</html>

 

<form action="controller_login.jsp" method="POST">

<!-- action="controller_login.jsp"는 command == 번호 와 같다 -->

 

 

 

 

 


 

 

 

 

logic.jsp

<!-- Controller -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*" %>
<%
   request.setCharacterEncoding("UTF-8");

   String msg = request.getParameter("msg");
   String userInfo = (String)session.getAttribute("userInfo");
   msg = userInfo+"님 ▶ " + msg;

   ArrayList<String> msgs = (ArrayList<String>)application.getAttribute("msgs");
   if(msgs == null){
      msgs = new ArrayList<>();
      application.setAttribute("msgs", msgs);
   }
   msgs.add(0, msg);
%>
<script>
   alert('<%=userInfo%>님이 메세지 작성!');
   location.href = 'main.jsp';
</script>

 

컨트롤러의 자바 로직 부분이 들어있다

 

 

 

 


 

 

 

 

controller_login.jps 전체 코드

<!-- Controller -->
<%@page import="model.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="model.*"%>
<jsp:useBean id="memberDAO" class="model.MemberDAO" />
<jsp:useBean id="memberDTO" class="model.MemberDTO" />
<jsp:setProperty property ="*" name="memberDTO" />
<!-- setProperty : memberDTO객체의 멤버변수가 mid, mpw인데
파라미터에 mid, mpw가 있으면, 있는 애 끄집어 내서 해당 이름이 똑같으면 세팅까지 다 해줌 -->
<%
	// String mid = request.getParameter("mid");
	// String mpw = request.getParameter("mpw");
	
	// if(mid != null){ // 로그인 시도했니? <- 로그인한 사람만 올 수 있게 됐으므로 없어도 됨

	// MemberDAO memberDAO = new MemberDAO(); <- 대신 액션태그로 변경 useBean
	// MemberDTO memberDTO = new MemberDTO(); <- 대신 액션태그로 변경 useBean
	
	// memberDTO.setMid(mid); <- setProperty로 대체
	// memberDTO.setMpw(mpw); <- setProperty로 대체
	
	//MemberDTO data = memberDAO.selectOne(memberDTO); // 로그인한 사람
	memberDTO = memberDAO.selectOne(memberDTO); // 로그인한 사람
	
	
	if(memberDTO == null){ // selectOne의 결과가 null이면 실패
		out.println("<script>alert('로그인 실패!');history.go(-1);</script>");
		
	}
	else {
		session.setAttribute("userInfo", memberDTO.getMid()); // 로그인 성공환 사람의 아이디
		response.sendRedirect("main.jsp"); // = view.printInfo();
		// 메인으로 이동 방법
		// javascript : history, location, JSP : response 등등..
	}
%>

 

 

 

 

🌳 useBean으로 객체 생성 대체

MemberDAO memberDAO = new MemberDAO();
MemberDTO memberDTO = new MemberDTO();

<jsp:useBean id="memberDAO" class="model.MemberDAO" />
<jsp:useBean id="memberDTO" class="model.MemberDTO" />

 

JSP는 “HTML + Java 코드 최소화”가 목적 → 스크립틀릿 대신 액션태그 사용 권장
<jsp:useBean>은 JSP가 알아서 객체를 생성해 주기 때문에 코드가 깔끔해짐
유지보수성과 가독성 증가

 

 

 

 

🌳 setProperty 로 setter 호출 자동화

String mid = request.getParameter("mid");
String mpw = request.getParameter("mpw");
memberDTO.setMid(mid);
memberDTO.setMpw(mpw);

<jsp:setProperty property="*" name="memberDTO" />

 

property="*"는 request 파라미터 이름과 DTO 필드 이름이 같으면 자동으로 매칭해서 setter 호출해줌.
즉, mid → setMid(), mpw → setMpw() 가 자동 수행됨
코드를 줄이고, 실수도 줄고, 유지보수 쉬워짐

 

 

 

🌳 selectOne() 결과 받는 방법

MemberDTO data = memberDAO.selectOne(memberDTO);

memberDTO = memberDAO.selectOne(memberDTO);

 

useBean으로 만든 memberDTO를 그대로 재사용하는 방식으로 변경
data를 새로 만들 필요가 없음 → 변수 중복 제거

 

 

 

 

변경된 부분 기존 방식 JSP 방식 

객체 생성 new 사용 <jsp:useBean> JSP는 스크립틀릿 지양, 자동 관리
DTO에 값 설정 request.getParameter + setter <jsp:setProperty property="*"> 파라미터 자동 매핑, 코드 축소
변수 사용 data 변수 따로 기존 memberDTO 활용 중복 제거, 간결
흐름 Java 코드 중심 JSP 태그 중심 MVC와 JSP 스타일에 맞게 변경

 

 

 

 

 

 


 

 

 

 

 

 

 

 

Model에서 사용할 ojdbc6.jsp를 추가해준다

경로 ▶ E:\DATA_P\resource\apache-tomcat-9.0.112-windows-x64\apache-tomcat-9.0.112\lib

>> lib 폴더에 다른 xxx.jar 들 옆에 같이 놔주기! ^^&