๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Spring/Boost Course Web

2.3 Servlet

1) Servlet ์ด๋ž€?

dynamic web ์˜ค๋ฅ˜ 

https://skypotato-note.tistory.com/136

https://stackoverflow.com/questions/4119448/the-import-javax-servlet-cant-be-resolved

 

์ž๋ฐ” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜(Java Web Application)

WAS์— ์„ค์น˜(deploy)๋˜์–ด ๋™์ž‘ํ•˜๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค.

์ž๋ฐ” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” HTML, CSS, ์ด๋ฏธ์ง€, ์ž๋ฐ”๋กœ ์ž‘์„ฑ๋œ ํด๋ž˜์Šค(Servlet๋„ ํฌํ•จ๋จ, package, ์ธํ„ฐํŽ˜์ด์Šค ๋“ฑ), ๊ฐ์ข… ์„ค์ • ํŒŒ์ผ ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

 

์ž๋ฐ” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํด๋” ๊ตฌ์กฐ

 

web.xml ํŒŒ์ผ ์ค‘์š”ํ•˜๋‹ค ์ •๋„

 

์„œ๋ธ”๋ฆฟ์ด๋ž€?

์ž๋ฐ” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตฌ์„ฑ์š”์†Œ ์ค‘ ๋™์ ์ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์—ญํ• ์ž…๋‹ˆ๋‹ค.

์„œ๋ธ”๋ฆฟ์„ ์ •์˜ํ•ด๋ณด๋ฉด ์„œ๋ธ”๋ฆฟ(servlet)์€ WAS์— ๋™์ž‘ํ•˜๋Š” JAVA ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. 

์„œ๋ธ”๋ฆฟ์€ HttpServlet ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ธ”๋ฆฟ๊ณผ JSP๋กœ๋ถ€ํ„ฐ ์ตœ์ƒ์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป์œผ๋ ค๋ฉด, ์›น ํŽ˜์ด์ง€๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ ์ด ๋‘ ๊ฐ€์ง€(JSP, ์„œ๋ธ”๋ฆฟ)๋ฅผ ์กฐํ™”๋กญ๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์›น ํŽ˜์ด์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํ™”๋ฉด(HTML)์€ JSP๋กœ ํ‘œํ˜„ํ•˜๊ณ , ๋ณต์žกํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

(์„œ๋ธ”๋ฆฟ์€ URL ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ)















2) Servlet ์ž‘์„ฑ ๋ฐฉ๋ฒ•

 

๋ฒ„์ „์— ๋”ฐ๋ฅธ Servlet ์ž‘์„ฑ ๋ฐฉ๋ฒ•

 

1. Servlet 3.0 spec ์ด์ƒ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

  • web.xml ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ์ž๋ฐ” ์–ด๋…ธํ…Œ์ด์…˜(annotation)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. @WebServlet("/ten")

  • ์•ž์—์„œ ์‹ค์Šตํ–ˆ๋˜ first web์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.



TenServlet.java

 

@WebServlet("/ten")

public class TenServlet extends HttpServlet {

  private static final long serialVersionUID = 1L;

     

   /**

    * @see HttpServlet#HttpServlet()

    */

   public TenServlet() {

       super();

   }

 

  /**

   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

   */

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    response.setContentType("text/html;charset=utf-8"); // ๋ณด๋‚ด์ค„ ํƒ€์ž… ์ง€์ •

    PrintWriter out = response.getWriter();

    out.print("<h1>1๋ถ€ํ„ฐ 10๊นŒ์ง€ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.<h1>");

    for(int i = 1; i<=10; i++) {

      out.print(i+"<br>");

    }

    out.close();

  }

}








2. Servlet 3.0 spec๋ฏธ๋งŒ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

  • servlet์„ ๋“ฑ๋กํ•  ๋•Œ web.xml ํŒŒ์ผ์— ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.



ํ”„๋กœ์ ํŠธ exam25์—์„œ ํ™•์ธ ๊ฐ€๋Šฅ

 

web.xml

 

<?xml version="1.0" encoding="UTF-8"?>

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://java.sun.com/xml/ns/javaee"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

