JSP(Java Server Page)
기존에는 서블릿을 이용해서 화면에 보여주는 html도 만들고 안에서 로직도 처리했는데 코드가 많이 복잡해지니깐 뷰 템플릿을 사용하기 시작했다.(대표적인 템플릿이 JSP, Thymeleaf)
JSP는 HTML 코드 안에 자바 코드를 넣어서 동적 웹페이지를 생성하게 해주는 도구다.
JSP가 실행되면 자바 서블릿(Servlet)으로 변환되어 필요한 기능을 수행하고 response에 담아서 was에 넘기는 것이다.
이렇게 보면 JSP와 서블릿은 되게 유사하지만 큰 특징이 하나 있다.
- JSP - HTML 코드 내부에 자바 코드를 넣어 동적으로 웹페이지를 생성.
- 서블릿 - 자바 코드 내에서 HTML 생성.
간단하게 코드로 비교해보자.
서블릿 코드
@WebServlet(name="memberFormServlet", urlPatterns = "/servlet/members/new-form")
public class MemberFormServlet extends HttpServlet {
private MemberRepository memberRepository = MemberRepository.getInstance();
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter w = response.getWriter();
w.write("<!DOCTYPE html>\n" +
"<html>\n" +
"<head>\n" +
" <meta charset=\"UTF-8\">\n" +
" <title>Title</title>\n" +
"</head>\n" +
"<body>\n" +
"<form action=\"/servlet/members/save\" method=\"post\">\n" +
" username: <input type=\"text\" name=\"username\" />\n" +
" age: <input type=\"text\" name=\"age\" />\n" +
" <button type=\"submit\">전송</button>\n" +
"</form>\n" +
"</body>\n" +
"</html>\n");
}
}
멤버를 등록하기 위한 코드다.
자바 코드 내에서 HTML의 양식을 사용하고 있다. 이렇게 하면 오타도 많이 나고 굉장히 복잡해져서 나온 템플릿이
JSP다.
JSP
<%@ 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 내부에 자바로 로직을 넣은 것이다.
기존에 있던 코드를 비교했을 때 너무 보기 좋아지고 간단해졌다.
위에 있는 JSP를 읽어서 결국 서블릿으로 변환되어 처리가 된다.
반응형
'스프링 강의(인프런)' 카테고리의 다른 글
./gradlew clean build 에러 발생 (0) | 2023.07.06 |
---|---|
@Configuration 없이 @Bean을 등록하는 경우 (0) | 2023.06.19 |
서블릿(Servlet)의 개념과 흐름 (0) | 2023.06.17 |
스프링 Bean이 중복됐을 경우 해결 방법 (0) | 2023.06.14 |