Servlet 6 - JSP로 회원관리 만들어보기

Jan 10, 2023

5 mins read

서블릿을 사용해 만든 회원관리 로직을 JSP로 다시 만들어보고 서블릿과의 차이점을 확인한다. (인프런 강의 듣는 중)

1. 스프링부트 프로젝트에 JSP라이브러리 추가

  • 스프링 3.0.1 버전에 맞게 duild.gradle.kts 파일에 JSP용 라이브러리를 추가해준다.
  • 추가한 후에는 프로젝트명 우클릭 > Gradle > Refresh Gradle Project 해주면 라이브러리가 추가되고 JSP를 쓸 수 있다.
implementation("org.apache.tomcat.embed:tomcat-embed-jasper")
implementation("jakarta.servlet:jakarta.servlet-api")
implementation("jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api")
implementation("org.glassfish.web:jakarta.servlet.jsp.jstl")

2. JSP로 회원관리 만들어보기

  • weapp 폴더 아래 jsp>members 폴더를 만들어주고 new-form.jsp 생성한다. 서블릿의 MemberFormServlet 기능과 같다.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<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>
  • 회원 저장을 위해 jsp>members 폴더에 save.jsp 생성한다. 서블릿의 MemberSaveServlet 기능과 같다.
<%@ 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 JSP에서는 선언없이 사용 가능
	 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폴더에 members.jsp를 만든다. 서블릿의 MemerListServlet 기능과 같다.
<%@ page import="java.util.List" %>
<%@ page import="hello.servlet.domain.member.MemberRepository" %>
<%@ page import="hello.servlet.domain.member.Member" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
 	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>");
		 out.write(" </tr>");
	 }
	%>
 </tbody>
</table>
</body>
</html>
  • http://localhost:8080/jsp/members/new-form.jsp 접속해보면 전에 서블릿으로 만든것과 같은 동작을 하는걸 확인할 수 있다.

3. 서블릿과 JSP를 해보며

  • 옛날옛적 업무할 때 꽤 오랜기간 JSP로 개발했었는데 유지보수가 정말 힘들었었다. 소스가 길어질 수록 JSP위쪽에 비지니스 로직 고치랴 아래쪽으로 가서 화면단 수정하랴… 정말 눈알 빠질 뻔 한적이 많았는데…😂
    이제는 이 JSP기술도 다 사장됬다고 하니 뭔가 내가 이렇게 옛날 사람이구나 싶으면서도 바뀌는게 당연하다고 생각 되고 그렇다.
    오랫동안 같은 직장 같은 업무만 하다보니 내 기술은 거기서 멈춰있는데…(무려 jdk1.5 시절ㅋㅋㅋ)
    공부 열심히 해서 요즘 기술 좀 익혀보자.🤯