-
Servlet ์๋ธ๋ฆฟ ๊ฐ์ฒด์ ์์ฒญ-์๋ต์ฒ๋ฆฌJAVA 2020. 9. 20. 23:48
๐ฏ์๋ธ๋ฆฟ ๊ฐ์ฒด์ ๋ผ์ดํ์ฌ์ดํด, ์์ฒญ์ฒ๋ฆฌ์ ์๋ต์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์์๋ณธ๋ค.
HttpServlet API
์๋ธ๋ฆฟ์ ๊ตฌํํ๊ธฐ ์ํ ํต์ฌ API๋ก์ ์ผ๋ฐ ํด๋์ค๊ฐ ์๋ ์ถ์ํด๋์ค๊ฐ ์ ๊ณต๋๋ค.
extends Servlet
์์ ์ธํฐํ์ด์ค Servlet์ ์์๋ฐ๋๋ค. ์๋ธ๋ฆฟ์ผ๋ก ๋์ํ๋ ค๋ฉด ์ด๊ฑธ ์์๋ฐ์์ผํ๋ค.HttpServletRequest API
HTTP ์์ฒญ์ ๋ณด ์ฒ๋ฆฌ์์ ์ ๋ด๋นํ๋ API์ด๋ค. ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ์ ๋ณด๋ ์์ฒญ์ ๋ณด์ ๋ด๊ฒจ ์ ๋ฌ๋๊ณ ์๋ฒ์์๋ ๊ทธ ์์ฒญ์ ๋ณด ๊ฐ์ ์ถ์ถํ๊ธฐ ์ํด ์ด ๊ฐ์ฒด์์ ์ ๊ณตํ๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
-์ฃผ์ ํต์ฌ ๊ธฐ๋ฅ
- ์ฌ์ฉ์ ์ ๋ ฅ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ( ํผ ๋ฐ์ดํฐ )
- ํ๊ธ ์ธ์ฝ๋ฉ
- ์์ฒญ header ์ป๊ธฐ
- ์ธ์ ์ฒ๋ฆฌ
- ์ฟ ํค ์ฒ๋ฆฌ
- ์์ฒญ scope์ ๋ฐ์ดํฐ ์ ์ฅ
- forward ์ฒ๋ฆฌ
HttpServletResponse API
HTTP Response ๊ด๋ จ ์ฒ๋ฆฌ์์ ์ ๋ด๋นํ๋ API์ด๋ค.
-์ฃผ์ ํต์ฌ ๊ธฐ๋ฅ
- Header์ ์ ์ฅ
- ์ฟ ํค ์ ์ฅ
- ์๋ต์ฒ๋ฆฌ(html์์ฑํ ์ ๊ณต)
- redirect ์ฒ๋ฆฌ
์๋ธ๋ฆฟ Life Cycle
์๋ธ๋ฆฟ ๊ฐ์ฒด์ ์์ฑ๊ณผ ์ญ์ ์๋ช ์ฃผ๊ธฐ
Tomcat ์ปจํ ์ด๋๋ ์๋ธ๋ฆฟ์ ์ธ์คํด์ค๋ฅผ ๋ค์๊ณผ ๊ฐ์ด 3 ๊ฐ์ง ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌํ๋ค.
1. init()
์๋ธ๋ฆฟ ๊ฐ์ฒด๊ฐ ์ฒ์ ๋ง๋ค์ด์ง ๋ ํ๋ฒ๋ง ํธ์ถ๋๋ค. ์๋ธ๋ฆฟ์ผ๋ก ๊ตฌํ๋ ํํ์ด์ง์ ์ฒ์ ์ ์ํ ๋ ์ด init ๋ฉ์๋๊ฐ ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ์ต์ด๋ก ์์ฑํ๋ฉด ๊ทธ ๊ฐ์ฒด๋ฅผ ๊ณ์ ์ฌ์ฌ์ฉํ๋ค. ์๋ธ๋ฆฟ์์ ํ์ํ ๋ณ์๋ฅผ ์ด๊ธฐํํ๋ ์์ ์ ํ๋ค. jdbc๋๋ผ์ด๋ฒ, ์ ์ ์์ด๋ url์ค์
2. service()
ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ๋๋ง๋ค ํธ์ถ๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์ํ๋ ๋์ ์ธ ์ฒ๋ฆฌ์์ ์ ์ํํ๋ค. doGet, doPost ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ค.
3. destroy()
์๋ฒ๊ฐ ์๋น์ค๋ฅผ ์ค์งํ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ์์ ์๋ธ๋ฆฟ ๊ฐ์ฒด๊ฐ ์ญ์ ๋๋ฉฐ destroy()๊ฐ ํธ์ถ๋๋ค.
package com.controller; import java.io.IOException; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/LifeCycleServlet") public class LifeCycleServlet extends HttpServlet { public void init(ServletConfig config) throws ServletException { System.out.println("init()ํธ์ถ๋จ==============="); } public void destroy() { System.out.println("destroy()ํธ์ถ๋จ==============="); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("doGet()ํธ์ถ๋จ==============="); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
์ ์ฝ๋๋ฅผ ์คํํ๋ฉด ์น๋ธ๋ผ์ฐ์ ์์ ์๋ก๊ณ ์นจํ ๋๋ง๋ค doget() ๋ฉ์๋๋ง ํธ์ถ๋๋ค. init() ๋ฉ์๋๋ ์ต์ด ์์ฒญ์ ๋ฑ ํ ๋ฒ ์คํ๋๋ฉฐ service ๋ฉ์๋์ธ doGet()๊ณผ doPost()๋ ์์ฒญํ ๋๋ง๋ค ๊ณ์ ์คํ๋๊ธฐ ๋๋ฌธ์ด๋ค.
์๋ธ๋ฆฟ ์๋ต ์ฒ๋ฆฌ
ํด๋ผ์ด์ธํธ์์ ์๋ธ๋ฆฟ์ผ๋ก ์์ฒญ์ด ์ค๋ฉด ์๋ธ๋ฆฟ์ ์ฒ๋ฆฌ๋ ๊ฒฐ๊ณผ๋ฅผ html ํ์์ผ๋ก ์์ฑํ์ฌ ์๋ต ์ฒ๋ฆฌํ๋ค.
์๋ธ๋ฆฟ์ ์๋ต์ฒ๋ฆฌ๋ HttpServletResponse ๊ฐ์ฒด์ 2๊ฐ์ง ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
response.setContentType(“text/html; charset=UTF-8”);
ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต์ ๋ณด๋ฅผ ๋ณด๋ด๊ธฐ ์ํด ๋ฐ์ดํฐ์ ๋ฌธ์ํ์ (MIME ํ์ )๊ณผ ํ๊ธ์ฒ๋ฆฌ๋ฅผ ์ค์ ํ๋ ๋ฉ์๋์ด๋ค.
PrintWriter out = response.getWriter();
์๋ต ์ฒ๋ฆฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ฐI/O ๊ธฐ์ ์ ์ด์ฉํ๋ค. ๋ฐ๋ผ์ ์ถ๋ ฅ์ ์ํ OutputStream(Byte) ๋๋ Writer(Char) API๋ฅผ ์ฌ์ฉํด์ผ ๋๋ค.
์ธ๋ถ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ธธ์ ์คํธ๋ฆผ์ด๋ผ๊ณ ํ๋ค. ์๋ฐํ๋ก๊ทธ๋จ์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋ ๊ธธ์ ์ธํ์คํธ๋ฆผ, ์ธ๋ถ๋ก ๋๊ฐ๋๊ธธ์ ์ถ๋ ฅ์คํธ๋ฆผ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ ๋ฉ์๋์ ๋ถ์ด์๋ Writer๋ ์๋ฐ์์ ์ธ๋ถ๋ก ๋ฐ์ดํฐ ์ถ๋ ฅ์ ์ํ ์ถ๋ ฅ์คํธ๋ฆผ์ ๋ํ๋ธ๋ค. ์ด ๋ฉ์๋๊ฐ ๋ฐํํ ์ถ๋ ฅ์คํธ๋ฆผ์ out์ด๋ผ๋ ์ถ๋ ฅ์คํธ๋ฆผ ๋ณ์์ ๋์ ํ๊ณ ์๋ค.
์๋ต์ฒ๋ฆฌ ์ฐ์ต 1
@WebServlet("/TestServlet") public class TestServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //0. ์ฌ์ฉ์ ์์ฒญ ๋ฐ์ดํฐ ๋ฝ๊ธฐ //1. ์ฌ์ฉ์ ์์ฒญ ๋ฐ์ดํฐ ์ฒ๋ฆฌ //2. ์์ฒญ ์๋ฃ ํ ์๋ต์ฒ๋ฆฌ response.setContentType("text/html;charset=UTF-8"); //2-1. HTML CONTENT ํ์ ์ง์ PrintWriter out = response.getWriter(); //2-2. PrintWriter ์ป๊ธฐ out.print("<html><body>"); //2-3. ์๋ตํ html์ฝ๋ ์์ฑ out.print("<h1>์๋ธ๋ฆฟ ์๋ต์ฒ๋ฆฌ ์ค์ต</h2>"); out.print("<p>Hello World</p>"); out.print("<body></html>"); }
0๋ฒ๊ณผ 1๋ฒ ๊ณผ์ ์ ์์ฒญ์ฒ๋ฆฌ ๊ณผ์ ์ด๋ค. 2๋ฒ ์๋ต์ฒ๋ฆฌ ๊ณผ์ ์ ๋ณด๋ฉด ๋จผ์ ์๋ต์ ๋ณด ํ์ ์ ์ง์ ํ๊ณ ์ถ๋ ฅ์คํธ๋ฆผ์ ์ป์ด์์ html ์๋ตํ๋ฉด์ ์์ฑํ๊ณ ์๋ค.
์๋ต์ฒ๋ฆฌ ์ฐ์ต 2
@WebServlet("/info") public class info extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.print("<html><body>"); String my = "<table border='1'>"; my += "<tr>"; my += "<td>์ด๋ฆ</td>"; my += "<td>๋์ด</td>"; my += "<td>์ฃผ์</td>"; my += "</tr>"; my += "<tr>"; my += "<td>ํ๊ธธ๋</td>"; my += "<td>20</td>"; my += "<td>์์ธ</td>"; my += "</tr>"; my += "</table>"; out.print(my); out.print("<body></html>"); } }
์๋ต์ฒ๋ฆฌ ํ๋ฉด์ ํ ์ด๋ธ์ ์ ๋ ฅํ๋ค.
์๋ธ๋ฆฟ ์์ฒญ ์ฒ๋ฆฌ
form ํ๊ทธ ์์ฑ๊ณผ ์ง์๋ฌธ์์ด
ํผ์ ์๋ฒ์์ ์ฒ๋ฆฌํ๋ ์์ ๋จ์๋ก ๋๋์ด ์ฌ์ฉํด์ผ ํ๋ค. (๊ฒ์ํผ, ๋ก๊ทธ์ธํผ ๋ฐ๋ก๋ฐ๋ก) ํผ์ ์ ๋ ฅํ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ง์๋ฌธ์์ด์ด๋ผ๊ณ ํ๋ค. submit ๋ฒํผ์ ๋๋ฌ์ ์ ๋ ฅํ ๊ฐ์ ์๋ฒ์ ์ ์กํ๋ฉด ์๋ฒ๋ ์ง์๋ฌธ์์ด์ ๊บผ๋ด ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต์ ์ฒ๋ฆฌํ๋ค.
action ์์ฑ : submit ๋ฒํผ ํด๋ฆญํ์ ๋, ์น ์๋ฒ์์ ์์ฒญ์ ์ฒ๋ฆฌํ ์น ์ปดํฌ๋ํธ๋ฅผ ์ง์ ํ๋ค. html, jsp, servlet ๋ชจ๋ ์ค์ ํ ์ ์๋ค.
method ์์ฑ : ์น ๋ธ๋ผ์ฐ์ ์์ ์น ์๋ฒ๋ก ์์ฒญํ๋ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ GET, POST ๋ฑ์ผ๋ก ์ง์ ํ๋ค.
name ์์ฑ : ์์์ ์์ด๋๋ ํด๋์ค์ฒ๋ผ ์ด๋ฆ์ ๋ถ์ผ ์ ์๋ ์์ฑ์ธ๋ฐ, ์ง์๋ฌธ์์ด์ ์ ๋ฌํ ๋ ์ฌ์ฉ๋๋ฏ๋ก ์ค์ํ ์์ฑ์ด๋ค. ์ฒดํฌ๋ฐ์ค ํ์ ์ผ ๊ฒฝ์ฐ ํ๋์ ๊ทธ๋ฃน์ ๋ค ๊ฐ์ ์ด๋ฆ์ ์ง์ ํด์ผ ํ๋ค. <select>๋ ์ต์ ํ๊ทธ๊ฐ ์๋ ์ ๋ ํธ ํ๊ทธ์ ๋ค์์ ์ง์ ํ๋ค.
์์ฒญ์ ๋ณด ํ๊ธ์ฒ๋ฆฌ
request.setCharacterEncoding("utf-8");
์ผ๋จ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ๋ฐ์ดํฐ๋ฅผ ํ๊ธ๋ก ๋จผ์ ์ธ์ฝ๋ฉ ์ฒ๋ฆฌํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํด์ ์ฌ์ฉํด์ผ ํ๋ค.
์์ฒญ ํ๋ผ๋ฏธํฐ ์ฒ๋ฆฌ ๋ฉ์๋
1. getParameter(name)
์ง์ ๋ฌธ์์ด๋ก ๋์ด์จ ๊ฐ์ ํ๋์ฉ ์ถ์ถํ ๋ ์ฌ์ฉํ๋ค. name์ด ์ค๋ณต๋์ง ์๊ณ ์ ์ผํ๊ฒ ํ๋๋ง ๋์ด์ฌ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ค. ๋ฆฌํดํ์ ์ด ๋ฌธ์์ด์ด๊ธฐ ๋๋ฌธ์ ํผ์์ ์ซ์๋ฅผ ์ ๋ ฅํ๋๋ผ๋ ์ด๊ฑธ๋ก ์ถ์ถํ๋ฉด ๊ณ์ฐ ๋ถ๊ฐ๋ฅํ ์คํธ๋ง ํ์ ์ด ๋๋ค. ๋ฐ๋ผ์ ์ซ์๋ฅผ ์ถ์ถํ ํ์ ๋ฌธ์์ด์ ์ซ์๋ก ๋ฐ๊ฟ์ฃผ๋ Integer.parseInt() ์์ ์ด ์ถ๊ฐ๋ก ํ์ํ๋ค.
<h1>๋ก๊ทธ์ธํผ</h1> <form action="LoginServlet" method="post"> ์์ด๋:<input type="text" name="userid"><br> ๋น๋ฐ๋ฒํธ:<input type="text" name="passwd"><br> <input type="submit" value="๋ก๊ทธ์ธ"> </form>
ํผ ๋ฐ์ดํฐ๋ฅผ ๋ก๊ทธ์ธ์๋ธ๋ฆฟ ํ์ด์ง์ ํฌ์คํธ ๋ฐฉ์์ผ๋ก ๋ณด๋ธ๋ค.
@WebServlet("/LoginServlet") public class LoginServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("doGet"); //post ํ๊ธ์ฒ๋ฆฌ request.setCharacterEncoding("utf-8"); //์์ฒญ์์ ==> ํ๋ผ๋ฏธํฐ ์ป๊ธฐ(ํด๋ผ์ด์ธํธ์์ ์จ ๋ฐ์ดํฐ๋ฅผ request์์ name์ ์ด์ฉํ์ฌ ๊ฐ์ ํ์ฑ) String userid = request.getParameter("userid"); String passwd = request.getParameter("passwd"); System.out.println(userid+"\t"+passwd); //์๋ต์ฒ๋ฆฌ //๋ธ๋ผ์ฐ์ ์ ๋ณด์ฌ์ค ๋ด์ฉ response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.print("<html><body>"); out.print("์ด๋ฆ์:"+userid+"<br>"); out.print("๋์ด๋:"+passwd); out.print("</body></html>"); }
ํผ์์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด์ค๋ ์ถ์ถ์์ ์ ํ์ฑํ๋ค๊ณ ๋ถ๋ฅธ๋ค. ์ง์๋ฌธ์์ด์ input์ ์ง์ ํ ๋ค์์ผ๋ก ๊บผ๋ด์ค๋ฉด์ ์์ฒญ์์ฒ๋ฆฌ๋ฅผ ์์ํ๋ค. ๋ณ์์ ํ ๋นํ ๋ค ๋ธ๋ผ์ฐ์ ์ ๋ณด์ฌ์ค ๋ด์ฉ์ ์๋ต์ฒ๋ฆฌํ๋ค. ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋ฐ์ ๋ฐ์ดํฐ๊ฐ ์์ ๊ฒฝ์ฐ ๋ณ์๊ฐ์ null๋ก ์ถ๋ ฅ๋๋ค.
2. getParameterValues(name)
<h1>ํผ ์ค์ต</h1> <h3>์ข์ํ๋ ๊ณผ์ผ ์ ํ</h3> <form action="TestServlet" method="get"> ์ฌ๊ณผ:<input type="checkbox" name="fruit" value="apple"><br> ๋ฐ๋๋:<input type="checkbox" name="fruit" value="banana"><br> ์๋ฐ:<input type="checkbox" name="fruit" value="watermelon"><br> <input type="submit" value="์ ์ก"> </form>
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); //name์ ํ๋๊ณ value๊ฐ ์ฌ๋ฌ๊ฐ์ธ ๊ฒฝ์ฐ, ์ฌ๋ฌ๊ฐ ๊ฒฐ๊ณผ๋ฅผ String[]๋ก ๋ฆฌํด String [] fruits = request.getParameterValues("fruit"); for (String s : fruits) { System.out.println(s); } }
์ฒดํฌ๋ฐ์ค๊ฐ์ ๊ฒฝ์ฐ name์ value๋ฅผ ์คํธ๋งํ์ ๋ฐฐ์ด๋ก ๋ฝ์์จ๋ค. ๊ฐ์ ์ด๋ฆ์ผ๋ก ์ฌ๋ฌ๊ฐ์ ๊ฐ์ด ์ ๋ฌ๋๊ธฐ ๋๋ฌธ์ ํ๋ฒ์ ๋ชจ๋ ๊ฐ์ ์ถ์ถํ์ฌ ์คํธ๋งํ์ ๋ฐฐ์ด๋ก ๋ฐ๋๋ค. ๋ค์ค์ ํ๋๋ ์ ๋ ฅ์์๊ฐ์ ์ถ์ถํ ๋ ์ฌ์ฉํ๋ค.
์ ์ฝ๋๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ์ง์๋ฌธ์์ด ์ค name์ด ํ๋ฃป์ธ ๋ชจ๋ ๊ฐ์ ์ฐพ์์์ ์คํธ๋ง ๋ฐฐ์ด๋ก ๋ฐํํ๊ณ ๋ณ์์ ์ ์ฅํ๊ณ ์๋ค. ์ด ๋ฐฐ์ด ์์ ์๋ ๋ชจ๋ ๊ฐ์ ์ถ๋ ฅํ ๋ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๋ค.
3. getParameterNames
Enumerationํ์ ์ผ๋ก name๋ค๋ง ์ป์ด์จ๋ค. Enumeration์ ์์์ ์ ๊ทผํ ๋ ์ธ๋ฑ์ค๋ ํค๊ฐ ์๋ ์ปค์ ๊ฐ๋ ์ผ๋ก ์ ๊ทผํ๋ค. ์ปค์์ ํ์ฌ์์น ๋ค์์ ์์๊ฐ ์๋์ง ํ์ธํ๊ณ ์์ผ๋ฉด ์์๋ฅผ ๋ฐํํด์ฃผ๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค. hasMoreElements(), nextElement() ๋ฉ์๋.
<h1>๋ก๊ทธ์ธ ํ๋ฉด</h1> <form action="LoginServlet" method="post"> ์์ด๋:<input type="text" name="userid"><br> ๋น๋ฐ๋ฒํธ:<input type="text" name="passwd"><br> <input type="submit" value="๋ก๊ทธ์ธ"> </form>
public class LoginServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //post ํ๊ธ์ฒ๋ฆฌ request.setCharacterEncoding("utf-8"); //ํ๋ผ๋ฏธํฐ์ ํค(name)๋ง ์ป๊ธฐ Enumeration<String> keys = request.getParameterNames(); //์๋ต์ฒ๋ฆฌ response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.print("<html><body>"); while (keys.hasMoreElements()) { String key = (String) keys.nextElement(); String value = request.getParameter(key); out.print(key+"="+value+"<br>"); } out.print("</body></html>"); }
ํ์ฑํ ๋ฐ์ดํฐ๋ฅผ Enumeration ํ์ ์ keys ๋ณ์์ ๋ด๊ณ Enumeration ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด ์ถ๋ ฅํ๋ค.
4. getParameterMap
<h1>๋ก๊ทธ์ธํผ</h1> <form action="LoginServlet" method="post"> ์์ด๋:<input type="text" name="userid"><br> ๋น๋ฐ๋ฒํธ:<input type="text" name="passwd"><br> <input type="checkbox" name="fruit" value="์ฌ๊ณผ">์ฌ๊ณผ <input type="checkbox" name="fruit" value="๋ฐฐ">๋ฐฐ <input type="submit" value="๋ก๊ทธ์ธ"> </form>
public class LoginServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("doGet"); request.setCharacterEncoding("utf-8"); //mapํํ๋ก ํ๋ผ๋ฏธํฐ ์ป๊ธฐ Map<String, String[]> map = request.getParameterMap(); //ํค ๋ฐธ๋ฅ๋ฅผ ๋งต์ผ๋ก ๋ฆฌํด //์๋ต์ฒ๋ฆฌ response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.print("<html><body>"); Set<String> keys = map.keySet(); //keySet()์ด์ฉ key์ ์ฒด๋ฅผ set์ผ๋ก ๋ฆฌํด for (String key : keys) { //keyset ์ ์ฒด์์ ํ๋์ ํค๋ฅผ ๊บผ๋ด๊ธฐ String [] values = map.get(key); //๋งต์์ key๋ฅผ ์ด์ฉํด value๋ก ๊บผ๋ด์ String mesg = ""; //์ถ๋ ฅ๋ฌธ ์์ฑ์ฉ ๋ณ์ for(String v : values) { mesg += v; } out.print(key+"="+mesg+"<br>"); } out.print("</body></html>"); }
์ง์๋ฌธ์์ด์ ํ๊บผ๋ฒ์ Map ํ์ ํค-๋ฐธ๋ฅ ์์ผ๋ก ์ป์ด์์ map ๋ณ์์ ์ ์ฅํ๋ค. ํค๊ฐ์๋ ์ธํ ์์ฑ์ name์ด ์ฌ์ฉ๋๊ณ ์๊ณ , ๋ฐธ๋ฅ์ ๊ทธ ์ธํ์ ๋ค์ด์จ ๋ฐธ๋ฅ๊ฐ์ด ์ฌ์ฉ๋๋ค. ์ด๊ฒ ๋งต์ผ๋ก ํ ์ง์ด ๋๊ณ ์๋ค. ๋งต์ ์ ๋๋ฆญ ํ์ ์ ๋ณด๋ฉด value๋ ๋ฐฐ์ด๋ก ๋ฐ๊ณ ์๋ค. value๋ ์ค๋ณต์ ์ฅํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
Map์์ ํค๊ฐ๋ง ์ ์ฒด ์ถ๋ ฅํ๊ณ ์ถ์ ๋
Set keySet()
๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ํค๋ฅผ Setํ์ ์ผ๋ก ๋ฐํํ๋ค. keySet()์ Map์ ํค๋ง ๋ฝ์์ ๋ฐ๋ณต๋ฌธ ๋๋ฆฌ๋ ค๊ณ ์ฌ์ฉํ๋ ๋๊ตฌ ๋ฉ์๋์ผ ๋ฟ Set์ผ๋ก ํ๋ณํํ๋ ๊ฒ ์๋๋ค.ํค๊ฐ๋ค์ ๋ฐ๋ณต๋ฌธ ๋๋ฆฌ๋ฉด์ ํค์ ํด๋นํ๋ value๋ฅผ ํ๋์ฉ ๊บผ๋ด์จ ๋ค values๋ผ๋ ๋ฐฐ์ด์ ์ ์ฅํ๋ค. ๊ทธ๋ฐ ๋ค์ ์ด ๋ฐฐ์ด์ ์์๋ค์ ๋ฐ๋ณต๋ฌธ ๋๋ ค์ ๋ฉ์ธ์ง๋ก ์ถ๋ ฅํ๋ค.
์์ฒญ์ฒ๋ฆฌ ์ฐ์ต 1
<form action="member" method="post"> ์ด๋ฆ<input type="text" name="username"><br> ์ฃผ๋ฏผ๋ฒํธ<input type="text" name="ssn"><br> ์ทจ๋ฏธ:<br> ์ผ๊ตฌ:<input type="checkbox" name="hobby" value="์ผ๊ตฌ"><br> ๋๊ตฌ:<input type="checkbox" name="hobby" value="๋๊ตฌ"><br> ์ถ๊ตฌ:<input type="checkbox" name="hobby" value="์ถ๊ตฌ"><br> ๊ฒฐํผ:<br> ๋ฏธํผ:<input type="radio" name="marry" value="๋ฏธํผ"> ๊ธฐํผ:<input type="radio" name="marry" value="๊ธฐํผ"> <input type="submit" value="๊ฐ์ "> </form>
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); String username = request.getParameter("username"); String ssn = request.getParameter("ssn"); String gender = (ssn.substring(7,8)).equals("1")?"๋จ์":"์ฌ์"; String [] hobby = request.getParameterValues("hobby"); String mesg = ""; for (String h : hobby) { mesg += h + " "; } String marry = request.getParameter("marry"); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.print("<html><body>"); String my = "์ด๋ฆ์ "+username+"<br>"; my += "์ฑ๋ณ์ "+gender+"<br>"; my += "์ทจ๋ฏธ๋ "+ mesg +"<br>"; my += "๊ฒฐํผ ์ํ๋ "+ marry +"์ ๋๋ค"; out.print(my); out.print("</body></html>"); }
substring(์์, ๋)๋ ๋ฌธ์์ด์ ์์์์น๋ถํฐ ๋์์น ์ ๊น์ง์ ๋ด์ฉ์ ๋ฝ์๋ด๋ ๋ฉ์๋์ด๋ค.
์์ฒญ์ฒ๋ฆฌ ์ฐ์ต 2
<body> <b>[ ํฐ์ผ ์๋งค ์ ๋ณด ์ ๋ ฅ ]</b> <hr /> [ ํฐ์ผ ๊ตฌ๋งค์ผ ๊ธฐ์ค : ๋ฏธ์ฑ๋ ์ - 19์ธ ๋ฏธ๋ง, ๊ฒฝ๋ก์ : ๋ง 60์ธ ์ด์] <form action="reserveTicket" method="post"> <table border="1"> <tr> <th>๊ตฌ๋งค๊ด๋ จ์๋ด</th> <td>์๋ ์์ผ์ ๊ธฐ์ค์ผ๋ก ๊ตฌ๋งค์ผ ๊ธฐ์ค ํ ์ธ์จ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.<br> ๋ฏธ์ฑ๋ ์(40%), ์ฑ์ธ(10%),๊ฒฝ๋ก์ฐ๋(50%)</td> </tr> <tr> <th>์๋ ์์ผ</th> <td><input type="text" name="birthday"></input> [ ์ ๋ ฅ ์ :2015/01/05 ]</td> </tr> <tr> <th>ํฐ์ผ์ ํ</th> <td><input type="radio" name="type" value="20000" />์ผ๋ฐ(20,000) <input type="radio" name="type" value="30000" />๋ก์ด(30,000) <input type="radio" name="type" value="50000" />VIP(50,000)</td> </tr> <tr> <th colspan="2"> <input type="submit" value="์์ฝํ๊ธฐ"></input> <input type="reset" value="๋ค์์ ๋ ฅ"></input> </th> </tr> </table> </form> </body>
@WebServlet("/reserveTicket") public class ReserveTicketServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String birthday=request.getParameter("birthday"); Calendar cal = Calendar.getInstance(); int price=Integer.parseInt(request.getParameter("type")); //๊ฐ๊ฒฉ int age=cal.get(Calendar.YEAR) - Integer.parseInt(birthday.substring(0, 4)) ; //๋์ด๊ตฌํ๊ธฐ response.setContentType("text/html;charset=utf-8"); PrintWriter out=response.getWriter(); out.println("<html><head></head><body>"); out.println("<b>์ ๋ ฅํ ์๋ ์์ผ : "+ birthday+", ์ ํํ ํฐ์ผ : "+price+"</b><br/>"); String [] grades={"๋ฏธ์ฑ๋ ์", "์ฑ์ธ", "๊ฒฝ๋ก์ฐ๋"}; //ํ๋ฉด์ ์ถ๋ ฅํ ๋ฌธ์ฅ ๋ฐฐ์ด๋ก ๊ด๋ฆฌ int grade=0; //๋ฑ๊ธ์ ์ฅ ๋ณ์(๋ฐฐ์ด์ ์ธ๋ฑ์ค๊ฐ์ผ๋ก ์ฌ์ฉ) if(age<19){ price-=price*0.4; }else if(age <60){ grade=1; price-=price*0.1; }else{ grade=2; price-=price*0.6; } out.println("๋์ด : "+age+"์ธ, ๋ฑ๊ธ : "+grades[grade]+", ํ ์ธ ์ ์ฉ ๊ธ์ก : "+price+"์"); out.println("</body></html>"); } }
๐ NEXT : ์๋ธ๋ฆฟ ์์ฒญ, ์๋ต์ฒ๋ฆฌ ๋ฌธ์ ์ฐ์ตํ๊ธฐ
๋ฐ์ํ'JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํ๋ง ์ปจํ ์ด๋ ์์กด์ฑ ์ฃผ์ - ์์ฑ์, setter๋ฉ์๋ ์ฌ์ฉ (0) 2020.11.08 ์คํ๋ง ํ๋ ์์ํฌ STS3 ์ค์น, ๊ฐ๋ฐํ๊ฒฝ ์ค์ (0) 2020.10.21 ํด๋ผ์ด์ธํธ-์๋ฒ ๊ตฌ์กฐ์ ์๋ธ๋ฆฟ Servlet (0) 2020.09.18 ์ดํด๋ฆฝ์ค tern ์๋ฐ์คํฌ๋ฆฝํธ ์๋์์ฑ ํ๋ฌ๊ทธ์ธ ์ค์ (0) 2020.09.17 JAVA ์๋ฐ Eclipse jee, ํฐ์บฃ์๋ฒ ํ๊ฒฝ์ค์ (0) 2020.08.26