Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

[JSP] 회원 관리 웹 애플리케이션 본문

인프런/[인프런] 스프링 MVC 1

[JSP] 회원 관리 웹 애플리케이션

Seung__ 2021. 9. 9. 21:49

1. JSP 라이브러리 추가


implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
implementation 'javax.servlet:jstl'

 

 

2. 회원등록 JSP 폼


  • JSP는 webapp 하위에 있어야 한다.
  • webapp하위는 기본적으로 접근이 가능하다.
  • JSP는 서버 내부에서 서블릿으로 변환됨 
  • MemberFormServlet과 거의 비슷한 모습으로 변환됨.

 

<%@ 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>
  • http://localhost:8080/jsp/members/new-form.jsp 접속해보자.

 

 

 

3. 회원 저장 로직.


  • <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    • 첫 줄은 JSP라는 뜻 ㅋㅋ
  • <% %>안에 자바 코드 넣을 수 있음.
  • JSP에서 HttpServletRequest, HttpServletReponse는 자동으로 사용 가능.

<%@ page import="hello.servlet.domain.member.Member" %>
<%@ page import="hello.servlet.domain.member.MemberRepository" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    //request, response는 그냥 사용 가능. jqp도 자동으로 servlet으로 변환됨.
    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>

 

 

4. 회원 목록 JSP


<%@ page import="hello.servlet.domain.member.MemberRepository" %>
<%@ page import="hello.servlet.domain.member.Member" %>
<%@ page import="java.util.List" %>
<%@ 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>

 

 

 

 

5. 문법 정리


  • JSP는 자바 코드를 그대로 다 사용할 수 있다.
  • <%@ page import="hello.servlet.domain.member.MemberRepository" %>
    • 자바의 import 문과 같음
  • <% ~~ %>
    • 자바 코드를 입력할 수 있다.
  • <%= ~~ %>
    • 자바 코드를 출력할 수 있다.
  • 회원 저장 JSP를 보면, 회원 저장 서블릿 코드와 같다. 다른 점이 있다면, HTML을 중심으로 하고, 자바
  • 코드를 부분부분 입력해주었다. <% ~ %> 를 사용해서 HTML 중간에 자바 코드를 출력하고 있다.

 

 

6. 서블릿, JSP의 한계


  • 서블릿으로 개발  :  자바 코드에 뷰(View)화면을 위한 HTML가 끼어들어감. 
  • JSP로 개발 :  HTML 작업을 깔끔하게  + 중간중간 동적으로 변경이 필요한 부분에만 자바 코드를 적용했다. 
  • 그런데 JSP를 사용하면 비즈니스 로직, VIEW가 섞여있다.
  • JAVA코드 REPOSITORY등 모두 JSP에 노출되어 있다.
  • JSP가 너무 많은 역할을 한다. 유지보수가 노답이다.

 

 

7. MVC 패턴


  • 비즈니스 로직과 VIEW를 분리하자.
  • 즉 JSP를 사용하는 경우, JSP는 HTML로 VIEW만 만드는 일에 집중.
  • 비즈니스는 따로 분리하자.
  • 그래서 MVC 패턴이 등장했다.

 

8. GitHub : 210909 WebApplication with JSP


 

GitHub - bsh6463/MVC1

Contribute to bsh6463/MVC1 development by creating an account on GitHub.

github.com

Comments