Servlet + JSP를 이용한 간단한 회원 저장/조회 구현

2021. 12. 27. 20:12·스프링/스프링 MVC

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 패턴 방식이다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'스프링 > 스프링 MVC' 카테고리의 다른 글

MVC 패턴을 적용하여 간단한 회원 저장/조회 구현  (0) 2021.12.29
Servlet을 이용한 간단한 회원 저장/조회 구현  (1) 2021.12.27
Java Servlet 정리본 _ HttpServletResponse  (0) 2021.12.24
Java Servlet 정리본 _ HttpServletRequest  (0) 2021.12.24
'스프링/스프링 MVC' 카테고리의 다른 글
  • MVC 패턴을 적용하여 간단한 회원 저장/조회 구현
  • Servlet을 이용한 간단한 회원 저장/조회 구현
  • Java Servlet 정리본 _ HttpServletResponse
  • Java Servlet 정리본 _ HttpServletRequest
구름뭉치
구름뭉치
구름의 개발일기장
  • 구름뭉치
    구름 개발일기장
    구름뭉치
  • 전체
    오늘
    어제
    • ALL (283)
      • 프로젝트 (23)
        • 토스페이먼츠 PG 연동 시리즈 (12)
        • JWT 방식 인증&인가 시리즈 (6)
        • 스우미 웹 애플리케이션 프로젝트 (1)
        • 스프링부트 기본 보일러 플레이트 구축 시리즈 (2)
        • 마이크로서비스 아키텍쳐 시리즈 (1)
      • 스프링 (43)
        • 스프링부트 API 설계 정리 (8)
        • 스프링부트 RestAPI 프로젝트 (18)
        • 스프링부트 WebSocket 적용기 (3)
        • 스프링 JPA 정리 시리즈 (5)
        • 스프링 MVC (5)
        • 스프링 배치 (2)
        • 토비의 스프링 정리 (2)
      • 기술 학습 (28)
        • 아파치 카프카 (9)
        • 클린 코드 (4)
        • 디자인 패턴의 아름다움 (2)
        • 모던 자바 인 액션 (7)
        • JVM 스레드 딥다이브 (6)
      • Web (25)
        • 정리글 (20)
        • GraphQL 정리글 (2)
        • Jenkins 정리글 (3)
      • 취업 (6)
      • CS (77)
        • 네트워크 전공 수업 정리 (11)
        • OSI 7계층 정리 (12)
        • 운영체제 정리 (19)
        • 데이터베이스 정리 (5)
        • MySql 정리 (17)
        • GoF의 Design Pattern 정리 (12)
      • 알고리즘 (70)
        • 백준 (56)
        • 프로그래머스 (12)
        • 알고리즘 정리본 (1)
      • 기초 지식 정리 (2)
      • 일상 (8)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    크로아티아
    류블라냐
    mx master s3 for mac
    마우스
    부다페스트
    마우스 패드
    키보드 손목 받침대
    레이저
    동유럽
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
구름뭉치
Servlet + JSP를 이용한 간단한 회원 저장/조회 구현
상단으로

티스토리툴바