-
[스프링MVC - 1편] JSP 회원관리 웹 애플리케이션 만들기스프링&스프링부트 2025. 1. 11. 15:12
1. JSP 라이브러리 추가
dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' // JSP 추가 시작 implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'jakarta.servlet:jakarta.servlet-api' //스프링부트 3.0 이상 implementation 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api' //스프링부트 implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl' //스프링부트 3.0 이상 // JSP 추가 끝 }
2. 회원 등록 폼 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>
- %@ page contentType="text/html;charset=UTF-8" language="java" %>
- 첫 줄은 JSP문서라는 뜻이다
- JSP 문서는 이렇게 시작해야 한다
3. 회원 저장 JSP
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page import="hello.servlet.domain.member.Member" %> <%@ page import="hello.servlet.domain.member.MemberRepository" %> <% // request, response 자동으로 사용 가능 MemberRepository memberRepository = MemberRepository.getInstance(); System.out.println("MemberSaveServlet.service"); 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는 자바 코드를 그대로 다 사용할 수 있다
- <% ~~ %> : 이 부분에는 자바 코드를 입력할 수 있다
- <%= ~~ %> :이 부분에는 자바 코드를 출력할 수 있다.
4. 회원 목록 JSP
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page import="java.util.List" %> <%@ page import="hello.servlet.domain.member.MemberRepository" %> <%@ page import="hello.servlet.domain.member.Member" %> <% MemberRepository memberRepository = MemberRepository.getInstance(); List<Member> members = memberRepository.findAll(); %> <html> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <a href="/index.html">메인</a> <table> <thead> <th>id</th> <th>username</th> <th>age</th> </thead> <tbody> <% for (Member member : members) { out.write(" <tr>"); out.write(" <td>" + member.getId() + "</td>"); out.write(" <td>" + member.getUsername() + "</td>"); out.write(" <td>" + member.getAge() + "</td>"); } %> </tbody> </table> </body> </html>
5. 서블릿과 JSP의 한계
JSP를 사용한 덕분에 뷰를 생성하는 HTML 작업을 깔끔하게 가져가고,
중간중간 동적으로 변경이 필요한 부분에만 자바 코드를 적용했다
회원 저장 JSP를 보면 코드의 상위 절반은 회원을 저장하기 위한 비즈니스 로직이고,
나머지 하위 절반만 결과를 HTML로 보여주기 위한 뷰 영역이다
코드를 잘 보면, JAVA 코드, 데이터를 조회하는 리포지토리 등등 다양한 코드가 모두 JSP에 노출되어 있어
JSP가 너무 많은 역할을 한다
>> MVC 패턴의 등장
728x90'스프링&스프링부트' 카테고리의 다른 글
[스프링MVC - 1편] MVC 패턴 적용, 한계 (0) 2025.01.12 [스프링MVC - 1편] MVC 패턴 개요 (0) 2025.01.11 [스프링MVC - 1편] 회원관리 웹 애플리케이션 구현 (0) 2025.01.05 [스프링MVC - 1편] HTTPServletResponse (1) 2025.01.05 [스프링MVC - 1편] HTTP 요청 데이터 (2) 2025.01.02 - %@ page contentType="text/html;charset=UTF-8" language="java" %>