version="2.5">

   <display-name>exam25</display-name>

   <welcome-file-list>

       <welcome-file>index.html</welcome-file>

       <welcome-file>index.htm</welcome-file>

       <welcome-file>index.jsp</welcome-file>

       <welcome-file>default.html</welcome-file>

       <welcome-file>default.htm</welcome-file>

       <welcome-file>default.jsp</welcome-file>

   </welcome-file-list>

   <servlet> <!-- 3. ์‹ค์ œ servlet ํƒœ๊ทธ ์•ˆ์—์„œ  -->

       <description></description>

       <display-name>TenServlet</display-name>

       <servlet-name>TenServlet</servlet-name> <!-- 3. ๋˜‘๊ฐ™์€ ์ด๋ฆ„์˜ servlet-name์ด ์žˆ๋Š”์ง€ ํ™•์ธ -->

       <servlet-class>exam.TenServlet</servlet-class> <!-- 4. ๋‚ด๊ฐ€ ์‹ค์ œ๋กœ ์‹คํ–‰ํ•  ์„œ๋ธ”๋ฆฟ์ด ๋ˆ„๊ตฐ์ง€๋ผ๋Š” ์ •๋ณด๋ฅผ ์ฐพ์•„๋‚ด๋Š” ๊ฒƒ -->

   </servlet>

   <servlet-mapping>

       <servlet-name>TenServlet</servlet-name> <!--  -->

       <url-pattern>/Ten</url-pattern> <!-- 1. URL์ด /Ten์ด๋ผ๊ณ  ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์ด URL mapping์—์„œ ์ฐพ์•„๋‚ด๊ณ  ์—ฌ๊ธฐ์—์„œ ์ฐพ์ง€ ๋ชปํ•˜๋Š” 404๋ผ๋Š” ํŽ˜์ด์ง€๊ฐ€ ๋ณด์—ฌ → <!-- ์—ฌ๊ธฐ๋งŒ ๋ฐ”๊พธ๋ฉด ์ฃผ์†Œ๊ฐ’์ด ๋ฐ”๋€œ! -->

   </servlet-mapping>

</web-app>

 

 

3.0 ์ด์ƒ ๋ฒ„์ „์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์ผ๋“ค์„ @์ด ๋Œ€์‹ ํ•ด์คŒ

 

3) Servlet ๋ผ์ดํ”„ ์‚ฌ์ดํด

LifecycleServlet

HttpServlet์˜ 3๊ฐ€์ง€ ๋ฉ”์†Œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ

  • init()

  • service(request, response)

  • destroy()




์ฐธ๊ณ  _ ์›น๋ธŒ๋ผ์šฐ์ € ๋ณด๋Š” ๋ฐฉ๋ฒ• window - web browser -> 0~3 ์„ ํƒ





LifecycleServlet.java

 

@WebServlet("/LifecycleServlet")

public class LifecycleServlet extends HttpServlet {

  private static final long serialVersionUID = 1L;

     

   public LifecycleServlet() {

       System.out.println("LifecycleServlet ์ƒ์„ฑ!!");

   }

 

  public void init(ServletConfig config) throws ServletException {

    System.out.println("init test ํ˜ธ์ถœ!!");

  }

 

  public void destroy() {

    System.out.println("destroy ํ˜ธ์ถœ!!");

  }

 

  @Override

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

      {

    System.out.println("serviceํ˜ธ์ถœ!!");    

  }

  

}

โ€‹

 

Servlet ์ƒ๋ช…์ฃผ๊ธฐ

  • WAS๋Š” ์„œ๋ธ”๋ฆฟ ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

(/* ํ•ด๋‹น url๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ. ์„œ๋ฒ„๋Š” url์„ ๋ฐ›์•„์„œ lifecycle์ด๋ผ๋Š” url ๋งคํ•‘์€ lifecycleservlet์ด๋ผ๋Š” ์ •๋ณด๋ฅผ ์•Œ์•„๋ƒ„. ์ด ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์กด์žฌํ•˜๋Š” ์ง€ ์ฒดํฌ*/)

  •  if (๋ฉ”๋ชจ๋ฆฌ์— ์—†์Œ) {
    - ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆผ (ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž ์‹คํ–‰)
    - init() ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰
    }
    - service()๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰

  • was๊ฐ€ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜, ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ƒˆ๋กญ๊ฒŒ ๊ฐฑ์‹ ๋  ๊ฒฝ์šฐ destroy() ๋ฉ”์†Œ๋“œ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

 

LifeCycleServlet ์ƒ์„ฑ! 

init ํ˜ธ์ถœ!

service ํ˜ธ์ถœ!

service ํ˜ธ์ถœ! (์ƒˆ๋กœ๊ณ ์นจ ์‹œ)

service ํ˜ธ์ถœ! (์ƒˆ๋กœ๊ณ ์นจ ์‹œ)

destroy ํ˜ธ์ถœ! (์„œ๋ธ”๋ฆฟ ์ˆ˜์ •ํ•˜๋ฉด ์ง€๊ธˆ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€ ์žˆ๋Š” ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋  ์ˆ˜ X)












