์๋ธ๋ฆฟ์ผ๋ก ํ์ ๊ด๋ฆฌ ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ง๋ค๊ธฐ
@WebServlet(name = "memberSaveServlet",urlPatterns = "/servlet/members/save")
public class MemberSaveServlet extends HttpServlet {
private MemberRepository memberRepository = MemberRepository.getInstance();
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
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);
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter w = response.getWriter();
w.write("<html>\n" +
"<head>\n" +
" <meta charset=\"UTF-8\">\n" + "</head>\n" +
"<body>\n" +
"์ฑ๊ณต\n" +
"<ul>\n" +
" <li>id="+member.getId()+"</li>\n" +
" <li>username="+member.getUsername()+"</li>\n" +
" <li>age="+member.getAge()+"</li>\n" + "</ul>\n" +
"<a href=\"/index.html\">๋ฉ์ธ</a>\n" + "</body>\n" +
"<a href=\"/servlet/members\">๋ฉค๋ฒ ๋ชฉ๋ก</a>\n" + "</body>\n" +
"<a href=\"/servlet/members/new-form\">๋ฉค๋ฒ ์ถ๊ฐ</a>\n" + "</body>\n" +
"</html>");
์๋ธ๋ฆฟ ๋๋ถ์ ๋์ ์ผ๋ก ์ํ๋ HTML์ ๋ง์๊ป ๋ง๋ค ์ ์๋ค.
๊ทธ๋ฐ๋ฐ, ์ฝ๋์์ ๋ณด๋ฏ์ด ์ด๊ฒ์ ๋งค์ฐ ๋ณต์กํ๊ณ ๋นํจ์จ์ ์ด๋ค.
์๋ฐ ์ฝ๋๋ก HTML์ ๋ง๋ค์ด ๋ด๋ ๊ฒ ๋ณด๋ค
์ฐจ๋ผ๋ฆฌ HTML ๋ฌธ์์ ๋์ ์ผ๋ก ๋ณ๊ฒฝํด์ผ ํ๋ ๋ถ๋ถ๋ง ์๋ฐ ์ฝ๋๋ฅผ ๋ฃ์ ์ ์๋ค๋ฉด ๋ ํธ๋ฆฌํ ๊ฒ์ด๋ค.
์ด๊ฒ์ด ๋ฐ๋ก ํ ํ๋ฆฟ ์์ง์ด ๋์จ ์ด์ ์ด๋ค.
ํ ํ๋ฆฟ ์์ง์ ์ฌ์ฉํ๋ฉด 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();
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>
ํ์ ์ ์ฅ JSP๋ฅผ ๋ณด๋ฉด, ํ์ ์ ์ฅ ์๋ธ๋ฆฟ ์ฝ๋์ ๊ฐ๋ค.
๋ค๋ฅธ ์ ์ด ์๋ค๋ฉด, HTML์ ์ค์ฌ์ผ๋ก ํ๊ณ , ์๋ฐ ์ฝ๋๋ฅผ ๋ถ๋ถ๋ถ๋ถ ์ ๋ ฅํด์ฃผ์๋ค.
<% ~ %> ๋ฅผ ์ฌ์ฉํด์ HTML ์ค๊ฐ์ ์๋ฐ ์ฝ๋๋ฅผ ์ถ๋ ฅํ๊ณ ์๋ค.
์๋ธ๋ฆฟ๊ณผ JSP์ ํ๊ณ
์๋ธ๋ฆฟ์ผ๋ก ๊ฐ๋ฐํ ๋๋ ๋ทฐ(View)ํ๋ฉด์ ์ํ HTML์ ๋ง๋๋ ์์ ์ด ์๋ฐ ์ฝ๋์ ์์ฌ์ ์ง์ ๋ถํ๊ณ ๋ณต์กํ๋ค.
JSP๋ฅผ ์ฌ์ฉํ ๋๋ถ์ ๋ทฐ๋ฅผ ์์ฑํ๋ HTML ์์
์ ๊น๋ํ๊ฒ ๊ฐ์ ธ๊ฐ๊ณ ,
์ค๊ฐ์ค๊ฐ ๋์ ์ผ๋ก ๋ณ๊ฒฝ์ด ํ์ํ ๋ถ๋ถ์๋ง ์๋ฐ ์ฝ๋๋ฅผ ์ ์ฉํ๋ค.
๊ทธ๋ฐ๋ฐ ์ด๋ ๊ฒ ํด๋ ํด๊ฒฐ๋์ง ์๋ ๋ช๊ฐ์ง ๊ณ ๋ฏผ์ด ๋จ๋๋ค.
ํ์ ์ ์ฅ JSP๋ฅผ ๋ณด์. ์ฝ๋์ ์์ ์ ๋ฐ์ ํ์์ ์ ์ฅํ๊ธฐ ์ํ ๋น์ฆ๋์ค ๋ก์ง์ด๊ณ ,
๋๋จธ์ง ํ์ ์ ๋ฐ๋ง ๊ฒฐ๊ณผ๋ฅผ HTML๋ก ๋ณด์ฌ์ฃผ๊ธฐ ์ํ ๋ทฐ ์์ญ์ด๋ค. ํ์ ๋ชฉ๋ก์ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง๋ค.
์ฝ๋๋ฅผ ์ ๋ณด๋ฉด, JAVA ์ฝ๋, ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ฑ๋ฑ ๋ค์ํ ์ฝ๋๊ฐ ๋ชจ๋ JSP์ ๋
ธ์ถ๋์ด ์๋ค.
JSP๊ฐ ๋๋ฌด ๋ง์ ์ญํ ์ ํ๋ค.
MVC ํจํด์ ๋ฑ์ฅ
ํ๋์ ์๋ธ๋ฆฟ์ด๋ JSP๋ง์ผ๋ก ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ทฐ ๋ ๋๋ง๊น์ง ๋ชจ๋ ์ฒ๋ฆฌํ๊ฒ ๋๋ฉด,
๋๋ฌด ๋ง์ ์ญํ ์ ํ๊ฒ๋๊ณ , ๊ฒฐ๊ณผ์ ์ผ๋ก ์ ์ง๋ณด์๊ฐ ์ด๋ ค์์ง๋ค.
๋ณ๊ฒฝ์ ๋ผ์ดํ ์ฌ์ดํด
์๋ฅผ ๋ค์ด์ UI ๋ฅผ ์ผ๋ถ ์์ ํ๋ ์ผ๊ณผ ๋น์ฆ๋์ค ๋ก์ง์ ์์ ํ๋ ์ผ์
๊ฐ๊ฐ ๋ค๋ฅด๊ฒ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ๋๊ณ ๋๋ถ๋ถ ์๋ก์๊ฒ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
์ด๋ ๊ฒ ๋ณ๊ฒฝ์ ๋ผ์ดํ ์ฌ์ดํด์ด ๋ค๋ฅธ ๋ถ๋ถ์ ํ๋์ ์ฝ๋๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ์ ์ง๋ณด์ํ๊ธฐ ์ข์ง ์๋ค.
๊ธฐ๋ฅ ํนํ
ํนํ JSP ๊ฐ์ ๋ทฐ ํ ํ๋ฆฟ์ ํ๋ฉด์ ๋ ๋๋ง ํ๋๋ฐ ์ต์ ํ ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ด ๋ถ๋ถ์ ์ ๋ฌด๋ง ๋ด๋นํ๋ ๊ฒ์ด ๊ฐ์ฅ ํจ๊ณผ์ ์ด๋ค.
๋น์ฆ๋์ค ๋ก์ง์ ์๋ธ๋ฆฟ ์ฒ๋ผ ๋ค๋ฅธ๊ณณ์์ ์ฒ๋ฆฌํ๊ณ ,
JSP๋ ๋ชฉ์ ์ ๋ง๊ฒ HTML๋ก ํ๋ฉด(View)์ ๊ทธ๋ฆฌ๋ ์ผ์ ์ง์คํ๋๋ก ํ์.
MVC(Model View Controller)
ํ๋์ ์๋ธ๋ฆฟ์ด๋, JSP๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ ์ปจํธ๋กค๋ฌ(Controller)์ ๋ทฐ(View)๋ผ๋ ์์ญ์ผ๋ก ์๋ก ์ญํ ์ ๋๋ ๊ฒ์ ๋งํ๋ค.
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณดํต ์ด MVC ํจํด์ ์ฌ์ฉํ๋ค.
์ปจํธ๋กค๋ฌ: HTTP ์์ฒญ์ ๋ฐ์์ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฒ์ฆํ๊ณ , ๋น์ฆ๋์ค ๋ก์ง์ ์คํํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ทฐ์ ์ ๋ฌํ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์กฐํํด์ ๋ชจ๋ธ์ ๋ด๋๋ค.
๋ชจ๋ธ: ๋ทฐ์ ์ถ๋ ฅํ ๋ฐ์ดํฐ๋ฅผ ๋ด์๋๋ค. ๋ทฐ๊ฐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ชจ๋ธ์ ๋ด์์ ์ ๋ฌํด์ฃผ๋ ๋๋ถ์
๋ทฐ๋ ๋น์ฆ๋์ค ๋ก์ง์ด๋ ๋ฐ์ดํฐ ์ ๊ทผ์ ๋ชฐ๋ผ๋ ๋๊ณ , ํ๋ฉด์ ๋ ๋๋ง ํ๋ ์ผ์ ์ง์คํ ์ ์๋ค.
๋ทฐ: ๋ชจ๋ธ์ ๋ด๊ฒจ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํด์ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ์ผ์ ์ง์คํ๋ค. ์ฌ๊ธฐ์๋ HTML์ ์์ฑํ๋ ๋ถ๋ถ์ ๋งํ๋ค.
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard
'Spring > Spring MVC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์คํ๋ง MVC] - 7. ํ๋ก ํธ ์ปจํธ๋กค๋ฌ (0) | 2023.02.14 |
---|---|
[์คํ๋ง MVC] - 6. MVC ํจํด - ์ ์ฉ , ํ๊ณ (0) | 2023.02.13 |
[์คํ๋ง MVC] - 4. HTTP ์๋ต ๋ฐ์ดํฐ ( ํ ์คํธ / HTML / API ) (0) | 2023.02.12 |
[์คํ๋ง MVC] - 3. HTTP ์์ฒญ ๋ฐ์ดํฐ ( GET / POST / API ) (0) | 2023.02.12 |
[์คํ๋ง MVC] - 2. ์๋ธ๋ฆฟ ๋ฑ๋กํ๊ณ ์ฌ์ฉํ๊ธฐ (0) | 2023.02.11 |