🌱 Spring/MVC ①

[Spring] 회원 관리 웹 어플리케이션 3 _ JSP

Younngjun 2023. 7. 14. 19:34

GetWriter로 Text를 전달하면서 무수히 많은 HTML을 일일이 쳤다. JSP를 사용하면 선택적으로 Java 코드를 사용할 수 있다.

 

# 회원 추가 JSP

먼저 회원을 추가하는 페이지를 jsp로 작성한 것이다. 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <meta charset="UTF-8">
    <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

new-form.jsp로부터 전달된 username과 age를 저장한다. 서블릿 코드와 동일한 로직을 삽입한다. 

<%@ page import="hello.servlet.domain.member.Member" %>
<%@ page import="hello.servlet.domain.member.MemberRepository" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    // java code를 넣을 수 있는 곳
    // request, reponse 그냥 사용 가능하다
    // 우리 눈에 보이지 않을 뿐 서비스 로직이 그대로 호출된다
    MemberRepository memberRepository = MemberRepository.getInstance();

    String username = request.getParameter("username");
    int age = Integer.parseInt(request.getParameter("age"));


    Member member = new Member(username, age);
    memberRepository.save(member);

%>
<html>
<head>
    <title>Title</title>
</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의 한계

 

JSP 덕분에 뷰를 생성하는 HTML 작업이 매우 깔끔해졌다. 코드의 상위 절반은 비즈니스 로직, 나머지 하위 절반은 HTML로 유저에게 보여주기 위한 뷰 영역이다. 하지만 조금 더 큰 프로젝트라면 JSP 코드가 훨씬 복잡해지고, 머지 시 컨플릭 관리도 어려울 것이다.