LifecycleServlet.java



package examples;

 

import java.io.IOException;

import java.io.PrintWriter;

 

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 {

  private static final long serialVersionUID = 1L;

     

   public LifecycleServlet() {

       System.out.println("LifecycleServlet ์ƒ์„ฑ!!");

   }

 

  public void init(ServletConfig config) throws ServletException {

    System.out.println("init test ํ˜ธ์ถœ!!");

  }

 

  

  public void destroy() {

    System.out.println("destroy ํ˜ธ์ถœ!!");

  }

 

  @Override

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    response.setContentType("text/html");

    PrintWriter out = response.getWriter();

    out.println("<html>");

    out.println("<head><title>form</title></head>");

    out.println("<body>");

    out.println("<form method='post' action='/firstweb/LifecycleServlet'>");

    out.println("name : <input type='text' name='name'><br>");

    out.println("<input type='submit' value='ok'><br>");                                                

    out.println("</form>");

    out.println("</body>");

    out.println("</html>");

    out.close();

  }

 

  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

// request๋Š” ์š”์ฒญ ์ •๋ณด๋ฅผ ์ถ”์ƒํ™”ํ•ด์„œ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด

    response.setContentType("text/html");

    PrintWriter out = response.getWriter();

    String name = request.getParameter("name");

    out.println("<h1> hello " + name + "</h1>");

    out.close();

  }

 

//  protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//    System.out.println("service ํ˜ธ์ถœ!!");

//  }

//  

}

-์›น ํŽ˜์ด์ง€์˜ ์†Œ์Šค ๋ณด๊ธฐ

<html>

<head><title>form</title></head>

<body>

<form method='post' action='/firstweb/LifecycleServlet'>

<!-- submit์ด๋ผ๋Š” ๋ฒ„ํŠผ์ด ๋ˆŒ๋ ธ์„ ๋•Œ ์ด ์ฃผ์†Œ๋กœ ์š”์ฒญํ•ด์ค˜์š” ์š”์ฒญ์ด ๋“ค์–ด๊ฐˆ ๋•Œ ๋ฉ”์„œ๋“œ๋Š” post๋ผ๋Š” ๊ฐ’์œผ๋กœ ๋„ฃ์–ด์ฃผ์„ธ์š” -->

name : <input type='text' name='name'><br>

<input type='submit' value='ok'><br>

</form>

</body>

</html>

 

 

 

 

service(request, response) ๋ฉ”์†Œ๋“œ

 

๋ถ„๋ช…ํžˆ WAS๋Š” init()์ด๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๋‹ค์Œ service() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์˜ˆ๋งŒ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ doGet()์€ ์–ด๋–ป๊ฒŒ ์‹คํ–‰? 

service()๋ผ๋Š” ๋ฉ”์„œ๋“œ๋Š” ์‹ค์ œ HttpServlet์˜ service()๋ผ๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์ด๋ฏธ ๊ตฌํ˜„์ด ๋˜์–ด์žˆ๋Š” ์ƒํƒœ์—์š”. ๊ทธ๋ž˜์„œ ์„œ๋ธ”๋ฆฟ์˜ ๋ถ€๋ชจ์ธ HttpServlet์˜ service() ๋ฉ”์„œ๋“œ ์‹คํ–‰

๊ทธ๋ ‡๋‹ค๋ฉด HttpServlet์˜ service() ๋ฉ”์„œ๋“œ๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„?

HttpServlet์˜ service๋ฉ”์†Œ๋“œ๋Š” ํ…œํ”Œ๋ฆฟ ๋ฉ”์†Œ๋“œ ํŒจํ„ด์œผ๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด GET์ผ ๊ฒฝ์šฐ์—๋Š” ์ž์‹ ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” doGet(request, response)๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœ

  • ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด Post์ผ ๊ฒฝ์šฐ์—๋Š” ์ž์‹ ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” doPost(request, response)๋ฅผ ํ˜ธ์ถœ

 

helloServlet์—์„œ service() ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œํ•˜์ง€ ์•Š๊ณ  doGet() ๋ฉ”์„œ๋“œ๋งŒ ์˜ค๋ฒ„๋ผ์ด๋“œ ํ•ด๋„ ์•Œ์•„์„œ doGet() ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜์—ˆ๋˜ ๊ฒƒ์ด ์ด ์ด์œ 

 

LifecycleServlet ์ˆ˜์ • ์‹ค์Šต

  • Service(request, response)๋ฉ”์†Œ๋“œ ์ฃผ์„์ฒ˜๋ฆฌ

  • HttpServlet์˜ doGet(request, response)๋ฉ”์†Œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ

  • HttpServlet์˜ doPost(request, response)๋ฉ”์†Œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ

 

 

