Spring/SpringMVC

JSP로 회원 관리 웹 애플리케이션 만들기 - error

느리지만 꾸준하게 2022. 4. 23. 14:09
  • JSP를 사용하려면 build.gralde에  라이브러리를 추가해주자.
//JSP 추가 시작
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
implementation 'javax.servlet:jstl'
//JSP 추가 끝

 

 

new-form.jsp를 만들고 <%@~>를 넣어서 JSP 파일인거를 명시해주자. 

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

 

 

 

 

new-form.jsp에서 form경로로 들어가서 확인해준다. 

<%@ 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>

 

 

같은 패키지 경로에 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" %>
<%
    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>

</body>
</html>

 

 

save.jsp의 코드는 아래와 같은데

<%@ page import="hello.servlet.domain.member.MemberRepository" %>
<%@ page import="hello.servlet.domain.member.Member" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%

    // requset, 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);
    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>

 

 

save.jsp로 넘어갈 시 에러가 난다.

 

 

일단 members.jsp도 만들자.

// members.jsp

<%@ 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>

 

에러를 일단 해결해보도록 하자.

 

정리를 해보면 JSP는 자바 코드를 그대로 사용할 수 있고

  • <%@ page import="hello.servlet.domain.member.MemberRepository" %>
  • <% ~~ %>  이부분에는 자바 코드를 넣을 수 있고
  • <%= ~~ %> 이 부분은 자바 코드를 출력할 수 있다  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<출처 김영한: 스프링 MVC 1편 - 벡앤드 웹 개발 핵심 기술>

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard

 

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -

www.inflearn.com