#14. JSP์ ์น ํ๋ก๊ทธ๋๋ฐ
by JiwonDev2021.07.14 - [Backend/Java] - # 13 JSP (Java Server Pages)
์ต๊ทผ(2021)์ Java๋ฅผ ํตํ ์น ๊ฐ๋ฐ์ ์คํ๋ง ํ๋ ์์ํฌ๊ฐ ํ์ค์ ๊ฐ๊น๊ฒ ์ฌ์ฉ๋๋ค. ์ฆ JSP๋ ์ฌ์ฅ(deprecated) ๋์ด๊ฐ๋ ๊ธฐ์ ์ด ๋์๊ณ ์๋ธ๋ฆฟ์ ์ง์ ํ๋ก๊ทธ๋๋ฐ ํ ์ผ์ ๋ง์ด ์๋ค. ํ์ง๋ง ์คํ๋ง MVC๋ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํด์ ๋ณด์ด์ง ์์ ๋ฟ์ด์ง ๋ด๋ถ์ ์ผ๋ก๋ ์๋ธ๋ฆฟ์ ์ด์ฉํ์ฌ ๋ง๋ค์ด์ ธ์๊ธฐ์ ๊ฐ๋ฐ์ ํ๊ธฐ ์ํด์๋ ์๋ธ๋ฆฟ ์คํ์ ๋ํ ์ดํด๊ฐ ํ์์ ์ด๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๊ธฐ์กด์ JSP๋ฅผ ์ด์ฉํ ์น ํ๋ก๊ทธ๋๋ฐ์ ์ด๋ป๊ฒ ๊ฐ๋ฐ๋์๋์ง ๋๋ต์ ์ผ๋ก ์์๋ณด๋ฉฐ ์๋ฐ์ ์๋ธ๋ฆฟ์ ๋ํ ๊ธฐ์ด์ง์์ ์์๋ณด์.
#0 JSP์ ์ดํด (21.7.18์ถ๊ฐ)
JSP์ ์ ํ์๋ ์๋ฐ์ฝ๋๋ WAS๊ฐ ๋ฐ๋ก ๋ถ๋ฆฌํ์ฌ ์๋ธ๋ฆฟ์ผ๋ก ๋ง๋ ๋ค๋ ๊ฑธ ์์์ ๋ฐฐ์ ๋ค.
1. ๋ธ๋ผ์ฐ์ ๊ฐ ์น ์๋ฒ์ ์์ฒญ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ค.
2. ์น ์๋ฒ๊ฐ WAS(์ปจํ ์ด๋)์ ์์ฒญ ์ ๋ณด๋ฅผ ์ ๋ฌํ๊ณ JSP๊ฐ ์คํ๋๋ค.
3. JSP ์ ์๋ ์๋ฐ ์ฝ๋๋ ์ปจํ ์ด๋์ ์ํด ์๋ธ๋ฆฟ ์ฝ๋๋ก ๋ณํ๋๋ค. (์ด๋ฏธ ๋ณํํ๋ค๋ฉด ์๋๊ฑธ ์ฌ์ฉํ๋ค.)
4. ๋ณํ๋ ์๋ธ๋ฆฟ ์ฝ๋๋ ์ปดํ์ผ๋์ด ์คํ๊ฐ๋ฅํ bytecode(.class)๋ก ๋ณํ๋์ด WAS์ ๋ก๋ฉ๋๋ค.
5. ์๋ธ๋ฆฟ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ , ํ์ํ ์์ฒญ์ ์ฒ๋ฆฌ ํ ์น์๋ฒ์ ๋ณด๋ผ ์๋ต์ ์์ฑํ๋ค.
Java์์ JSP๋ Sevlet ํด๋์ค (HTTPServlet)๋ฅผ ์์๋ฐ์ ๋ง๋ค์ด์ง ํด๋์ค์ด๋ค. WAS์์๋ HTML๊ณผ Java์ฝ๋๊ฐ ํฉ์ณ์ง JSP๋ฅผ ์ฝ์ด๋ค์ฌ HTML ๋ถ๋ถ๊ณผ Java ๋ถ๋ถ์ ๋ถ๋ฆฌํ๊ณ , ์๋ฐ์ฝ๋๋ฅผ JSP ํด๋์ค๋ก ๋ง๋ค์ด ์ฒ๋ฆฌํ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
#1. ๊ฐ๋ฐํ๊ฒฝ
IntelliJ(ํธ์ง๊ธฐ)์ Tomcat(WAS + Web Server)์ ์ฌ์ฉํ๋ค. ๋งํฌ์ ๋ค์ด๊ฐ ๋ค์ด๋ก๋ ๋ฐ๋๋ก ํ์.
ํฐ์บฃ์ ์ ์ฝ์ด๋ณด๊ณ ์ค์นํ๋ฉด ๋๊ณ , Intellij์์๋ ์๋ฐ ํ๋ก์ ํธ๋ฅผ ๋ง๋ ๋ค์ ํ๋ก์ ํธ๋ช ์ฐํด๋ฆญ -> Add Framework Support๋ฅผ ๋๋ฌ ์น ๊ฐ๋ฐํ๊ฒฝ์ ์ธํ ํ์.
์์ธํ ์ค๋ช
Tomcat์ ์ํ์น(Apache)์ฌ๋จ์์ ๋ง๋ ๋ฌด๋ฃ WAS๋ก ์ํ์น ์๋ฒ๋ฅผ ๋ด์ฅํ๊ณ ์๋ค. ์ค์นํ ๋ ์ฌ๋ฌ ์ต์ ์ ๋ฌผ์ด๋ณผ๊ฑด๋ฐ, ๊ทธ๋ฅ ์ฝ์ด๋ณด๊ณ Next๋ง ๋๋ฌ์ฃผ๋ฉด ๋๊ธฐ์ ์ด๋ ต์ง ์๊ฒ ์ค์น ํ ์ ์๋ค.
intellJ๋ฅผ ์ค์นํด์ ๋น ์๋ฐ ํ๋ก์ ํธ๋ฅผ ๋ง๋ ํ JavaEE ์น ์๋น์ค ํ๋ ์์ํฌ๋ฅผ ์ถ๊ฐํ๋ฉด ๋๋ค.
๊ทธ๋ฆฌ๊ณ IntelliJ์ ์ค์นํ ํฐ์บฃ์ ์ฐ๊ฒฐํ์.
web ๋๋ ํ ๋ฆฌ๊ฐ ๋ง๋ค์ด์ก๋ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ฅผ ์์ฑํด์ ์น ์ฑ์ ํฐ์บฃ์ ์คํ์์ผ๋ณด์. ๋ง์ฝ ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ฑ์ ์คํจํ๋ค๋ฉด ํด๋น ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ๋๋ก ํ์.
// web.xml ํ์ผ
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
</web-app>
// index.jsp์ ํ์ผ. Tomcat WAS๋ฅผ ํตํด ์คํ์์ผ์ผ ํ๋ค.
<%--
Created by IntelliJ IDEA.
User: -
Date: 2021-07-15
Time: ์คํ 11:13
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%
String bookTitle = "JSP ์ฑ
";
String author = "์ง์ํด";
%>
<b><%= bookTitle %></b>์ ์ ์ <%=author%> ์
๋๋ค.
</body>
</html>
#2. JSP์ ๊ตฌ์กฐ
๊ธฐ๋ณธ์ ์ผ๋ก HTML ์ฝ๋ ๋ด์ <% %> ๋ชจ์์ ํ๊ทธ๋ฅผ ์ถ๊ฐํ์ฌ ์ฌ์ฉํ๋ค. ์ฐธ๊ณ ๋ก ์ฃผ์์ <%-- ๋ด์ฉ --%> ์ผ๋ก ์์ฑ ๊ฐ๋ฅํ๋ค.
#2-1 ๋๋ ํฐ๋ธ (Directive)
JSP ํ์ด์ง์ ๋ํ ์ค์ ์ ๋ณด๋ฅผ ์ง์ ํ๋ค.
๋๋ ํฐ๋ธ | ์ค๋ช |
page | JSP ํ์ด์ง์ ๋ํ ์ ๋ณด. JSP๊ฐ ์์ฑํ๋ ๋ฌธ์์ ํ์ , ์ถ๋ ฅ๋ฒํผ ํฌ๊ธฐ, ์๋ฌํ์ด์ง๋ฑ์ ์ง์ ํ๋ค. |
include | JSP ํ์ด์ง์ ํน์ ์์ญ์ ๋ค๋ฅธ ๋ฌธ์๋ฅผ ํฌํจ์ํจ๋ค. |
taglib | JSP ํ์ด์ง์์ ์ฌ์ฉํ ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ ํ๋ค. prefix๋ก ๋ณ๋ช ์ ๋ฌ์ ์ฌ์ฉ ํ ์ ์๋ค. |
<%@ ๋๋ ํฐ๋ธ์ด๋ฆ ์์ฑ1="๊ฐ1" ์์ฑ2="๊ฐ2" ... %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file = "test_url">
<%@ taglib uri=http://java.sun.com/jsp/jstl/core prefix=“c" %>
...
<c:out value="Hello World"> </c:out>
#2-2 ์คํฌ๋ฆฝํธ (Sciprt)
<% %> ์์ Java ์ฝ๋๋ฅผ ์์ฑํ์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค ์ ์๋ค. ํด๋น ํ๊ทธ๋ 3๊ฐ์ง ์ข ๋ฅ๊ฐ ์๋ค.
- Scriptlet <% ์ฝ๋ %>
์๋ฐ ์ฝ๋๋ฅผ ์์ฑํ์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ๊ตฌ์ฑ ํ ์ ์๋ค. - Expression <%= ๋ด์ฉ or ํํ์ %>
out ๊ฐ์ฒด๋ฅผ ํตํด ๊ฐ์ ์ถ๋ ฅํ๋ค. 1+2+3 ๊ฐ์ ํํ์์ ์ฃผ๋ฉด ๊ณ์ฐํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค. - Declarations <%! ๋ฉ์๋ %>
JSP์์ ์ฌ์ฉํ ๋ฉ์๋๋ฅผ ์ ์ํ๋ค. Expression์ ์ด์ฉํด ๋ฐํ๊ฐ์ HTML๋ก ์ถ๋ ฅํ ์ ์๋ค.
#2-3 JSP Action
XML ๋ฌธ๋ฒ์ ์ด์ฉํ์ฌ ์๋ธ๋ฆฟ ์์ง์ ์ปจํธ๋กคํ๋ ์ฝ๋์ด๋ค. ์ด๋ ๊ฐ๋จํ๊ฒ ์์ ์ฝ๋๋ง ๋ณด๊ณ ๋์ด๊ฐ๋๋ก ํ์.
ํ์ฌ JSP ํ์ด์ง์ ๋ค๋ฅธ ๋ฆฌ์์ค๋ฅผ ํฌํจ์ํค๋๋ฐ ์ฌ์ฉ.
<jsp:include page="/jsp/common/uppermenu.jsp" flush="true"/>
๋ค๋ฅธ ๋ฆฌ์์ค(JSP, html ๋๋ Servlet)๋ก ์์ฒญ์ ์ ๋ฌํ๋๋ฐ ์ฌ์ฉ.
<jsp:forward page=“/display.jsp" />
์๋ฐ์ Bean(๊ฐ์ฒด)๋ฅผ ์์ฑ.
<jsp:useBean id="customer" class=“package.class” scope="request"/>
#3. JSP ์์ฑํ๊ธฐ
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--page ๋๋ ํฐ๋ธ๋ฅผ ์ด์ฉํ์ฌ ์๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ import ๋ฅผ ํ ์ ์๋ค.--%>
<%@ page import="java.util.Date" %>
<%-- ์๋ฐ ์ฝ๋๋ <% %> ์์ ์์ฑํ๋ค. --%>
<%
Date now = new Date(); // Date ํด๋์ค
%>
<%-- ๋ฉ์๋๋ฅผ ์์ฑํ ๋์๋ <%! %> ์์ ์์ฑํ๋ค. --%>
<%-- ์ ์ธ๋ถ๊ฐ ์๋ ์ผ๋ฐ ์๋ฐ์ฝ๋๋ฅผ ์ฌ๊ธฐ ์์ฑํด๋ ๋์ํ์ง๋ง, ๋๋๋ก์ด๋ฉด ๊ตฌ๋ถํด์ ์ฐ์. --%>
<%!
public int multiply(int a, int b) {
return a * b;
}
%>
<html>
<head>
<title>ํ์ฌ ์๊ฐ</title>
</head>
<body>
<%--๋ณ์, ๋ฉ์๋, ๊ณ์ฐ์์ HTML๋ก ์ถ๋ ฅํ๋ ค๋ฉด <%= %> ๋ฅผ ์ด์ฉํ๋ค.--%>
1+1 = <%= 1 + 1 %><br/>
3*4 = <%= multiply(3,4) %><br/>
<strong> ํ์ฌ์๊ฐ : <%= now %> </strong>
</body>
</html>
#3-1 Requset ๊ฐ์ฒด
์น ์๋ฒ์์ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ ์ ๋ณด๋ฅผ ๋ฐ์ผ๋ ค๋ฉด JSP ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๋ requset ๊ฐ์ฒด๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค.
<%@ page contentType="text/html; charset=utf-8" %>
<!DOCTYPE html>
<html>
<head>
<title>ํด๋ผ์ด์ธํธ ๋ฐ ์๋ฒ ์ ๋ณด</title>
</head>
<body>
ํด๋ผ์ด์ธํธ IP <%=request.getRemoteAddr() %><br/>
์์ฒญ์ ๋ณด ์ปจํ
์ธ ๊ธธ์ด <%=request.getContentLength() %><br/>
์์ฒญ์ ๋ณด ์ธ์ฝ๋ฉ <%=request.getCharacterEncoding() %><br/>
์์ฒญ์ ๋ณด ์ปจํ
์ธ ํ์
<%=request.getContentType() %><br/>
์์ฒญ์ ๋ณด ํ๋กํ ์ฝ <%=request.getProtocol() %><br/>
์์ฒญ์ ๋ณด ์ ์ก๋ฐฉ์ <%=request.getMethod() %><br/>
์์ฒญ URI <%=request.getRequestURI() %><br/>
์ปจํ
์คํธ ๊ฒฝ๋ก <%=request.getContextPath() %><br/>
์๋ฒ ์ด๋ฆ<%=request.getServerName() %><br/>
์๋ฒ ํฌํธ<%=request.getServerPort() %><br/>
</body>
</html>
๋ฌผ๋ก request ๊ฐ์ฒด๋ฅผ ์ด์ฉํด์ ์ ๋ณด ๋ฟ๋ง ์๋๋ผ ๋ธ๋ผ์ฐ์ (ํด๋ผ์ด์ธํธ)๊ฐ ์ ์กํ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฝ์ ์ ์๋ค.
Requset ๊ฐ์ฒด ๋ฉ์๋ | ์ค๋ช |
String getParameter(String name) | ํ๋ผ๋ฏธํฐ ๋ช ์ ํตํด ํ๋ผ๋ฏธํฐ ๊ฐ ์ฝ๊ธฐ -> ์์๊ฒฝ์ฐ null |
String[] getParameterValues(String name) | ์ด๋ฆ์ด name์ธ ๊ฐ๋ค์ ๋ฐฐ์ด๋ก ๋ฐ๊ธฐ -> ์์๊ฒฝ์ฐ null |
Enumeration getParameterNames() | ํ๋ผ๋ฏธํฐ ๋ชฉ๋ก ์ฝ๊ธฐ |
Map getParameterMap() | ํ๋ผ๋ฏธํฐ๋ค์ <์ด๋ฆ, ๊ฐ> ์ Map ํํ๋ก ๊ฐ์ ธ์ค๊ธฐ |
form.jsp
<%@ page contentType="text/html; charset=utf-8" %>
<!DOCTYPE html>
<html>
<head>
<title>๋ณด๋ด๊ธฐ</title>
</head>
<body>
<form action="/viewParameter.jsp" method="post">
<label for="name">์ด๋ฆ </label>
<input id="name" type="text" name="name" size="10"><br>
<label for="addr">์ฃผ์</label>
<input id="addr" type="text" name="addr" size="30"><br>
<input type="checkbox" name="pet" value="dog">๊ฐ์์ง
<input type="checkbox" name="pet" value="cat">๊ณ ์์ด
<input type="checkbox" name="pet" value="pig">๋ผ์ง
<input type="submit" value="์ ์ก">
<br>
<br>
</form>
</body>
viewParameter.jsp
<%@ page contentType="text/html; charset=utf-8" %>
<%@ page import="java.util.Enumeration" %>
<%@ page import="java.util.Map" %>
<%
request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE html>
<html>
<head>
<title>์์ฒญ ํ๋ผ๋ฏธํฐ ์ถ๋ ฅ</title>
</head>
<body>
<b>getParameter() ๋ฉ์๋</b><br>
name= <%= request.getParameter("name") %><br>
address= <%= request.getParameter("addr") %><br>
<br>
<b>getParameterValues() ๋ฉ์๋</b><br>
<%
String[] values = request.getParameterValues("pet");
if (values != null) {
for (int i = 0; i < values.length; i++) {
%>
<%= values[i] %><br>
<%
}//์๋ฐ์ฝ๋ ์ค๊ฐ์ ๊ฐ์ ์ถ๋ ฅํด์ผํ๋ค๋ฉด, ์ด๋ฐ์์ผ๋ก ๋๋์ด ์ฌ์ฉํด๋๋๋ค.
}
%>
<br>
<b>getParameterNames() ๋ฉ์๋</b><br>
<%
Enumeration enums = request.getParameterNames();
while (enums.hasMoreElements()) {
%>
<%= enums.nextElement() %><br>
<%
}
%>
<br>
<b>getParameterMap() ๋ฉ์๋</b><br>
<%
Map paramMap = request.getParameterMap();
%>
<%= ((String[]) paramMap.get("name"))[0] %><br>
<%= ((String[]) paramMap.get("addr"))[0] %><br>
<%= ((String[]) paramMap.get("pet"))[0] %><br>
<%= ((String[]) paramMap.get("pet"))[1] %><br>
</body>
</html>
# 3-2 Respone ๊ฐ์ฒด
JSP์์๋ Respone๊ฐ ์ ๊ณต๋๋, ๊ฑฐ์ ์ฌ์ฉํ ์ผ์ด ์๋ค.
- ๊ฑฐ์ ์ฌ์ฉ๋์ง ์๋ ๊ฐ์ฒด
- HTTP ํค๋์ ๋ด์ฉ ์ถ๊ฐ
- ๋ค๋ฅธ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ(redirect)
- ๋ฆฌ๋ค์ด๋ ํธ ์ํค๊ธฐ
- response.sendRedirect() ๋ฉ์๋ ์ฌ์ฉ
<%@ page contentType="text/html; charset=utf-8" %>
<!DOCTYPE html>
<html>
<head>
<title>๋ฆฌ๋ค์ด๋ ํธํ์ด์ง</title>
</head>
<body>
<%
String redirect = request.getParameter("redirect");
if(redirect != null && redirect.equals("yes")) {
response.sendRedirect("/chap03/form.jsp");
}
%>
hello
</body>
</html>
#4. GET๊ณผ POST
์์ form.jsp์์๋ POST ๋ฐฉ์์ ์ฌ์ฉํ์๋ค. (์ต์ ์ ์์ฃผ๋ฉด ๊ธฐ๋ณธ๊ฐ GET์ผ๋ก ์ฒ๋ฆฌ๋๋ค.)
<form action="jspํ์ด์ง ๊ฒฝ๋ก" method="post">
...
</form>
# 4-1 GET
- URL ๊ฒฝ๋ก ๋ค์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ถ์ฌ์ ์ ์ก
- http://localhost:8080/abc/asdf.jsp?age=23&gender=woman&address=seoul
- ๋ฌผ์ํ(?) ๋ค์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ถ์ฌ์ ์ ์ก
- ํ๋ผ๋ฏธํฐ ์ฌ์ด๋ฅผ & ๊ธฐํธ๋ก ๊ตฌ๋ถ
- ํ๋ผ๋ฏธํฐ์ด๋ฆ=ํ๋ผ๋ฏธํฐ๊ฐ - ํ๋ผ๋ฏธํฐ ๊ธธ์ด์ ์ ํ์ด ์๋ค.
- ํ๋ผ๋ฏธํฐ๊ฐ ๊ธธ์ด์ง๋ฉด URL๋ ๊ธธ์ด์ง๋ค.
- ๊ธธ์ด ์ ํ์ ์น ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค. - Idempotent(๋ฉฑ๋ฑ)์ ์ฑ์ง์ ๊ฐ์ง๋ค.
- ์์ฒญ์ ์ฌ๋ฌ๋ฒ ์ํํ๋๋ผ๋ ํญ์ ๊ฐ์ ๊ฒฐ๊ณผ ๋ณด์ฅ
- ๋ฐ๋ผ์ ์ฃผ๋ก '์กฐํ' ๊ธฐ๋ฅ์ ์ฌ์ฉ๋๋ค. - ์ธ์ฝ๋ฉ ๊ท์น
- <a>ํ๊ทธ : ์น ํ์ด์ง์ ๊ฐ์ ์ธ์ฝ๋ฉ ์ฌ์ฉ
- <form>ํ๊ทธ : ์น ํ์ด์ง์ ๊ฐ์ ์ธ์ฝ๋ฉ ์ฌ์ฉ
- URL์ ์ฟผ๋ฆฌ ๋ฌธ์์ด ๋ถ์ฌ์ ์ ์ก : ์น ๋ธ๋ผ์ฐ์ ๋ง๋ค ๋ค๋ฆ - ๋์ฝ๋ฉ ์ฒ๋ฆฌ
- WAS๋ง๋ค ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ์บ๋ฆญํฐ์ ์ด ๋ค๋ฅด๋ค.
- ex) ํฐ์บฃ8 ์ดํ๋ utf-8, ํฐ์บฃ7์ ISO-8859-1 ์ฌ์ฉ - HTTP ํค๋ ์์
GET /home.html HTTP/1.1
Host: localhost:8080/example_page.jsp?name=steve&message=hello
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/ *;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
...
#4-2 POST
- ์์ฒญ ํค๋์ ๋ฐ์ดํฐ ์์ญ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฃ์ด์ ์ ์ก
- URL ๋ค์ ํ๋ผ๋ฏธํฐ ์ ๋ณด๊ฐ ๋ถ์ง ์๋๋ค. - GET๋ฐฉ์๊ณผ ๋ฌ๋ฆฌ ํ๋ผ๋ฏธํฐ ๊ธธ์ด์ ์ ํ์ด ์๋ค.
- Non-Idempotent์ ์ฑ์ง์ ๊ฐ์ง๋ค.
- ์๋ฒ์ ์ฌ๋ฌ๋ฒ ์์ฒญํจ์๋ฐ๋ผ ๋ค๋ฅธ ์๋ต์ ๊ฐ์ง ์ ์๋ค.
- ๋ฐ๋ผ์ ์๋ฒ์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝ์ํฌ ๋ ์ฌ์ฉํ๋ค.
- ex) ๋ธ๋ก๊ทธ๋ฑ์ ๊ธ์ ๊ฒ์ํ ๋ ๊ธ์ ๋ด์ฉ์ ํ๋ผ๋ฏธํฐ๋ก ๋ณด๋ด๊ธฐ - ์ธ์ฝ๋ฉ ๊ท์น
- POST ๋ฐฉ์์ผ๋ก ์์ฒญํ ๋ ์น ๋ธ๋ผ์ฐ์ ๋ ์๋ตํ๋ฉด์ ์ง์ ๋ ์บ๋ฆญํฐ์ ์ ์ฌ์ฉํด์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ธ์ฝ๋ฉํ๋ค. - ๋์ฝ๋ฉ ์ฒ๋ฆฌ
- request.setCharacterEncoding()๋ POST์ ๋ฐ์ดํฐ ์์ญ์ ๋ํ ๋์ฝ๋ฉ ๋ฐฉ์์ ์ค์ ํ๋ ๋ฉ์๋์ด๋ค.
- ๋ฐ๋ผ์ GET ๋ฐฉ์์ผ๋ก ๊ฐ์ ธ์จ ํ๋ผ๋ฏธํฐ์๋ ์ ์ฉ๋์ง ์๋๋ค.(ํ๋ผ๋ฏธํฐ๊ฐ URL์ ๋ถ์ด์ ์ค๊ธฐ๋๋ฌธ)
- ์๋ต ํ์ด์ง์์ request ๊ฐ์ฒด๋ก ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ฝ์ด ๋์ฝ๋ฉ ํ๊ธฐ์ ์ ์บ๋ฆญํฐ์ (ํด๋น ํ์ด์ง์ contentType์์ ์ง์ ํ charset)์ ์ง์ ํด์ฃผ์ด์ผ ํ๋ค. - HTTP ํค๋ ์์ (์์ฒญ ํค๋์ ๋ฐ์ดํฐ์์ญ์ ํ๋ผ๋ฉํ๊ฐ ์จ๊ฒจ์ ธ์๋ค.)
POST /myform.html HTTP/1.1
Host: localhost:8080/example_page.jsp
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Content-Length: 128
...
name=steve&message=hello
'๐ฑBackend > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
#16 Servlet ์ดํด (1) | 2021.07.18 |
---|---|
#15 JSP ์ฟ ํค์ ์ธ์ (0) | 2021.07.16 |
#13 JSP (Java Server Pages) (0) | 2021.07.14 |
#12. Optional API (Null๊ฐ ์ฒ๋ฆฌ) (0) | 2021.07.12 |
#11 Stream API (0) | 2021.07.12 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
JiwonDev
JiwonDev