코딩항해기

[풀이/JSP] 간단한 쇼핑몰 프로그램 풀이코드 분석 본문

problem solving/과제&실습 코딩

[풀이/JSP] 간단한 쇼핑몰 프로그램 풀이코드 분석

miniBcake 2024. 8. 11. 16:25

 

 

 

[과제/JSP] 간단한 쇼핑몰 프로그램 구현하기 (Controller 분할버전)

apache tomcat 10.1oracle (ojdbc6.jar)240808 ~ 240811Git 주소 GitHub - miniBcake/0808-JSP-practiceContribute to miniBcake/0808-JSP-practice development by creating an account on GitHub.github.com 기능구현헤더푸터로그아웃로그인회원가입

minibcake.tistory.com

 

해당 과제 답안 코드를 보고 부족한 부분을 정리하고 공부할 예정이다.

풀이로 주신 코드는 Contoller 단일 버전이기 때문에 그 부분을 예습한다는 느낌으로 가볍게 보면 좋을 것 같다.

 

Controller 요청값 구분

String action=request.getParameter("action");
	System.out.println("action : "+action);
	
	if(action.equals("AA")){
		pageContext.forward("/day029/a.jsp");
	}

 

단일 Cotroller를 사용하면 어떻게 구분하는지 궁금했는데, action이라는 요청값을 받아와 if문 분기를 통해 다른 기능을 실행하는 것을 확인 할 수 있었다.

그럼 이 요청은 어떻게 넘어 오는 걸까...?

<form action="controller.jsp" method="POST">
		<input type="hidden" name="action" value="JOIN">
			아이디 <input type="text" name="mid" required> <br>
			비밀번호 <input type="password" name="password" required> <br>
			이름 <input type="text" name="name" required> <br>
			<input type="submit" value="회원가입"> <br>
</form>

 

답은 hidden 속성의 input 태그였다. Condition값을 set해주듯 input에 값을 담아 같이 넘겨 분기를 나누는 방식인 것 같다.

<form action="controller.jsp" method="GET">
		<input type="hidden" name="action" value="MAIN">
			카테고리 <select name="searchKeyword">
				<option value="NAME">상품명</option>
				<option value="SELLER">판매자 이름</option>
			</select>
			<input type="text" name="searchContent" placeholder="검색어를 입력하세요.">
			<input type="submit" value="검색하기">
		</form>

 

다른 페이지 코드를 확인해도 hidden 속성의 input 태그가 있는 것을 확인 할 수 있다.

그럼 단순 컨트롤러끼리의 전환의 경우에는 input태그를 사용할 수 없는데... 이 부분을 확인해보자.

 

확인할 코드가 있는 곳은 index.jsp인데 index에서는 컨트롤러를 통해 메인을 띄울 수 있게 하는 역할 밖에 하지 않는다.

따로 사용자가 요청을 보내지 않아도 서버에서 이동시켜야하는 부분이라 input 태그 사용이 불가하다.

궁금증을 해결하기 딱 좋은 jsp가 될 것 같아 확인해보면,

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	response.sendRedirect("controller.jsp?action=MAIN");
%>

 

url에 action 값을 담아 컨트롤러로 보내고 있다. 그럼 컨트롤러에서 받은 값으로 분기를 나누어 해당하는 페이지를 띄우는 방식이었다. a 태그의 href 속성도 같은 방식으로 이루어진다.

<a href='controller.jsp?action=MAIN'>메인으로 돌아가기</a>
<a href="controller.jsp?action=LOGOUT">로그아웃</a>
<a href="controller.jsp?action=MYPAGE">마이페이지</a>
<a href="controller.jsp?action=CART">장바구니</a>

 

모든 페이지 전환은 Controller로 action값을 가지고 이동하면 Controller가 if문에 따라 필요한 요청값과 함께 해당하는 페이지로 보내주는 방식이다.

 

Controller가 분리되어 있을 때보다 응집도가 훨씬 올라갔고 파일도 간결할 것을 확인할 수 있었다.

월요일에 풀이 수업 듣고, Controller를 취합하여 한 파일로 만드는 연습을 해야겠다.