πToday I Learned
Servlet(ex02)
μλΈλ¦Ώ κΈ°μ
- μλ°(λ² μ΄μ€-JDK) + μΉ κ΅¬ν(μΆκ° - *.jar > μνμΉ ν°μΊ£)
- μλ°λ‘ μλΈλ¦Ώ or JSPλ₯Ό ꡬνν μ μλ μλ§μ *.jar νμΌ μ 곡
- μλ²μΈ‘μμ μλΈλ¦Ώκ³Ό JSPλ₯Ό λμνκ² λ§λλ μν
λ°μ΄ν° μ
λ ₯ > (μ μ‘) > λ°μ΄ν° μμ
- λ°μ΄ν° μ
λ ₯ + μ μ‘ > νμ΄μ§
- λ°μ΄ν° μμ νλ‘κ·Έλ¨ > κ²°κ³Ό νμ΄μ§
com.test.servlet
->
Ex02_Send.java : μ
λ ₯ + μ μ‘
Ex02_Receive.java : μμ + μ²λ¦¬
htmlμ name -> serverλ‘ λ³΄λΌ λμ μ΄λ¦μΌλ‘ μ¬μ©λλ€.
Get λ°©μ
- λ§μ μμ λ°μ΄ν°λ₯Ό λ³΄λΌ μ μλ€.
https://naver.com?name=eunha&age=20
QueryString == νλΌλ―Έν°λ€
λ°μ΄ν° μμ΄ κΈΈλ©΄ μλ¦°λ€.
- λ―Όκ°ν μ 보 보λ΄λ©΄ μλλ€.(곡κ°λ¨)
Servlet > JSP > Servlet + JSP
JSP(ex01~ex08)
μ νλ‘μ νΈ μμ±
New > Dynamic Web Project > "JSPTest" > Next > Next > Context root : "jsp" > Generate μ²΄ν¬ O > Finish
Servlet > μλ° λ² μ΄μ€(*.java)
- μ₯μ : μλ°λ₯Ό κ·Έλλ‘ μ¬μ©ν μ μλ€.
- λ¨μ : ν΄λΌμ΄μΈνΈ μ½λλ₯Ό μμ±νκΈ°κ° λΆνΈνλ€. > λ¬Έμμ΄ μ²λ¦¬
JSP > HTML νμ΄μ§ λ² μ΄μ€(*.jsp)
- μ₯μ : HTML κΈ°λ° > ν΄λΌμ΄μΈνΈ μ½λλ₯Ό μμ±νκΈ°κ° μ½λ€. + μΆκ° μλ° μ½λ μμ±
- λ¨μ : μλ° μ½λλ₯Ό μμ±νκΈ°κ° λΆνΈνλ€.
Servlet > (κ°λ° νΈμμ±) > JSP
jsp -> webappμ μμ±νκΈ°
JSP κ΅¬μ± μμ
1. JSP μ§μμ, JSP Directive
- <%@ %>
- page μ§μμ
- include μ§μμ
- taglib μ§μμ
2. μ€ν¬λ¦½νΈ μμ, Scripting Elements
- <% %>
- μ€ν¬λ¦½νλ¦Ώ
- μ΅μ€νλ μ
- μ μΈλΆ
- <jsp:XXX>, <c:XXX>
- κΈ°λ³Έ μ‘μ
νκ·Έ
- νμ₯ μ‘μ
νκ·Έ
- μ¬μ©μ μ μ μ‘μ
νκ·Έ
page μ§μμ
-
"ex01.jsp"
-
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
-
JSP νμ΄μ§μ νμ 첫λ²μ§Έ λΌμΈμ μμΉ
-
1κ° μ΄μ μμ± κ°λ₯
-
JSPμ μ€ννκ²½(JSP 컨ν
μ΄λ == ν°μΊ£)μκ² νμ¬ νμ΄μ§μ μ 보λ₯Ό μλ €μ€λ€.
a. language="java"
- JSP νμ΄μ§μμ μ¬μ©ν μλ² νλ‘κ·Έλλ° μΈμ΄ μ§μ (κ±°μ κ³ μ )
b. contentType="text/html; charset=UTF-8"
- JSP νμ΄μ§ λ΄μ©λ¬Όμ λν κΈ°μ > λΈλΌμ°μ μκ² μ λ¬ν HTML νμ΄μ§
- text/html: MIME Type > HTML λ¬Έμ > λΈλΌμ°μ μκ² μ λ¬
- charset=UTF-8: > HTML λ¬Έμμ μΈμ½λ© > λΈλΌμ°μ μκ² μ λ¬
-> λλ €μ€ νμ΄μ§μ μΈμ½λ©
c. pageEncoding="UTF-8"
- JSP νμ΄μ§ μΈμ½λ©
-> ν΄λΉ JSP λ¬Έμμ μΈμ½λ©
d. import="java.util.Calendar"
- μλ° > import ꡬ문 λμΌ
- ν¨ν€μ§/ν΄λμ€ μ°Έμ‘°
- <%@page import="java.util.Calendar"%>
include μ§μμ
-
"ex02.jsp"
-
<%@ include file="URL" %>
-
μ§μ λ URL > νμ΄μ§(JSP, HTML, Text λ±)λ₯Ό νμ¬ JSP νμ΄μ§μ μΌλΆλ‘ μ¬μ©νλ κΈ°λ₯
-
μ‘°κ° νμ΄μ§
-
<%@ include file="inc/copyright.jsp" %>
μ€ν¬λ¦½νλ¦Ώ + μ΅μ€νλ μ
μ€ν¬λ¦½νλ¦Ώ, Scriptlet
- <% %>
- HTML νμ΄μ§ μμμμ(JSP) Javaλ₯Ό μ¬μ© κ°λ₯νκ² μμμ μ 곡
- <% μλ° μμ %>
μ΅μ€νλ μ
, Expression
- <%= %>
- μλ°μ κ°(λ°μ΄ν°)μ HTML λ¬Έμμ μΆλ ₯νλ μν
- "ex03.jsp"
μ μΈλΆ
- <%! %>
- λ©€λ² λ³μμ λ©€λ² λ©μλλ₯Ό μ μΈνλ μμ
- ν΄λΉ JSP νμ΄μ§ λ΄μμλ§ νΈμΆμ΄ κ°λ₯νλ€.
- μΌλ° μλ° ν΄λμ€λ₯Ό νμ©νλ μΌμ΄ λ λ§λ€.
- "ex05.jsp"
JSP λ΄μ₯ κ°μ²΄, JSP Implicit Object
- κ°λ°μκ° μ§μ μμ±νμ§ μμλ JSP(ν°μΊ£)μ΄ λ―Έλ¦¬ λ§λ€μ΄μ μ 곡νλ κ°μ²΄
- μμ½μ΄ μ 곡
- request, response, session, pageContext,
- out, application,
- config, page, exception λ±
(μ€μ) request, pageContext, session, application
- κ°μ²΄ λ΄λΆμ μ¬μ©μ(κ°λ°μ) λ°μ΄ν°λ₯Ό μ μ₯ν μ μλ 컬λ μ
μ κ°μ§κ³ μλ€.
- Map
- void setAttribute(String key, Object value)
- Object getAttribute(String key)
request κ°μ²΄
- HttpServletRequest
- ν΄λΌμ΄μΈνΈ > (νλ) > μλ²
-
ν΄λΌμ΄μΈνΈμμ μλ²λ‘ μ μ‘ν λ°μ΄ν°λ₯Ό κ°μ Έμ€κΈ°
-
"ex07.jsp" > μ¬μ©μλ‘λΆν° λ°μ΄ν°λ₯Ό μ
λ ₯ + μλ² μ μ‘ (send)
-
"ex07_ok.jsp" > λ°μ΄ν° μμ + κ°κ³΅/μ²λ¦¬ + νΌλλ°± (receive)
-
"ex08.jsp" > λͺ¨λ μ
λ ₯ 컨νΈλ‘€ ν
μ€νΈ(μ‘μμ )
-
"ex08_ok.jsp"
-
ν΄λΌμ΄μΈνΈμμ μλ²λ‘ μ μ‘ν λ°μ΄ν° μΈμ½λ© μ²λ¦¬
-
ν΄λΌμ΄μΈνΈμμ μλ²λ‘ μ μ‘ν λμ μ¬λ¬κ°μ§ κ΄λ ¨ μ 보 κ°μ Έμ€κΈ°
ν΄λΌμ΄μΈνΈ > (λ°μ΄ν°) > μλ²
1. POST
- ν¨ν· λ³Έλ¬Έ(body)μμ λ£μ΄μ μ μ‘
- νλ°° μμ μμ λ£μ΄μ μ μ‘
- μ μ
- μλ°λ₯Ό ν΅ν΄μ λ°μ΄ν°λ₯Ό μ μ‘ > μΈμ½λ©μ΄ μλ°λ₯Ό ν΅ν΄μ μ§ν
- λΈλΌμ°μ (UTF-8) > μΈν°λ·(ISO-8859-1) > ν°μΊ£(UTF-8) > μλ°JSP(UTF-8) => (μΈμ½λ© μ°¨μ΄)
2. GET
- URL λ€μ λΆμ¬μ μ μ‘
- λ겨μ§λ λ°μ΄ν°μ μΈμ½λ©μ URL κ·μΉμ λ°λΌ μΈμ½λ©λλ€.
- ν°μΊ£(UTF-8) λ΄λΉ -> νκΈμ΄ κΉ¨μ§μ§ μλλ€.
λ°μ΄ν° μμ νκΈ°
- String request.getParameter(String key)
POST λ°©μμΌλ‘ λμ΄ μ¨ λ°μ΄ν° μΈμ½λ©
request.setCharacterEncoding("UTF-8"); // νκΈ μκΉ¨μ§. request μ μ μ€μ νκΈ°. postλ§ μ€μ ν΄μ£Όλ©΄ λλ€.
μ
λ ₯ 컨νΈλ‘€
ν
μ€νΈ λ°μ€
- μ
λ ₯O > μ
λ ₯κ° λ°ν
- 컨νΈλ‘€O + μ
λ ₯X > λΉ λ¬Έμμ΄ λ°ν
- 컨νΈλ‘€X (key μ€λ₯) > null λ°ν
μνΈ λ°μ€
νκΈ μ
λ ₯ μλ¨. μμ΄κ° λμ΄κ°. νκΈ λ³΅λΆνλ©΄ νκΈλ‘ λμ΄κ°κΈ΄ν¨. -> νκΈ μλλ€κ³ μκ°ν΄
λ€μ€ ν
μ€νΈ
μ½λμμλ μν°κ° λ§μ§λ§ νλ©΄μμμλ μν° μ²λ¦¬ λͺ»ν΄μ spaceλ‘ λ°λμ΄ μΆλ ₯λ¨. -> μμ ν΄μ£ΌκΈ°
txt3 = txt3.replace("\r\n", "<br>");
μ²΄ν¬ λ°μ€
- value μμ λ
체ν¬O > "on" μ μ‘
체ν¬X > null μ μ‘
- value μμ λ
체ν¬O > value μ μ‘
체ν¬X > null μ μ‘
-> value λ£μ΄μ λ§λ€μ.
μ²΄ν¬ λ°μ€λ€
name 1κ°μΌ λ
String cb5 = request.getParameter("cb5");
- 맨 μ²μ 체ν¬λ κ° νλλ§ λμ¨λ€.
λμΌν nameμ 컨νΈλ‘€μ΄ μ¬λ¬κ° μ μ‘λ λ
String[] cb5 = request.getParameterValues("cb5");
λΌλμ€ λ²νΌ
λ¨μΌ κ°, 미리 checked ν΄λμ΄μ μ ν¨μ±κ²μ¬λ₯Ό νμ§ μλλ€.