๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT/Spring

[์ธํ”„๋Ÿฐ - ์Šคํ”„๋ง MVC 1ํŽธ] JSP๋กœ ํšŒ์› ๊ด€๋ฆฌ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งŒ๋“ค๊ธฐ

by YeonBu 2024. 5. 20.
728x90

 

 

/* ์ด ๊ธ€์€ ๊น€์˜ํ•œ๋‹˜์˜ ๊ฐ•์˜๋ฅผ ๋ณด๊ณ  ์ •๋ฆฌํ•˜๋ ค๊ณ  ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

   ๊ฐœ์ธ์ ์ธ ๊ณต๋ถ€๋ฅผ ์œ„ํ•ด ์˜ฌ๋ฆฌ๋Š” ๊ธ€์ด๋ฏ€๋กœ ์ค‘๊ฐ„ ์ค‘๊ฐ„ ์ฝ”๋“œ๋Š” ์ƒ๋žต๋˜์—ˆ์Šต๋‹ˆ๋‹ค. */



 

์Šคํ”„๋ง MVC 1ํŽธ - ๋ฐฑ์—”๋“œ ์›น ๊ฐœ๋ฐœ ํ•ต์‹ฌ ๊ธฐ์ˆ  | ๊น€์˜ํ•œ - ์ธํ”„๋Ÿฐ

๊น€์˜ํ•œ | ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ํ•„์š”ํ•œ ๋ชจ๋“  ์›น ๊ธฐ์ˆ ์„ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์ดํ•ดํ•˜๊ณ , ์™„์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง MVC์˜ ํ•ต์‹ฌ ์›๋ฆฌ์™€ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ณ , ๋” ๊นŠ์ด์žˆ๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์Šต

www.inflearn.com

 

 

 

1. JSP ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€

 

JSP๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋จผ์ € ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค.

 

*build.gradle์— ์ถ”๊ฐ€*

 

 

์Šคํ”„๋ง๋ถ€ํŠธ 3.0 ๋ฏธ๋งŒ

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

 

์Šคํ”„๋ง๋ถ€ํŠธ 3.0 ์ด์ƒ

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' //์Šคํ”„๋ง๋ถ€ํŠธ 3.0 ์ด์ƒ
implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl' //์Šคํ”„๋ง๋ถ€ํŠธ 3.0 ์ด์ƒ

 

 

 

 

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>

 

 - ์ฒซ ์ค„์€ JSP ๋ฌธ์„œ๋ผ๋Š” ๋œป์ด๋‹ค. JSP๋ฌธ์„œ๋ฅผ ์ด๋ ‡๊ฒŒ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค.

 - ์ฒซ ์ค„์„ ์ œ์™ธํ•˜๊ณ ๋Š” ์™„์ „ํžˆ HTML๊ณผ ๋˜‘๊ฐ™๋‹ค. JSP๋Š” ์„œ๋ฒ„ ๋‚ด๋ถ€์—์„œ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

 

 

ํšŒ์› ์ €์žฅ

<%@ 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();

 String username = request.getParameter("username");
 int age = Integer.parseInt(request.getParameter("age"));
 Member member = new Member(username, age);
 
 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๋Š” ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ๋‹ค ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 - <%@ page import = "~~"> : java์˜ import๋ฌธ๊ณผ ๊ฐ™๋‹ค

 - <% ~ %> : java์˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค

 - <%= ~ %> : java์˜ ์ฝ”๋“œ๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค

 

 

ํšŒ์› ๋ชฉ๋ก ์ถœ๋ ฅ

<%@ 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์˜ ํ•œ๊ณ„

 : ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๊ฐœ๋ฐœํ•  ๋•Œ๋Š” ๋ทฐ ํ™”๋ฉด์„ ์œ„ํ•œ HTML์„ ๋งŒ๋“œ๋Š” ์ž‘์—…์ด ์ž๋ฐ” ์ฝ”๋“œ์— ์„ž์—ฌ ์ง€์ €๋ถ„ํ•˜๊ณ  ๋ณต์žกํ–ˆ๋‹ค.

   JSP๋ฅผ ์‚ฌ์šฉํ•œ ๋•๋ถ„์— ๋ทฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” HTML ์ž‘์—…์„ ๊น”๋”ํ•˜๊ฒŒ ๊ฐ€์ ธ๊ฐ€๊ณ  ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์—๋งŒ ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ 

   ์ ์šฉํ–ˆ๋‹ค.

   ํ•˜์ง€๋งŒ ์ฝ”๋“œ๋ฅผ ์ž˜ ๋ณด๋ฉด Java์ฝ”๋“œ, ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋“ฑ๋“ฑ ๋‹ค์–‘ํ•œ ์ฝ”๋“œ๊ฐ€ ๋ชจ๋‘ JSP์— ๋…ธ์ถœ๋˜์–ด ์žˆ๋‹ค.

   JSP๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ์ˆ˜ ๋ฐฑ, ์ˆ˜ ์ฒœ์ค„์ด ๋„˜์–ด๊ฐ€๋Š” JSP๋ฅผ ๋– ์˜ฌ๋ ค๋ณด๋ฉด ์ง€์˜ฅ๊ณผ ๊ฐ™๋‹ค(....ํœด)

   ๋‹ค์Œ์‹œ๊ฐ„์—๋Š” MVC ํŒจํ„ด์„ ์ ์šฉํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฆฌํŒฉํ† ๋ง ํ•ด๋ณด์ž!

 

 

 

 

๋ฐ˜์‘ํ˜•