TIL 23.10.17

ν™©μ€ν•˜Β·2023λ…„ 10μ›” 16일
0

TIL

λͺ©λ‘ 보기
99/146
post-thumbnail

πŸ“ŒToday I Learned

Servlet(ex02)

μ„œλΈ”λ¦Ώ 기술

  • μžλ°”(베이슀-JDK) + μ›Ή κ΅¬ν˜„(μΆ”κ°€ - *.jar > μ•„νŒŒμΉ˜ ν†°μΊ£)
  • μžλ°”λ‘œ μ„œλΈ”λ¦Ώ or JSPλ₯Ό κ΅¬ν˜„ν•  수 μžˆλŠ” μˆ˜λ§Žμ€ *.jar 파일 제곡
  • μ„œλ²„μΈ‘μ—μ„œ μ„œλΈ”λ¦Ώκ³Ό JSPλ₯Ό λ™μž‘ν•˜κ²Œ λ§Œλ“œλŠ” μ—­ν• 

데이터 μž…λ ₯ > (전솑) > 데이터 μˆ˜μ‹ 

  1. 데이터 μž…λ ₯ + 전솑 > νŽ˜μ΄μ§€
  2. 데이터 μˆ˜μ‹  ν”„λ‘œκ·Έλž¨ > κ²°κ³Ό νŽ˜μ΄μ§€

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

  • <% %>
  • μŠ€ν¬λ¦½ν‹€λ¦Ώ
  • μ΅μŠ€ν”„λ ˆμ…˜
  • μ„ μ–ΈλΆ€

3. μ•‘μ…˜ νƒœκ·Έ, Action tags

  • <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
  • ν΄λΌμ΄μ–ΈνŠΈ > (행동) > μ„œλ²„
  1. ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„λ‘œ μ „μ†‘ν•œ 데이터λ₯Ό κ°€μ Έμ˜€κΈ°

    • "ex07.jsp" > μ‚¬μš©μžλ‘œλΆ€ν„° 데이터λ₯Ό μž…λ ₯ + μ„œλ²„ 전솑 (send)

    • "ex07_ok.jsp" > 데이터 μˆ˜μ‹  + 가곡/처리 + ν”Όλ“œλ°± (receive)

    • "ex08.jsp" > λͺ¨λ“  μž…λ ₯ 컨트둀 ν…ŒμŠ€νŠΈ(μ†‘μˆ˜μ‹ )

    • "ex08_ok.jsp"

  2. ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„λ‘œ μ „μ†‘ν•œ 데이터 인코딩 처리

  3. ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„λ‘œ 전솑할 λ•Œμ˜ μ—¬λŸ¬κ°€μ§€ κ΄€λ ¨ 정보 κ°€μ Έμ˜€κΈ°

ν΄λΌμ΄μ–ΈνŠΈ > (데이터) > μ„œλ²„

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만 μ„€μ •ν•΄μ£Όλ©΄ λœλ‹€.

μž…λ ₯ 컨트둀

ν…μŠ€νŠΈ λ°•μŠ€

  1. μž…λ ₯O > μž…λ ₯κ°’ λ°˜ν™˜
  2. 컨트둀O + μž…λ ₯X > 빈 λ¬Έμžμ—΄ λ°˜ν™˜
  3. 컨트둀X (key 였λ₯˜) > null λ°˜ν™˜

μ•”ν˜Έ λ°•μŠ€

ν•œκΈ€ μž…λ ₯ μ•ˆλ¨. μ˜μ–΄κ°€ λ„˜μ–΄κ°. ν•œκΈ€ λ³΅λΆ™ν•˜λ©΄ ν•œκΈ€λ‘œ λ„˜μ–΄κ°€κΈ΄ν•¨. -> ν•œκΈ€ μ•ˆλœλ‹€κ³  생각해

닀쀑 ν…μŠ€νŠΈ

μ½”λ“œμ—μ„œλŠ” μ—”ν„°κ°€ λ§žμ§€λ§Œ ν™”λ©΄μƒμ—μ„œλŠ” μ—”ν„° 처리 λͺ»ν•΄μ„œ space둜 λ°”λ€Œμ–΄ 좜λ ₯됨. -> μˆ˜μ •ν•΄μ£ΌκΈ°

  • txt3 = txt3.replace("\r\n", "<br>");

체크 λ°•μŠ€

  1. value 없을 λ•Œ
    체크O > "on" 전솑
    체크X > null 전솑
  2. value μžˆμ„ λ•Œ
    체크O > value 전솑
    체크X > null 전솑
    -> value λ„£μ–΄μ„œ λ§Œλ“€μž.

체크 λ°•μŠ€λ“€

name 1개일 λ•Œ

  • String cb5 = request.getParameter("cb5");
  • 맨 처음 체크된 κ°’ ν•˜λ‚˜λ§Œ λ‚˜μ˜¨λ‹€.

λ™μΌν•œ name의 컨트둀이 μ—¬λŸ¬κ°œ 전솑될 λ•Œ

  • String[] cb5 = request.getParameterValues("cb5");

λΌλ””μ˜€ λ²„νŠΌ

단일 κ°’, 미리 checked ν•΄λ‘μ–΄μ„œ μœ νš¨μ„±κ²€μ‚¬λ₯Ό ν•˜μ§€ μ•ŠλŠ”λ‹€.

profile
μ°¨κ·Όμ°¨κ·Ό ν•˜λ‚˜μ”©

0개의 λŒ“κΈ€