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() %>
<%=bBean.getPostDate() %>
</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() %>]
<%=bBean.getTitle() %>
<%=bBean.getPostDate() %>
</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() %>]
<%=bBean.getTitle() %>
<%=bBean.getPostDate() %>
</li>
<%
}
%>
</ul>
</div>
</div>
</body>
</html>
저 코드 안에:
등등 너무 많은 책임을 하나의 JSP에서 지고 있다는 생각이 든다.
그리고 html 태그 중간중간에 Java 코드가 삽입되니 눈에 잘 안 들어오는 것 같다.
(비즈니스 처리와 뷰 렌더링이 어지럽게 뒤섞여있다는 게 이런거구나👀
저렇게 비교적 단순한 화면이 이 정도인데, 복잡한 웹페이지를 만드는 JSP 코드는 어쩔까 싶다. 내가 그 유지보수를 맡긴 싫다는 영한 님의 말씀이 와닿는 순간이였다.
- 이상 JSP의 한계점을 공부하며 갑자기 생각난 프로젝트 리뷰 -