doGet์€ html. out.println() ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๊ฒƒ๋งŒ ์‘๋‹ต์œผ๋กœ ๋“ค์–ด๊ฐ



4) Request, Response ๊ฐ์ฒด ์ดํ•ดํ•˜๊ธฐ

 

 

์š”์ฒญ๊ณผ ์‘๋‹ต

WAS๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ๋ถ€ํ„ฐ Servlet์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด,

  • ์š”์ฒญํ•  ๋•Œ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ •๋ณด๋ฅผ HttpServletRequest๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

  • ์›น ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์‘๋‹ต์„ ๋ณด๋‚ผ ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•˜์—ฌ HttpServletResponse๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • ์ƒ์„ฑ๋œ HttpServletRequest, HttpServletResponse ๊ฐ์ฒด๋ฅผ ์„œ๋ธ”๋ฆฟ์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

 

HttpServletRequest

  • httpํ”„๋กœํ† ์ฝœ์˜ request์ •๋ณด๋ฅผ ์„œ๋ธ”๋ฆฟ์—๊ฒŒ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ํ—ค๋”์ •๋ณด, ํŒŒ๋ผ๋ฏธํ„ฐ, ์ฟ ํ‚ค, URI, URL ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์ฝ์–ด ๋“ค์ด๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.(์š”์ฒญํ•  ๋•Œ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ •๋ณด๋“ค์„ ๋ชจ๋‘ ๋ฉ”์„œ๋“œ๋กœ ๋‹ด์•„์š”. ์–ด๋–ค ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š๋ƒ ์ด๋Ÿฐ ๋“ฑ๋“ฑ์— ๋Œ€ํ•œ ์ •๋ณด๋“ค๊นŒ์ง€ ๋‹ค ๋‹ด์•„์š”.) 

  • Body์˜ Stream์„ ์ฝ์–ด ๋“ค์ด๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

HttpServletResponse

  • WAS๋Š” ์–ด๋–ค ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ๋ณด๋ƒˆ๋Š”์ง€ ์•Œ๊ณ  ์žˆ๊ณ , ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ต์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•œ HttpServletResponse๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์„œ๋ธ”๋ฆฟ์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

  • ์„œ๋ธ”๋ฆฟ์€ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜์—ฌ content type, ์‘๋‹ต์ฝ”๋“œ, ์‘๋‹ต ๋ฉ”์‹œ์ง€๋“ฑ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.





HeaderServlet.java

/**

* Servlet implementation class HeaderServlet

*/

@WebServlet("/header")

public class HeaderServlet extends HttpServlet {

  private static final long serialVersionUID = 1L;

     

   public HeaderServlet() {

       super();

          }

 

 

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    response.setContentType("text/html");

    PrintWriter out = response.getWriter();

    out.println("<html>");

    out.println("<head><title>form</title></head>");

    out.println("<body>");

 

    //๋ชจ๋“  ํ—ค๋” ์ด๋ฆ„์„ ๋ฌธ์ž์—ด Enumeration ๊ฐ์ฒด๋กœ ๋ฐ˜ํ™˜

    Enumeration<String> headerNames = request.getHeaderNames();

    while(headerNames.hasMoreElements()) {

      String headerName = headerNames.nextElement(); // ํ—ค๋”์˜ name์„ ์•Œ์•„๋‚ด๊ธฐ

      String headerValue = request.getHeader(headerName); // name์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ๋˜ request๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” getHeader()๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ํ—ค๋”์˜ ๊ฐ’ ์ •๋ณด๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์Œ

      out.println(headerName + " : " + headerValue + " <br> ");

    }   

    

    out.println("</body>");

    out.println("</html>");

  }

 

  

  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    doGet(request, response);

  }

 

}



ํŒŒ๋ผ๋ฏธํ„ฐ ์ฝ์–ด ๋“ค์ด๊ธฐ

INPUT ํƒœ๊ทธ ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’๋“ค๋„ ๋˜‘๊ฐ™์ด ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜์–ด์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๋˜‘๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊บผ๋‚ด์„œ ์‚ฌ์šฉ

 

  • URL ์ฃผ์†Œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์ •๋ณด๋ฅผ ์ฝ์–ด ๋“ค์—ฌ ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์— ์ถœ๋ ฅํ•œ๋‹ค.

  •  http://localhost:8080/firstweb/param?name=kim&age=5 (๋ฌผ์Œํ‘œ ๊ธฐ์ค€์œผ๋กœ ๋’ค๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋ผ๊ณ . &๊ฐ€ ๊ธฐ์ค€์ ์œผ๋กœ ๋” ๋งŽ์€ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Œ = ๊ธฐ์ค€์œผ๋กœ ์•ž์€ ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„, ๋’ค๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’ -> ์ฆ‰ ์ด๋ฆ„์€ ๊น€, ๋‚˜์ด๋Š” 5)

  • package name: examples

  • class name: ParameterServlet

  • url mapping:/param



