스프링MVC

JSP 사용하기

salmon16 2023. 8. 2. 22:29

서블릿을 이용하는 방식과 JSP를 이용하는 방식을 비교해 보자

 

두 방식을 비교하기 위해 간단한 회원가입 save 기능을 구현한다.

클라이언트에서 유저의 이름과 나이를 전송한다.

 

서블릿이용

@WebServlet(name = "memberSaveServlet", urlPatterns = "/servlet/members/save")
public class MemberSaveServlet extends HttpServlet {
    private MemberRepository memberRepository = MemberRepository.getInstance();
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        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);
        response.setContentType("text/html");
        response.setCharacterEncoding("utf-8");
        PrintWriter w = response.getWriter();
        w.write("<html>\n" +
                "<head>\n" +
                " <meta charset=\"UTF-8\">\n" +
                "</head>\n" +
                "<body>\n" +
                "성공\n" +
                "<ul>\n" +
                " <li>id="+member.getId()+"</li>\n" +
                " <li>username="+member.getUsername()+"</li>\n" +
                " <li>age="+member.getAge()+"</li>\n" +
                "</ul>\n" +
                "<a href=\"/index.html\">메인</a>\n" +
                "</body>\n" +
                "</html>");
    }
}

 

서블릿에서 html을 사용하기 위해 response.getWriter().write()메서드를 통해 위와 같이 html을 작성해 주어야 해서 불편하다 

JSP이용

서블릿은 자바 코드로 HTML을 만들어 내는데 이것보다 HTML문서에 동적으로 변경해야 한느 부분만 자바 코드를 넣을 수 있는 게 더 편한다 그래서 템플릿 엔진이라는 것이 나온 것이다. 그중 JSP에 대해 알아보자.

먼저 JSP를 사용하려면 build.gradle에 추가해 주어야 한다.

스프링 3.0미만

//JSP 추가 시작
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
implementation 'javax.servlet:jstl'
//JSP 추가 끝

코드를 작성해 보자.

<%@ 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("save.jsp");
    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는 서버 내부에서 서블릿으로 변환한다.

JSP문서라는 뜻이라는 코드를 아래와 같이 추가해 주어야 한다. 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

 

JSP에서 자바 코드를 그대로 사용할 수 있다

<% ~~~ %> 이 ~~ 부분에 자바 코드를 입력하면 된다.

<%= ~~ %> 이 ~~ 분은 자바 코드를 출력할 수 있다.

HTML은 그냥 사용하면 된다.

JSP에서 request와 response는 바로 사용할 수 있다.

 

출처 : 스프링MVC 1편 - 백엔드 웹 개발 핵심 기술 김영한

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

MVC 프레임워크 구현해 보기  (0) 2023.08.07
MVC패턴  (0) 2023.08.04
HttpServletResponse 사용  (0) 2023.08.02
HTTP 요청 데이터  (0) 2023.08.02
서블릿 사용해 보기  (0) 2023.08.01