2021.1.4์ ๊ธฐ๋ก
- ํ๋ฃจ ์ ๋ฆฌ -
- SVN ํ์ ๊ด๋ฆฌ ๋ชจ๋ธ ๊ฐ์
- Servlet ๊ฐ์
- ์ค๋ ๊ณต๋ถ ๋ด์ฉ -
ํ์ ๊ด๋ฆฌ ์๋ฒ(SVN)
- ์์ ํ๋ ํ์ผ์ด ์ค๋ณต๋๋ฉด ์๋จ (๊ณ์ ์ปค๋ฎค๋์ผ์ด์ )
- ๋กค๋ฐฑ์ด ์์ผ๋ฏ๋ก ๋ฐฑ์ ์ ์งํ์ผ๋ก ์ ์ฅ์ ์์๋ก ํด์ผ๋๋ค.
- ํ๋ก์ ํธ ์ ๊ฑฐํ๊ณ ๋ค์ ์ฒดํฌ์์ํด์ผ.. (์ถฉ๋ ์ผ์ด๋๋๊น)
- ๋น๋ฐ๋ฒํธ ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๊ฐ๋ค. ํ๋ช ์ฉ ๊ณจ๋ผ์ ์ฐ๋ฉด ๋จ semi-oneํ,
- URL : https://itwill.xyz/svn/semi-one
- ์์ด๋ ๋น๋ฐ๋ฒํธ๋ก ๋ก๊ทธ์ธ ์ ๊ทผ ๊ฐ๋ฅ
- ์์ ์ซ์๋ ์์ ํ์ ๋ฆฌ๋น์ ๋๋ฒ
- ์ ๋ฐ์ดํธ ์ปค๋ฐ ๊ณ์ ํด์ค์ผ ํจ
- ๋๊ฐ์ ํ์ผ์ ์์ ํ๋ฉด ์๋จ,
- ๋ด๊ฐ ์์ ํ ํ์ผ์ด ์๋ฒ์ ์์ด์ผ ์ปค๋ฐ์ด ๋๋๋ฐ ๋ค๋ฅธ์ ๊ฐ ์ปค๋ฐ ๋จผ์ ํ๋ฉด ๋ฆฌ๋น์ ๋๋ฒ๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ปค๋ฐ ์์ฒด๊ฐ ์๋๋ค.
- ๊ฐ๋จํ 1๊ฐ ์ถฉ๋๋ ๋ : ์ฑํฌ๋ก๋์ด์ฆ ํผ์คํํฐ๋ธ์์ ์ฐํด๋ฆญํ๊ณ ์ค๋ฒ๋ผ์ด๋ ์ปค๋ฐ ํน์ ๋ด๊ฑฐ ๋ฌด์ํ๊ณ ์ค๋ฒ๋ผ์ด๋ ์ ๋ฐ์ดํธ (๋ฌด์กฐ๊ฑด ๋ฐฑ์ ) -> ๋ฉ์ดํฌ ๋จธ์ง๋ผ๋ ๋ฐฉ๋ฒ๋ ์์
Servlet (server + let)
- ์๋ธ๋ฆฟ(์น์์ ์คํ๋๋ ํ๋ก๊ทธ๋จ
--- ์๋ธ๋ฆฟ ํด๋์ค ์์ฑ ๋ฐฉ๋ฒ ---
1. HttpServlet ํด๋์ค๋ฅผ ์์๋ฐ์ ์์ํด๋์ค ์์ฑ - ์๋ธ๋ฆฟ ํด๋์ค
public class HelloServlet extends HttpServlet
2. doGet() ๋๋ doPost() ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ ์ ์ธ
=> ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ์ ์ฒ๋ฆฌ๊ฒฐ๊ณผ(HTML)๋ฅผ ์์ฑํ๊ธฐ ์ํ ๋ฉ์๋ - WAS(Web Application Server)์ ์ํด ์๋ ํธ์ถ
=> doGet() : ํด๋ผ์ด์ธํธ๊ฐ GET ๋ฐฉ์์ผ๋ก ์์ฒญํ ๊ฒฝ์ฐ ํธ์ถ๋๋ ๋ฉ์๋
=> doPost() : ํด๋ผ์ด์ธํธ๊ฐ POST ๋ฐฉ์์ผ๋ก ์์ฒญํ ๊ฒฝ์ฐ ํธ์ถ๋๋ ๋ฉ์๋
> doGet() ๋๋ doPost() ๋ฉ์๋ ๋์ service() ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ํ๋ ๊ฒฝ์ฐ๋ ์์.
=> service() : ํด๋ผ์ด์ธํธ์ ๋ชจ๋ ์์ฒญ์ ์ํด ํธ์ถ๋๋ ๋ฉ์๋
=> doGet() ๋๋ doPost() ๋ฉ์๋๋ณด๋ค service() ๋ฉ์๋์ ํธ์ถ ์ฐ์ ์์๊ฐ ๋๊ฒ ์ค์
WAS์ ์ํด ๋ฉ์๋๊ฐ ํธ์ถ๋ ๋ HttpServletRequest ์ธ์คํด์ค์ HttpServletResponse ์ธ์คํด์ค๊ฐ
๋งค๊ฐ๋ณ์์ ์๋์ผ๋ก ์ ๋ฌ๋์ด ์ ์ฅ
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
3. ํด๋ผ์ด์ธํธ์๊ฒ ์๋ตํ ๋ฌธ์(ํ์ผ)์ ํ์(MimeType) ์ค์ (๋ณ๊ฒฝ)
ํ์)HttpServletResponse.setContentType(String mimeType[;charset=encoding])
=> ๋ฌธ์ ํ์์ผ๋ก ์๋ตํ ๊ฒฝ์ฐ ๋ฌธ์์ ์บ๋ฆญํฐ์
(CharacterSet : ๋ฌธ์ํ์ - ์ธ์ฝ๋ฉ) ์ค์
=> ๊ธฐ๋ณธ ์๋ต ๋ฌธ์ ํ์ : text/html, ์บ๋ฆญํฐ์
: ISO-8859-1(์์ ๋ฝ์ด)
response.setContentType("text/html;charset=utf-8");
// HTML ๋ฌธ์๋ฅผ UTF-8๋ก ์ค์
4.ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ํด ์ฒ๋ฆฌ ๊ฒฐ๊ณผ(์๋ต)๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ถ๋ ฅ์คํธ๋ฆผ์ ๋ฐํ๋ฐ์ ์ ์ฅ
ํ์)HttpServletResponse.getOutputStram() : ์์ ๋ฐ์ดํ(1Byte)๋ฅผ ์ ๋ฌํ ์ ์๋ ์ถ๋ ฅ
์คํธ๋ฆผ(ServeltOutputStream)์ ๋ฐํํ๋ ๋ฉ์๋ => ๊ทธ๋ฆผ, ์ํฅ, ์์ ํ์ผ๋ฑ์ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ตํ๊ธฐ ์ํ ๊ฒฐ๊ณผ๋ก ๋ง๋ค๊ธฐ ์ํ ์ถ๋ ฅ์คํธ๋ฆผ
ํ์)HttpServletResponse.getWriter() : ์ธ์ฝ๋ฉ ์ฒ๋ฆฌ๋ ๋ฌธ์ ๋ฐ์ดํ(2Byte)๋ฅผ ์ ๋ฌํ ์ ์๋
์ถ๋ ฅ์คํธ๋ฆผ(PrintWriter)์ ๋ฐํํ๋ ๋ฉ์๋ => PlanText, HTML, XML ํ์ผ(๋ฌธ์)๋ฑ์ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ตํ๊ธฐ ์ํ ๊ฒฐ๊ณผ๋ก ๋ง๋ค๊ธฐ ์ํ ์ถ๋ ฅ์คํธ๋ฆผ
PrintWriter out=response.getWriter();
// ๋ฌธ์ ๋ฐ์ดํ ์ถ๋ ฅ ์คํธ๋ฆผ์ PrintWriterํ์
์ผ๋ก ์ ์ธ ๋ out์ ๋ฃ์ด ์ฌ์ฉ ๊ฐ๋ฅ
5. ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฌธ์(ํ์ผ)๋ก ์์ฑ - ์๋ต
=> ์ถ๋ ฅ์คํธ๋ฆผ์ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฌํ๋ฉด ๋ฌธ์(ํ์ผ) ์์ฑ
out.println("<!DOCTYPE html>");//์ถ๋ ฅ์คํธ๋ฆผ์ผ๋ก ๋ฌธ์์ด์ ์ ๋ฌํ๋ ๋ฉ์๋ ํธ์ถ
out.println("<html>");
out.println("<head>");
out.println("<meta charset='utf-8'>");
out.println("<title>Servlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>์๋ธ๋ฆฟ(Servlet)</h1>");
out.println("<hr>");
out.println("<p>Hello, Servlet!!!</p>");
out.println("</body>");
out.println("</html>");
6. ์๋ธ๋ฆฟ ํด๋์ค๋ฅผ ์นํ๋ก๊ทธ๋จ์ผ๋ก ๋ฑ๋กํ์ฌ ์คํ๋๋๋ก ์ค์
=> [web.xml] ํ์ผ์์ ์๋ธ๋ฆฟ ํด๋์ค๋ฅผ ์๋ธ๋ฆฟ์ผ๋ก ๋ฑ๋กํ๊ณ URL ์ฃผ์๋ฅผ ๋งคํ ์ค์
=> ํด๋ผ์ด์ธํธ๊ฐ ๋งคํ๋ URL ์ฃผ์๋ก ์๋ธ๋ฆฟ์ ์์ฒญํ์ฌ WAS๋ ์๋ธ๋ฆฟ ํด๋์ค๋ฅผ ๊ฐ์ฒด๋ก ์์ฑํ๊ณ ์์ฒญ ์ฒ๋ฆฌ ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ์ ์๋ต ๊ฒฐ๊ณผ ์ ๊ณต
- ์ธ๋ฏธ ํํ -
- 7์ ๋์ค์ฝ๋ ํ์ ์ฌ์ดํธ ๋ณ๋ณต ์์ (๋ชฉ์์ผ๊น์ง ๊น๋ํ ์ฌ์ดํธ๋ก ํฌ๋กค๋ง ํ ์ํฌํธ๊น์ง)
- ๋ฒ์ ์ธ์ฝ๋ฉ ๋ฐฉ์ : UTF-8 ๋ฐฉ์์ผ๋ก ํต์ผ!
- SVN ์ปค๋ฐ ์ถฉ๋ ์ผ์ผํค๊ธฐ (2, 3๋ฒ์งธ ๊ฑด๋๋ฐ๊ณ ์ปค๋ฐํ ์ ์ถฉ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ ์ง๋ฌธ)
- ์คํฐ๋ ๋ด์ฉ ๋ฐ ๊ฒฐ๊ณผ -
- web.xml ํ์ผ์์ <servlet-class> ์๋ฆฌ๋จผํธ์ ํ ์คํธ๋ ํจํค์ง๊ฐ ํฌํจ๋ ์๋ธ๋ฆฟ ํด๋์ค๋ช !
- => kr, com, co ๋ ๊ท์น!!
- URL ๋งคํ์ด ํ์ํ ์ด์ : ์๋ธ๋ฆฟ์ ์์ฒญํ๊ธฐ ์ํด ์ฃผ์์ ํจํด(์๋ณ์)๋ฅผ ์ค์ ํด์ค์ผ ํจ