ParameterServlet.java

 

/**

* Servlet implementation class ParameterServlet

*/

@WebServlet("/param")

public class ParameterServlet extends HttpServlet {

  private static final long serialVersionUID = 1L;

     

   /**

    * @see HttpServlet#HttpServlet()

    */

   public ParameterServlet() {

       super();

       // TODO Auto-generated constructor stub

   }

 

  /**

   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

   */

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    response.setContentType("text/html");

    PrintWriter out = response.getWriter();

    out.println("<html>");

    out.println("<head><title>form</title></head>");

    out.println("<body>");

 

    String name = request.getParameter("name");

    String age = request.getParameter("age");

    

    out.println("name : " + name + "<br>");

    out.println("age : " +age + "<br>");

    

    out.println("</body>");

    out.println("</html>");

  }

}

 

 

 

 

 

 

InfoServlet.java

 

/**

* Servlet implementation class InfoServlet

*/

@WebServlet("/info")

public class InfoServlet extends HttpServlet {

  private static final long serialVersionUID = 1L;

     

   /**

    * @see HttpServlet#HttpServlet()

    */

   public InfoServlet() {

       super();

       // TODO Auto-generated constructor stub

   }

 

  /**

   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

   */

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    response.setContentType("text/html");

    PrintWriter out = response.getWriter();

    out.println("<html>");

    out.println("<head><title>info</title></head>");

    out.println("<body>");

 

    String uri = request.getRequestURI(); ๋„๋ฉ”์ธ() ํฌํŠธ ๋ฒˆํ˜ธ ์ดํ•˜

    StringBuffer url = request.getRequestURL(); ์š”์ฒญ ์ฃผ์†Œ ์ „์ฒด

    String contentPath = request.getContextPath(); ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑํ•  ๋•Œ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์— ์šฐ๋ฆฌ contextPath ์ง€์ •ํ•˜๋Š” ๊ทธ ๋ถ€๋ถ„ _ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋งคํ•‘๋œ path _ was ๋‚ด์— ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ต‰์žฅํžˆ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ ๊ทธ ๋•Œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ฐพ์•„๊ฐ€๋Š” ์ด๋ฆ„, ๊ผญ ํ”„๋กœ์ ํŠธ ์ด๋ฆ„๊ณผ ๋˜‘๊ฐ™์ด๊ฐ€ ์•„๋‹ˆ๋ผ ์ง€์ • ๊ฐ€๋Šฅ

    String remoteAddr = request.getRemoteAddr(); ํด๋ผ์ด์–ธํŠธ์˜ ์ฃผ์†Œ ๊ฐ’

ex) ๋กœ์นผ ์ปดํ“จํ„ฐ์—์„œ ์ ‘์†ํ•ด์„œ ๊ฐ’์ด 0:0:0: … ์ด๊ณ   

    .get ํ•ด๋ณด๋ฉด ๊ต‰์žฅํžˆ ๋งŽ์€ ๋ฉ”์„œ๋“œ๋“ค. ํ…Œ์ŠคํŠธํ•˜๊ณ  ์‚ฌ์šฉํ•ด๋ณด์„ธ์š”    

 

    out.println("uri : " + uri + "<br>");

    out.println("url : " + url + "<br>");

    out.println("contentPath : " + contentPath + "<br>");

    out.println("remoteAddr : " + remoteAddr + "<br>");

    

    out.println("</body>");

    out.println("</html>");

  }

}

 

ํ™”๋ฉด์— ์ถœ๋ ฅ๋˜๋Š” ๋‚ด์šฉ

uri : /firstweb/info

url : http://localhost:8080/firstweb/info

contentPath : /firstweb

remoteAddr : 0:0:0:0:0:0:0:1

 

'Spring > Boost Course Web' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

2.6 JSTL & EL  (0) 2020.11.19
2.5 Scope  (0) 2020.11.19
2.4 JSP  (0) 2020.11.19
2.2 ์›น ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ค์ •  (0) 2020.11.19
2.1 Web๊ฐœ๋ฐœ์˜ ์ดํ•ด  (0) 2020.11.19
1.5 JDBC  (0) 2020.11.19