전체적으로 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 들 옆에 같이 놔주기! ^^&
'JSP' 카테고리의 다른 글
| 🍍 JSTL | 리스너 | 에러페이지 설정 | 필터 Filter (0) | 2025.11.21 |
|---|---|
| requset | session | application | response (0) | 2025.11.20 |
| setAttribute( )!! request와 같이 사용하기 (0) | 2025.11.20 |
| Controller의 useBean과 setProperty 그리고 request (0) | 2025.11.19 |
| 페이지 이동 방식 | 리다이렉트 (redirect) 포워드 (forward) (0) | 2025.11.18 |