Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- java
- spring
- JDBC
- JPQL
- 스프링
- QueryDSL
- 그리디
- 김영한
- springdatajpa
- Exception
- Thymeleaf
- Greedy
- pointcut
- jpa
- SpringBoot
- db
- 알고리즘
- Spring Boot
- Android
- 자바
- Proxy
- AOP
- transaction
- 스프링 핵심 원리
- 인프런
- Servlet
- 스프링 핵심 기능
- http
- 백준
- kotlin
Archives
- Today
- Total
개발자되기 프로젝트
[JSP] 회원 관리 웹 애플리케이션 본문
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
'인프런 > [인프런] 스프링 MVC 1' 카테고리의 다른 글
[Servlet, JSP] MVC 적용 (0) | 2021.09.09 |
---|---|
[Servlet, JSP] MVC 패턴 (0) | 2021.09.09 |
[Servlet] 회원 관리 웹 애플리케이션 (0) | 2021.09.09 |
[Servlet] 회원 관리 웹 애플리케이션 요구사항 (0) | 2021.09.09 |
HTTP 응답 데이터 - API JSON (0) | 2021.09.08 |
Comments