■ 회원 등록 Form JSP
- JSP는 서버 내부에서 서블릿으로 변환되는데, 앞 전에 생성했던 MemberFormServlet 클래스와 거의 비슷한 모습으로 변환
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="/jsp/members/save.jsp" method="post">
username: <input type="text" name="username" />
age: <input type="text" name="age" />
<button type="submit">전송</button>
</form>
</body>
</html>
■ 회원 저장 JSP
- JSP는 자바 코드를 그대로 다 사용 할 수 있다.
- <% ~ %> : 이 부분에 자바 코드를 입력
- <%= ~ %> : 이 부분에 자바 코드를 출력
- HTML을 중심으로 하고, 자바 코드를 <% ~ %>를 사용해서 부분부분 입력해주었다.
<%@ page import="hello.servlet.domain.member.MemberRepository" %>
<%@ page import="hello.servlet.domain.member.Member" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
//request, response 객체 사용 가능
MemberRepository memberRepository = MemberRepository.getInstance();
System.out.println("MemberSaveServlet.service");
String username = request.getParameter("username");
int age = Integer.parseInt(request.getParameter("age"));
Member member = new Member(username, age);
System.out.println("member = " + member);
memberRepository.save(member);
%>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
성공
<ul>
<li>id=<%=member.getId()%></li>
<li>username=<%=member.getUsername()%></li>
<li>age=<%=member.getAge()%></li>
</ul>
<a href="/index.html">메인</a>
</body>
</html>
■ 회원 목록 조회 JSP
<%@ page import="java.util.List" %>
<%@ page import="hello.servlet.domain.member.MemberRepository" %>
<%@ page import="hello.servlet.domain.member.Member" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
MemberRepository memberRepository = MemberRepository.getInstance();
List<Member> members = memberRepository.findAll();
%>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="/index.html">메인</a>
<table>
<thead>
<th>id</th>
<th>username</th>
<th>age</th>
</thead>
<tbody>
<%
for (Member member : members) {
out.write(" <tr>");
out.write(" <td>" + member.getId() + "</td>");
out.write(" <td>" + member.getUsername() + "</td>");
out.write(" <td>" + member.getAge() + "</td>");
out.write(" </tr>");
}
%>
</tbody>
</table>
</body>
</html>
■ 서블릿과 JSP의 한계
- 서블릿으로 개발을 할때는 뷰(View)화면을 위한 HTML을 만드는 작업이 자바 코드에 섞여서 지저분하고 복잡
- JSP를 사용한 덕분에 뷰를 생서하는 HTML 작업을 깔끔하게 가져가고, 중간중간 동적으로 변경이 필요한 부분에만 자바 코드를 적용
- 예를 들어 회원 저장 JSP를 살펴보면, 코드의 상위 절반은 회원을 저장하기 위한 비즈니스 로직이고, 나머지 하위 절반은 결과를 보여주기 위한 HTML 뷰 영역이다.
- JSP가 너무 많은 역할을 담당하고 있다. 이럴 경후 추후의 유지보수가 어려워진다.
[MVC 패턴의 등장]
- 하나의 서블릿이나 JSP만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리하게 되면 너무 많은 역할을 하게 되고 결과적으로 유지보수가 어려워진다.
- 비즈니스 로직은 서블릿처럼 다른 곳에서 처리하고, JSP는 목적에 맞게 HTML로 화면(View)을 그리는 일에 집중할 수 있도록 하기 위해 MVC 패턴이 등장
[출처 : 인프런 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술]
'SpringMVC' 카테고리의 다른 글
[인프런 강의 복습]스프링 MVC 1편 - model 추가 (0) | 2022.02.17 |
---|---|
[인프런 강의 복습]스프링 MVC 1편 - View 분리 (0) | 2022.02.17 |
[인프런 강의 복습]스프링 MVC 1편 - 프론트 컨트롤러 패턴 (0) | 2022.02.17 |
[인프런 강의 복습]스프링 MVC 1편 - [회원 관리 APP] MVC 이용 (0) | 2022.02.16 |
[인프런 강의 복습]스프링 MVC 1편 - 서블릿 (0) | 2022.02.14 |