1. ๋ฐ์ดํฐ ์ ์ก ๊ท์น 3๊ฐ์ง
1-1. ์ด๋๋ก (form ํ๊ทธ์ action ์์ฑ)
- ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ชฉ์ ์ง(servlet)๋ฅผ ์ง์ ํ๋ค.
- action ์์ฑ์ ์๋ธ๋ฆฟ URL ํจํด์ ์์ฑํ๋ค.
<form action="/MyServlet" method="post">
์ฌ๊ธฐ์ /MyServlet์ ์๋ธ๋ฆฟ์ URL ๋งคํ ๊ฐ์ด๋ค. ์๋ธ๋ฆฟ์ URL์ @WebServlet์ด๋ web.xml์์ ์ค์ ๋๋ค.
web.xml ๊ฒฝ๋ก
WebContent/WEB-INF/web.xml ๋๋ src/main/webapp/WEB-INF/web.xml (ํ๋ก์ ํธ ๊ตฌ์กฐ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์)
1-2. ์ด๋ค ๊ฐ์ (input ํ๊ทธ์ name)
- input ํ๊ทธ์ name ์์ฑ์ ์ถ๊ฐํ์ฌ ์๋ฒ๋ก ์ ์กํ ๋ฐ์ดํฐ๋ฅผ ์ง์ ํ๋ค.
- ์๋ฒ์์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๊ธฐ ์ํด name ์์ฑ์ด ํ์ํ ๊ฒ.
<input type="text" name="username" placeholder="Enter your name">
<input type="password" name="password" placeholder="Enter your password">
- Servlet ์์ ๊ฐ์ ๋ฐ๋ ๋ฐฉ๋ฒ
String username = request.getParameter("username");
String password = request.getParameter("password");
-3. ์ธ์ (submit)
- submit ๋ฒํผ์ ํด๋ฆญํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ์ ์ก
- form์ ์
๋ ฅ๋ ๊ฐ์ด ์ง์ ๋ action URL๋ก ์ ์ก๋๋ค.
<button type="submit">Submit</button>
2. ์ค์ต
2-1. ์ค๋์ ์ฌ์?
datasend.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- html/jsp ์์ Servlet์ผ๋ก ๋ฐ์ดํฐ ์ ์ก ๊ท์น 3๊ฐ์ง
(1) ์ด๋๋ก ๋ณด๋ด? : form ํ๊ทธ์ action์
(2) ์ด๋ค๊ฐ์ ๋ณด๋ด? : inputํ๊ทธ์ name์
(3) ์ธ์ ๋ณด๋ด? : submint ๋ฒํผ
-->
<form action="DataSend">
์ง๋ฌธ :
<input type="text" name="data" id="" value="">
<input type="submit" value="์ง๋ฌธํ๊ธฐ">
</form>
</body>
</html>
ex01DataSend.java
package ex0127;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class DataSend
*/
@WebServlet("/DataSend")
public class ex01DataSend extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset= UTF-8");
// 1. ์์ฒญ๋ฐ์ ๋ฐ์ดํฐ ๊บผ๋ด์ค๊ธฐ
String data = request.getParameter("data");
// 2. ์์ฒญ๋ฐ์ ๋ฐ์ดํฐ ํ๋ฉด์ ์ถ๋ ฅํ๊ธฐ
PrintWriter out= response.getWriter();
out.print("<h1>"+data+"</h1>");
out.print("<br>");
out.print("์ค๋ ์ ์ฌ์ ์ ๋ณตํด๋ฌผ์งฌ๋ฝ์
๋๋ค");
}
}
2-1. 2๊ฐ์ ์ ์ ์ ๋ ฅ ๋ฐ์ ๋ง์ ์ ์ถ๋ ฅ
์๋ธ๋ฆฟ์ ํฐ์บฃ์์ ์ ๋์๊ฐ๋๋ฐ html ๋ง ์คํ์ด ์ ๋๋ ๋ฌธ์
html ํ์ผ ๊ฒฝ๋ก๊ฐ ์๋ชป๋์๊ธฐ ๋๋ฌธ์ 404์๋ฌ๊ฐ ๋ฌ ๊ฒ์ด์๋ค.
HTML ํ์ผ์ด WEB-INF ํด๋ ์์ ์๋ค๋ฉด, ๋ธ๋ผ์ฐ์ ์์ ์ ๊ทผํ ์ ์๋ค.
WEB-INF ๋ด๋ถ ํ์ผ์ ๋ณดํธ๋๊ธฐ ๋๋ฌธ์ ์ง์ URL๋ก ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ webapp ํ์์ ๋ค์ด๊ฐ์ผ ํ๋ค.
์๋์ฒ๋ผ ๋ฐ๊พธ๋๊น ์๋ ์ ๋จ
plusop.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="Plusop">
<input type="text" name="num1">
+
<input type="text" name="num2">
<input type="submit">
</form>
</body>
</html>
ex02Plus.java
package ex0127;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class ex02Plus
*/
@WebServlet("/Plusop")
public class ex02Plus extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// ํ๊ธ์ฌ์ฉ ํ๊ธฐ์ํด UTF-8
response.setContentType("text/html; charset= UTF-8");
// html์์ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ request๋ฅผ ํตํด์ ์๋ฃํ ๋ฐ์ดํฐ๋ก ๋ฐ๋๋ค!
String num1 = request.getParameter("num1");
String num2 = request.getParameter("num2");
// ์๋ฃํ๋ฐ์ดํฐ๋ intํ์ผ๋ก ๋ณํํ์ฌ์ผ ๊ณ์ฐ ๊ฐ๋ฅ
int number1 = Integer.parseInt(num1);
int number2 = Integer.parseInt(num2);
// response๋ฅผ ํตํด์ ์ถ๋ ฅ ๊ฐ์ฒด๋ฅผ ์์ฑ
PrintWriter out = response.getWriter();
// request์ ๋ํ response๋ฅผ html๋ก ์ถ๋ ฅ
out.print(number1 + " + " + number2 + " = " + (number1 + number2));
}
}
2-3. ๋ฐฉ ๋ง๋ค๊ธฐ (ํ)
ex03makeTable.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="MakeTable">
๋ช ๊ฐ์ ๋ฐฉ์ ๋ง๋ค๊น์?
<input type="text" name="num">
<input type="submit" value="SEND">
</form>
</body>
</html>
ex03MakeTable.java
package ex0127;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class ex03MakeTable
*/
@WebServlet("/MakeTable")
public class ex03MakeTable extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset= UTF-8");
String num = request.getParameter("num");
int number = Integer.parseInt(num);
PrintWriter out = response.getWriter();
out.print("<table border = '1'>");
out.print("<tr>");
for (int i = 1; i < number + 1; i++) {
out.print("<td>" + i + "</td>");
}
out.print("</tr>");
out.print("</table>");
}
}