티스토리 뷰

JSP - Java Server Page

  • Servlet 만을 가지고 HTML 화면을 만들어내는 것이 매우 힘든 작업이므로 (문자열로 타이핑해서 만들어야 한다) HTML 코드에 자바 코드를 넣을 수 있는 방식을 개발한 것이다.
  • HTML 코드의 자동완성 및 디버깅을 용이하게 할 수 있으며 서블릿의 response, request 인자를 그대로 사용할 수 있다. 또한 자바 객체를 import 해서 사용할 수 있으며, 자바 코드를 넣을 수 있다.
  • JSP 확장자 HTML은 맨위에 language="java"를 꼭 넣어줘야 한다.
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    ​

회원가입

  • JSP를 이용해서 HTTP Form을 생성한다.
  • Servlet 에서 만들지 않고 HTML 파일 자체로 만들 수 있다.
<%@ 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>

회원저장

  • 자바 구현 코드는 HTML 코드 위에 작성한다. <% ~내용~ %>
  • 서블릿의 response, request는 바로 사용이 가능하며 클래스 객체는 import하여 사용할 수 있다.
  • 변수의 값을 바로 출력하고자 할 때에는 <%=val.xxx%> 로 사용한다.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    // request, response
    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>
SUCCESS
<ul>
    <li>id=<%=member.getId()%></li>
    <li>username=<%=member.getUsername()%></li>
    <li>age=<%=member.getAge()%></li>
</ul>
<a href="/index.html">Main</a>
</body>
</html>

회원목록

  • HTML 코드안에 Java 코드를 넣고자할 때에는 <% ~Java Code~ %> 형식으로 넣으면 된다.
<%@ page import="hello.servlet.domain.member.MemberRepository" %>
<%@ page import="hello.servlet.domain.member.Member" %>
<%@ page import="java.util.List" %>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    MemberRepository memberRepository = MemberRepository.getInstance();
    List<Member> all = memberRepository.findAll();

    response.setContentType("text/html");
    response.setCharacterEncoding("utf-8");
%>
<html>
<head>
    <title>Title</title>
</head>
<body>
SUCCESS
<table>
    <thead>
    <th>ID</th>
    <th>USER_NAME</th>
    <th>AGE</th>
    </thead>
    <tbody>
        <%
            for (Member member : all) {
                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>
<a href="/index.html">메인</a>
</body>
</html>

정리

JSP를 사용함으로서 뷰를 담당하는 파일은 JSP를 이용해 구현하고 동적으로 처리되는 부분은 Java 코드를 추가함으로서 구현할 수 있게 되었다. 이전에 서블릿 클래스에서 모든것을 구현하고 HTML 코드도 문자열로 입력하였던 것보다는 훨씬 나아졌다.

 

하지만, 자바 구현코드와 HTML 코드가 여전히 하나의 View 전용 파일에 함께 있고 JSP에 의존관계가 필요한 모든 객체는 다 선언하고 Import 해야하는 불편함이 존재한다.

만약 복잡한 서비스 화면이라면 여러 객체가 필요할 수 있는데 전부 불러와서 사용해야 한다. 이렇게 되면 JSP 파일에 너무 많은 의존도가 생기고 코드의 길이도 너무 길어지게 되어 유지보수에 어려움이 생기게 된다.

 

비지니스 로직은 서블릿을 뺀거 처럼 다른 곳에서 처리하게 하고 View를 담당하는 JSP는 온전히 View만 담당할 수 있게 분리해보자. 이것이 Model, View, Controller로 역할을 구분한 MVC 패턴 방식이다.

반응형
Comments
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday