갑자기 JSP 프로젝트를 돌아보니

개발새발log·2022년 5월 9일
0

4학년 2학기에 들은 웹정보프로젝트 과목에서 JSP와 서블릿을 활용하여 간단한 학교 커뮤니티 홈페이지를 만든 경험이 있다. 문득 김영한 님 Spring MVC 강의 중 서블릿과 JSP 파트를 듣다가 돌아보니 만들 당시에 불편한 점이 한두가지가 아니였군 싶다🤔

우선 강의에서 언급하신 유지보수 HELL 파티가 너무 공감된다. 한번에 와닿을 단적인 예시를 들어보겠다.

⬇️ 아래와 같은 페이지를 표출하기 위한

메인 페이지 코드를 가져오면,

<%@ page contentType="text/html; charset=EUC-KR" import="java.util.*,board.*"%>
<jsp:useBean id="mMgr" class="member.MemberMgr"/>
<jsp:useBean id="bMgr" class="board.BoardMgr" />
<%
	request.setCharacterEncoding("EUC-KR");

	String id = (String)session.getAttribute("idKey");
	String name = mMgr.getName(id);
%>
<html>
<head>
    <link type="text/css" rel="stylesheet" href="../css/main.css?ver=1">
    <title>메인 페이지</title>
</head>
<body>
    <a href="mainpage.jsp"><h1 style="color:black">Sungshin Community</h1><img src="../images/crystals.png" width="100px" height="100px"></a></p>
    <div id="header">
        <div id="boxcat"><a id="back" href="../major/major_category.jsp">전공별</a></div>
        <div id="boxcat"><a id="back" href="../review/review_category.jsp">후기</a></div>
        <div id="boxcat"><a id="back" href="../free/freepage.jsp">자유</a></div>
        <div id="boxcat"><a id="back" href="../member/mypage.jsp">마이페이지</a></div>
    </div><br>
        <div id="nav">
        <p><b><%=name %></b><br> 안녕하세요!</p><br>
        <p><a href="../member/mypage.jsp">프로필 조회하기</a></p><br>
        <p><input type="button" value="로그아웃하기" onclick="location.href='../member/logout.jsp'"></p>
    </div>
    <div id="content1">
        <h5>자유게시판</h5>
        <hr>
        <ul>
<%
	Vector<MainBoardListBean> flist = bMgr.getMainBoardList("free");
	int fsize = (flist.size()>4) ? 4 : flist.size();
	for(int i=0; i < fsize; i++){
   		MainBoardListBean bBean = flist.get(i); //MainBoardListBean의 pcode 꺼내쓰면 됩니다!!
%>
<!-- 리스트 표출부 -->
            	<li onClick="location.href='../post/postDetail.jsp?pcode=<%=bBean.getPcode()%>'">
            	<%=bBean.getTitle() %>&nbsp;
            	<%=bBean.getPostDate() %>&nbsp;
            	</li>
<%
   }
%>
		</ul>
    </div>
    <div>
        <div id="content2">
            <h5>후기 게시판</h5>
            <hr>
           <ul>
<%
	Vector<MainBoardListBean> rlist = bMgr.getMainBoardList("review");
	int rsize = (rlist.size()>4) ? 4 : rlist.size();
	for(int i=0; i < rsize; i++){
   		MainBoardListBean bBean = rlist.get(i);
%>
            	<li onClick="location.href='../post/postDetail.jsp?pcode=<%=bBean.getPcode()%>'">
            	[<%=bBean.getSubCategory() %>]&nbsp;
            	<%=bBean.getTitle() %>&nbsp;
            	<%=bBean.getPostDate() %>&nbsp;
            	</li>
<%
   }
%>
		</ul>
        </div>
        <div id="content2">
            <h5>전공별 게시판</h5>
            <hr>

            <ul>
<%
	Vector<MainBoardListBean> mlist = bMgr.getMainBoardList("major");
	int msize = (mlist.size()>4) ? 4 : mlist.size();
	for(int i=0; i < msize; i++){
   		MainBoardListBean bBean = mlist.get(i);
%>
            	<li onClick="location.href='../post/postDetail.jsp?pcode=<%=bBean.getPcode()%>'">
            	[<%=bBean.getSubCategory() %>]&nbsp;
            	<%=bBean.getTitle() %>&nbsp;
            	<%=bBean.getPostDate() %>&nbsp;
            	</li>
<%
   }
%>
		</ul>
        </div>
    </div>
</body>
</html>

저 코드 안에:

  • 데이터 접근
  • 요청 받는 자바 코드
  • 화면 표출

등등 너무 많은 책임을 하나의 JSP에서 지고 있다는 생각이 든다.
그리고 html 태그 중간중간에 Java 코드가 삽입되니 눈에 잘 안 들어오는 것 같다.
(비즈니스 처리와 뷰 렌더링이 어지럽게 뒤섞여있다는 게 이런거구나👀

저렇게 비교적 단순한 화면이 이 정도인데, 복잡한 웹페이지를 만드는 JSP 코드는 어쩔까 싶다. 내가 그 유지보수를 맡긴 싫다는 영한 님의 말씀이 와닿는 순간이였다.

- 이상 JSP의 한계점을 공부하며 갑자기 생각난 프로젝트 리뷰 -

profile
⚠️ 주인장의 머릿속을 닮아 두서 없음 주의 ⚠️

0개의 댓글