90년대 말부터 2000년대 초반까지 자바 기반 웹 애플리케이션 개발에 널리 사용되던 구조이다.
JSP 파일이 사용자 요청 처리와 화면 출력을 동시에 담당하는 것이 특징으로,
구조가 단순하고 빠르게 구현할 수 있다는 장점으로 초기 자바 웹 환경에 많이 사용되었다.
데이터베이스 연동과 비즈니스 로직을 담당하는 영역이다.
DB 접근 로직을 담당하는DAO 객체와
DB에서 검색한 데이터가 저장되는 자바 객체VO 가객체가 이에 해당된다.
Model을 사용하여 DB에서 검색한 데이터를 사용자에게 보여주기 위한 화면을 담당한다.
화면 구성을 위해 대표적으로HTML과 CSS 등의 마크업이 사용된다.
사용자 요청 처리와 관련된 자바 코드를 말한다.
String id = request.getParameter("userId")
UserVO = vo = new UserVO();
vo.setId(id);
UserDAO userDAO = new UserDAO();
UserVO user = new UserDAO.getUser(vo);
if(user != null) { // 로그인 성공
response.sendRedirect("getBoardList.jsp");
}else {
response.sendRedirect("login.jsp");
}
Model1 구조에서는 Controller 계층이 별도로 존재하지 않고
JSP 파일에 포함되어 Contoller 역할을 직접 수행한다.
Model 1 아키텍처에서 JSP는 단순한 View 템플릿이 아니라,
요청 처리와 화면 출력을 동시에 담당하는 핵심 구성 요소이다.
사용자 요청 처리와 관련된 자바 코드(Controller)와
사용자에게 보여줄 화면을 담당하는 마크업 코드(View)를 합쳐서 작성한다.
요청 → 처리 → 화면 이동의 전체 흐름이 JSP 파일에서 처리된다.
사용자가 로그인 정보를 입력하여 JSP 요청
JSP에서 request 객체를 통해 입력값 추출
DAO를 이용해 DB 조회
결과에 따라 다른 JSP로 이동
login.jsp
...
<form action="login_proc.jsp" method="post">
...
<input type="text" name="id"/>
<input type="password" name="password"/>
<input type="submit" value="로그인하기"/>
사용자가 아이디와 패스워드를 입력하고 로그인 버튼을 클릭하면
id와 password name 속성을 가진 input의 값을 가지고 login_proc.jsp 파일을 호출한다.
login_proc.jsp
<%
String id = request.getParameter("id");
String password = request getParameter("password");
UserVO vo = new UserVO();
vo.setId(id);
vo.setPassword(password);
UserDAO userDAO = new UserDAO();
User user = userDAO.getUser(vo);
if(user != null) {
response.sendRedirect("getBoardList.jsp");
} else {
response.sendRedirect("login.jsp");
}
%>
사용자 입력 정보를 request 객체로부터 추출한다.
Model- UserVO와 UserDAO객체를 이용해 DB에서 사용자 정보를 검색한다.
검색 결과가 UserVO객체면 로그인 성공, null이면 로그인 실패로 처리한다.
게시글 수정 및 삭제 기능 역시 Model 1 아키텍처에서는 JSP가 전 과정을 담당한다.
<form action="updateORdeleteBoard_proc.jsp" method="post">
<input type="hidden" name="seq" value="<%= board.getSeq() %>"/>
</form>
<%
String seq = request.getParameter("seq");
// 입력값 검증, 권한 검증 및 예외처리 필요
boardDAO.updateBoard(vo);
boardDAO.deleteBoard(vo);
%>
이 코드로 요청 파라미터 처리, 비즈니스 로직, 권한 판단까지 JSP에 집중되기 쉽다는 구조적 특징을 보여준다.
Model 1 아키텍처는 JSP 파일에서 Controller 기능과 View 기능을 함께 처리하는 구조로,
구성이 단순하고 초기 개발이 빠르다는 장점을 가진다.
하지만 JSP 파일 내에
이 모두가 뒤섞여 분산되기 때문에 역할 분리가 명확하지 않고, JSP에 과도한 책임이 집중된다.
그 결과 애플리케이션 규모가 커질수록 보안, 유지보수, 확장성 측면에서 관리가 어려워지는 문제가 발생한다.
이러한 한계를 해결하기 위해 이후에는
Controller 역할을 분리한 Model 2(MVC) 아키텍처가 등장하게 되었다.