๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
front-end

[servlet] servlet ๊ฐœ๋… ์•Œ๊ธฐ, GET/POST, Session

by CodeMango 2023. 2. 6.

๐ŸŽ์„œ๋ธ”๋ฆฟ์ด๋ž€?

 

    ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” 
Servlet ํด๋ž˜์Šค์˜ ๊ตฌํ˜„ ๊ทœ์น™์„ ์ง€ํ‚จ ์ž๋ฐ” ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ 

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ, ์„œ๋ธ”๋ฆฟ์ด๋ž€ ์ž๋ฐ”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ข€๋” ๋“ค์–ด๊ฐ€์„œ ์„ค๋ช…ํ•˜๋ฉด

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์–ด๋– ํ•œ ์š”์ฒญ์„ ํ•˜๋ฉด ๊ทธ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ์ „์†กํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ์—ญํ• ์„ ํ•˜๋Š” ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. 

์˜ˆ๋ฅผ ๋“ค์–ด, ์–ด๋– ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ์„ ํ•˜๋ ค๊ณ  ํ•  ๋•Œ. ์‚ฌ์šฉ์ž๋Š” ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๊ณ , ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค. 

๊ทธ๋•Œ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•˜๊ณ , ๋‹ค์Œ ํŽ˜์ด์ง€๋ฅผ ๋„์›Œ์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” 

๊ฒƒ์ด ๋ฐ”๋กœ ์„œ๋ธ”๋ฆฟ(Servlet)์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์„œ๋ธ”๋ฆฟ์€ ์ž๋ฐ”๋กœ ๊ตฌํ˜„ ๋œ *CGI๋ผ๊ณ  ํ”ํžˆ ๋งํ•ฉ๋‹ˆ๋‹ค.

  1. ์‚ฌ์šฉ์ž(ํด๋ผ์ด์–ธํŠธ)๊ฐ€ URL์„ ์ž…๋ ฅํ•˜๋ฉด HTTP Request๊ฐ€ Servlet Container๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  2. ์š”์ฒญ์„ ์ „์†ก๋ฐ›์€ Servlet Container๋Š” HttpServletRequest, HttpServletResponse ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  3. web.xml์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ URL์ด ์–ด๋Š ์„œ๋ธ”๋ฆฟ์— ๋Œ€ํ•œ ์š”์ฒญ์ธ์ง€ ์ฐพ์Šต๋‹ˆ๋‹ค.
  4. ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ์—์„œ service๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ํ›„ ํด๋ฆฌ์•„์–ธํŠธ์˜ GET, POST์—ฌ๋ถ€์— ๋”ฐ๋ผ doGet() ๋˜๋Š” doPost()๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  5. doGet() or doPost() ๋ฉ”์†Œ๋“œ๋Š” ๋™์  ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•œ ํ›„ HttpServletResponse๊ฐ์ฒด์— ์‘๋‹ต์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  6. ์‘๋‹ต์ด ๋๋‚˜๋ฉด HttpServletRequest, HttpServletResponse ๋‘ ๊ฐ์ฒด๋ฅผ ์†Œ๋ฉธ์‹œํ‚ต๋‹ˆ๋‹ค.

web -> servlet(back) -> servlet or jsp or html

servlet  / JSP

* servlet : - ์ž๋ฐ” ์ฝ”๋“œ ์•ˆ์— java html์„ ๋„ฃ์–ด์„œ ์‚ฌ์šฉํ•œ๋‹ค

              - servlet์€ ๋‚˜์ค‘์— Controller๋กœ ์“ฐ์ด๊ฒŒ ๋œ๋‹ค.
* JSP     : - html ์•ˆ์— ์ž๋ฐ” ์ฝ”๋“œ๊ฐ€ ์„ž์—ฌ์žˆ์Œ - servlet ๋ณด๋‹ค ํŽธํ•ด์งˆ๊ฒƒ!

๋ณดํ†ต ๋ชจ์–‘์€ html ๋˜๋Š” JSP์—์„œ ๊พธ๋ฉฐ์ค€๋‹ค.

 

GET / POST

๐ŸŽˆGET : default๊ฐ’

์˜์–ด Get์ด๋ผ๋Š” ๋‹จ์–ด๋Š” ๊ฐ€์ ธ์˜ค๋‹ค๋ผ๋Š” ๋œป์„ ๊ฐ€์ง„ ๋‹จ์–ด์ธ๋ฐ, ์ด๋ฅผ ํ™œ์šฉํ•ด์„œ ์ดํ•ดํ•˜๋ฉด ์‰ฝ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๋„์„œ๊ด€์—์„œ ์ฑ…์„ ๋นŒ๋ ค ๊ฐ€์ ธ์˜ค๋Š”(GET)์ƒํ™ฉ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ GET์€ ์–ด๋– ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€์„œ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

[ GET๋ฐฉ์‹์˜ ํŠน์ง•]

  • URL์— ๋ณ€์ˆ˜(๋ฐ์ดํ„ฐ)๋ฅผ ํฌํ•จ์‹œ์ผœ ์š”์ฒญํ•œ๋‹ค. (๋ณด์•ˆ: ํ•˜)
  • ๋ฐ์ดํ„ฐ๋ฅผ Header(ํ—ค๋”)์— ํฌํ•จํ•˜์—ฌ ์ „์†กํ•œ๋‹ค.
  • URL์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋…ธ์ถœ๋˜์–ด ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๋‹ค.
  • ์บ์‹ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

๐ŸŽˆPOST

POST๋ผ๋Š” ๋‹จ์–ด๋Š” ๋ถ€์น˜๋‹ค, ์ œ์ถœํ•˜๋‹ค๋ผ๋Š” ๋œป์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์šฐ๋ฆฌ๊ฐ€ ์–ด๋””์— ์„œ๋ฅ˜๋ฅผ ์ œ์ถœํ•˜๋Š” ๊ฒƒ์€ ์šฐ๋ฆฌ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ์ถœํ•˜์—ฌ(POST) ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ POST ๋ฐฉ์‹์€ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ ์ œ์ถœํ•˜์—ฌ ์ถ”๊ฐ€ ๋˜๋Š” ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์˜คํ”ˆํ•˜๋ฉด ์•ˆ๋˜๋Š” ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์“ด๋‹ค.

 

[ POST๋ฐฉ์‹์˜ ํŠน์ง• ]

  • URL์— ๋ณ€์ˆ˜(๋ฐ์ดํ„ฐ)๋ฅผ ๋…ธ์ถœํ•˜์ง€ ์•Š๊ณ  ์š”์ฒญํ•œ๋‹ค. (๋ณด์•ˆ : ์ƒ)
  • ๋ฐ์ดํ„ฐ๋ฅผ Body(๋ฐ”๋””)์— ํฌํ•จ์‹œํ‚จ๋‹ค.
  • URL์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š์•„์„œ ๊ธฐ๋ณธ ๋ณด์•ˆ์€ ๋˜์–ด์žˆ๋‹ค.
  • ์บ์‹ฑํ•  ์ˆ˜ ์—†๋‹ค.

doGet : parameter๋ฅผ openํ•˜๋‹ค.

 

doPost : parameter๋ฅผ close ํ•˜๋‹ค.(๋‹ซ์•„์ค€๋‹ค:๋ณด์•ˆ)

 

์ฐธ์กฐ: 

1. https://mangkyu.tistory.com/14

2. https://coding-factory.tistory.com/742

 

servlet (java) ํ•จ์ˆ˜ ์ •๋ฆฌ

๐Ÿงจrequest.getParameter 

html ์—์„œ jspํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ request.getParameter๋ผ๋Š” ํ•จ์ˆ˜๊ฐ€ ์“ฐ์˜€๋‹ค.

๋‹ค์Œ์€ html ์ˆ˜์—… ์‹œ ํ™œ์šฉํ–ˆ๋˜ ์˜ˆ์ œ ํŒŒ์ผ์ด๋‹ค.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%
// name์œผ๋กœ ๋ฐ›๋Š”๋‹ค : ์•„์ด๋””:<input type="text" name="id" placeholder="์•„์ด๋””์ž…๋ ฅ"><br>
// ๋”ฐ๋ผ์„œ name = id
String id = request.getParameter("id");
// ํŒจ์Šค์›Œ๋“œ:<input type="password" name="pwd"><br>
// ๋”ฐ๋ผ์„œ name = pwd
String password = request.getParameter("pwd");

System.out.println("id:" + id);
System.out.println("password:" + password);

// hidden ๊ฐ’ ๋ฐ›๊ธฐ ์œ„ํ•ด hiddenํƒ€์ž…์˜ name mynum ์ž…๋ ฅ
String mynum = request.getParameter("mynum");

System.out.println("mynum:" + mynum);


%>

servlet์—์„œ๋Š” request๋ฅผ resq ๋กœ ์ถ•์•ฝํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

String name = req.getParameter("name"); //name=name์œผ๋กœ ๋„˜์–ด์˜ด
		String sAge = req.getParameter("age"); //name=age๋กœ ๋„˜์–ด์˜ด
		int age = Integer.parseInt(sAge); //๋‚˜์ด๋Š” ๋ฌธ์ž -> ์ˆซ์ž ํ˜•๋ณ€ํ™˜ ํ•„์š”
		
		resp.setContentType("text/html; charset=utf-8");		
		PrintWriter pw = resp.getWriter();

 

๐ŸงจPrintWriter

PrintWriter๋Š” ๊ฐœ์ฒด์˜ ํ˜•์‹ํ™”๋œ ํ‘œํ˜„์„ ํ…์ŠคํŠธ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์— ์ถœ๋ ฅํ•œ๋‹ค. ์ด ํด๋ž˜์Šค๋Š” PrintStream์— ์žˆ๋Š” ๋ชจ๋“  ์ถœ๋ ฅ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด ์ธ์ฝ”๋”ฉ ๋˜์ง€ ์•Š์€ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์›์‹œ ๋ฐ”์ดํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฉ”์„œ๋“œ๋Š” ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค. ( ์ถœ์ฒ˜ ์ž๋ฐ” api )

 

PrintWriter๋Š” writer๋ฅผ ์ƒ์†๋ฐ›์•„ ์‚ฌ์šฉํ•œ๋‹ค. ๋•Œ๋ฌธ์— writer ๋Œ€๋น„ ๋‹ค์–‘ํ•œ ์ถœ๋ ฅ๋ฐฉ์‹์„ ์ œ๊ณตํ•˜๊ฒŒ ๋œ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ ์–ด๋–ค ๋ฉ”์†Œ๋“œ๋“ค์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.

https://seeminglyjs.tistory.com/296 ์ฐธ์กฐ

 

์ €์žฅ๊ณต๊ฐ„

cookie: ๊ฐ๊ฐ์˜ client์— ์ €์žฅ. 
            Java Script์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
            ์ž๋ฃŒํ˜•(String)
            ex) id, password

session: server ์— ์ €์žฅ๋œ๋‹ค.
            ๊ธฐํ•œ์„ ์„ค์ •

            ์ž๋ฃŒํ˜• : Object๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

            ํ•œ๊ธ€์‚ฌ์šฉ ๊ธˆ์ง€!  

            ๋กœ๊ทธ์ธํ–ˆ๋˜ ์ •๋ณด๋ฅผ ๋ณด๊ด€ํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.
            ๊ณ„์† ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
            ๋งŽ์„์ˆ˜๋ก ์„œ๋ฒ„๊ฐ€ ๋ฌด๊ฑฐ์›Œ์ง„๋‹ค.


            ๋ณด๋‚ด๊ธฐ
            req.setAttribute("๋ฌธ์ž์—ด", object);
            ๊บผ๋‚ด๊ธฐ(object๋ฅผ ํ†ตํ•ด)
            Object obj = req.getAttribute("๋ฌธ์ž์—ด");

            session๋„๋˜‘๊ฐ™์Œ!
            session.setAttribute("๋ฌธ์ž์—ด", object);
            Object obj = session.getAttribute("๋ฌธ์ž์—ด");


cache : server์˜ ์ž„์‹œ์ €์žฅ๊ณต๊ฐ„์— ์ €์žฅ๋œ๋‹ค.

 

@WebServlet(" ") 

web.xml ์„ ํ•œ์ค„๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ธฐ๋Šฅ

web.xml ํŒŒ์ผ์€ <servlet-name>hello</servlet-name>  ๋กœ ์‹œ์ž‘ํ•˜๋Š” ํŒŒ์ผ์ธ๋ฐ, ์„œ๋ฒ„๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์ „์— ์„œ๋ฒ„๋ฅผ ๋™์ž‘์‹œํ‚ค๋Š” ํŒŒ์ผ์ด๋‹ค.(์ดˆ๊ธฐํ™”)

์ด ์•ˆ์— ๋„ฃ์„ hello๋ฅผ @WebServlet(" ") ์•ˆ์— ๋„ฃ์–ด์„œ ๊ทธ ๊ธฐ๋Šฅ์„ ๋Œ€์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์Šคํ”„๋ง์—์„œ๋Š” web.xml ํŒŒ์ผ ์ถ”๊ฐ€ํ•˜๋‹ˆ๊นŒ ๊ธฐ๋Šฅ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์–ด์•ผํ•œ๋‹ค.

 

web.xml ์ถ”๊ฐ€ํ•˜๋Š”๋ฒ• : Generate Deployment Descriptor Stub ํด๋ฆญ

 

์•„๋ž˜์˜ ๊ธด ํŒŒ์ผ ๋‚ด์šฉ์„ ๋‹จ ํ•œ์ค„ @WebServlet("/hello") ๋กœ ๋Œ€์ฒด

//web.xml ํŒŒ์ผ

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
  <display-name>sample01</display-name>

<!-- ์„ค์ • -->
<servlet>
	<servlet-name>hello</servlet-name>
	<servlet-class>sample01.HelloServlet</servlet-class>
</servlet>

<servlet-mapping>
	<servlet-name>hello</servlet-name>
	<url-pattern>/location</url-pattern>
</servlet-mapping>
  
</web-app>



Session

๊ตฌํ˜„ ๊ธฐ๋Šฅ

  • html ํŒŒ์ผ์—์„œ ํด๋ฆญ ์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œ id๋ฅผ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์œผ๋กœ ๋ณด๋‚ด๊ณ , ์„œ๋ธ”๋ฆฟ์—์„œ ์ด๋ฅผ ๋ฐ›์•„์„œ ์„ธ์…˜ ๊ฐ์ฒด์— ์ €์žฅํ•จ
  • ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ธฐ๋Šฅ์— ์‘์šฉ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ์ด๋ฏธ์ง€๋ฅผ ํด๋ฆญํ•  ๋•Œ๋งˆ๋‹ค ํด๋ผ์ด์–ธํŠธ ์ชฝ์—์„œ id ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์„ ๋ณด๋‚ด์„œ ์ด๋ฅผ ์„ธ์…˜ ๊ฐ์ฒด๋กœ ์ƒ์„ฑํ•œ ๋ฐฐ์—ด์— ์ €์žฅํ•˜์—ฌ ์ƒํ’ˆ id๋‹น ํด๋ฆญ์ด๋ฒคํŠธ์˜ ๋ˆ„์  ๊ฐ’์„ ๋ณด์—ฌ์ฃผ๋„๋ก ํ•จ.

https://developer-alle.tistory.com/244

 

[Servlet] Session ๊ฐ์ฒด ์‚ฌ์šฉํ•˜๊ธฐ

Servlet์—์„œ Session ๊ฐ์ฒด ์‚ฌ์šฉํ•˜๊ธฐ ๊ตฌํ˜„ ๊ธฐ๋Šฅ html ํŒŒ์ผ์—์„œ ํด๋ฆญ ์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œ id๋ฅผ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์œผ๋กœ ๋ณด๋‚ด๊ณ , ์„œ๋ธ”๋ฆฟ์—์„œ ์ด๋ฅผ ๋ฐ›์•„์„œ ์„ธ์…˜ ๊ฐ์ฒด์— ์ €์žฅํ•จ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ธฐ๋Šฅ์— ์‘์šฉ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ,

developer-alle.tistory.com

getSession

getSession(false)
* session ์ด ์กด์žฌํ•˜๋ฉด ํ˜„์žฌ HttpSession์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค
* session ์ด ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š”์ง€ ํŒ๋‹จ.
* session ๊ฐ์ฒด๊ฐ€ ์—†์œผ๋ฉด null์„  ๋ฐ˜ํ™˜ํ•œ๋‹ค

getSession(true) = getSession() 
* session ์ด ์กด์žฌํ•˜๋ฉด ํ˜„์žฌ HttpSession์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค
* session ๊ฐ์ฒด๊ฐ€ ์—†์œผ๋ฉด ์ƒˆ๋กœ session์„ ์ƒ์„ฑํ•œ๋‹ค

 


์˜ˆ์ œ1 (sample01)

 web.xml      /       HelloServlet.java          /      index.html     ์„ธ๊ฐ€์ง€ ํŒŒ์ผ์„ ์ค€๋น„ํ•œ๋‹ค.

 

 

 

 

 

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
  <display-name>sample01</display-name>

<!-- ์„ค์ • -->
<servlet>
	<servlet-name>hello</servlet-name>
	<servlet-class>sample01.HelloServlet</servlet-class>
</servlet>

<servlet-mapping>
	<servlet-name>hello</servlet-name>
	<url-pattern>/location</url-pattern>
</servlet-mapping>
  
</web-app>

HelloServlet.java

package sample01;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("HelloServlet doGet");
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("HelloServlet doPost");
	}	
}

index.html

<form action="location" method="get">
	<input type="submit" value="get์ด๋™">
</form>
<br>
<!--  method๋ฐฉ์‹์„ post์œผ๋กœ ํ•˜๋ฉด post๋กœ ๋‚ ๋ผ๊ฐ -->
<form action="location" method="post">
	<input type="submit" value="post์ด๋™">
</form>
<br>
<!--  a ํƒœ๊ทธ๋Š” get์œผ๋กœ ๊ฐ„๋‹ค -->

<a href="location">a tag move</a>
<br><br>
<!--  button ํƒœ๊ทธ๋Š” get์œผ๋กœ ๊ฐ„๋‹ค -->
<!--  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ด๋™ : location.href -->
<button type="button" onclick="move()">JS์ด๋™</button>

<script type="text/javascript">
function move() {
	location.href = "location";
}

์˜ˆ์ œ2 (sample02)

์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ดค์„ ๋•Œ get์œผ๋กœ ๋“ค์–ด์™”์„ ๋•Œ ๋งํฌ๋ฅผ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

 web.xml      /       HelloServlet.java          /    SampleServlet    /   index.html     ๋„ค๊ฐ€์ง€ ํŒŒ์ผ์„ ์ค€๋น„ํ•œ๋‹ค.

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
  <display-name>sample02</display-name>
   <!--  ์ฒซ๋ฒˆ์งธ servlet -->
  <servlet>
  	<servlet-name>hello</servlet-name>
  	<servlet-class>sample02.HelloServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>hello</servlet-name>
  	<url-pattern>/hello</url-pattern>
  </servlet-mapping>
  
  <!--  ๋‘๋ฒˆ์งธ servlet : servlet์€ ๋ฌด์ œํ•œ์œผ๋กœ ๋“ฑ๋ก ๊ฐ€๋Šฅ  -->
  <servlet>
  	<servlet-name>sample</servlet-name>
  	<servlet-class>sample02.SampleServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>sample</servlet-name>
  	<url-pattern>/sample</url-pattern>
  </servlet-mapping>
  
</web-app>

HelloServlet.java

package sample02;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {

	@Override			//          request.getParameter("id") -> JSP
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

		/*
			servlet : ์ž๋ฐ” ์ฝ”๋“œ ์•ˆ์— java html์„ ๋„ฃ์–ด์„œ ์‚ฌ์šฉํ•œ๋‹ค
			JSP : html ์•ˆ์— ์ž๋ฐ” ์ฝ”๋“œ๊ฐ€ ์„ž์—ฌ์žˆ์Œ - servlet ๋ณด๋‹ค ํŽธํ•ด์ง
			
			servlet์€ ๋‚˜์ค‘์— Controller๋กœ ์“ฐ์ธ๋‹ค.

		*/
		
		resp.setContentType("text/html; charset=utf-8");
		
		PrintWriter pw = resp.getWriter();
		
		pw.println("<html>");
		
		pw.println("<head>");
		pw.println("<title>์ œ๋ชฉ์ž…๋‹ˆ๋‹ค</title>");
		pw.println("</head>");
		
		pw.println("<body>");
		
//HelloServlet.java๋กœ ์ด๋™์‹œ ๋ฌธ์žฅ ์ถœ๋ ฅํ•˜๊ธฐ
		pw.println("<h1>Welcome to HelloServlet</h1>");
		pw.println("<p>hello Servlet</p>");
		
//html๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐ€๋Š” ๋ฌธ์žฅ ์ถœ๋ ฅํ•˜๊ธฐ
		pw.println("<a href='index.html'>index.html</a>");
		
		pw.println("</body>");
		
		pw.println("</html>");
		
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

	}
}

SampleServlet.java

package sample02;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class SampleServlet extends HttpServlet{

	@Override 
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

		String name = req.getParameter("name");
		String sAge = req.getParameter("age");
		int age = Integer.parseInt(sAge);
		
		resp.setContentType("text/html; charset=utf-8");		
		PrintWriter pw = resp.getWriter();
		
		pw.println("<html>");
		
		pw.println("<head>");
		pw.println("<title>์ œ๋ชฉ์ž…๋‹ˆ๋‹ค</title>");
		pw.println("</head>");
		
		pw.println("<body>");
		
		pw.println("<p>name:" + name + "</p>");
		pw.println("<p>age:" + age + "</p>");
				
		pw.println("</body>");
		
		pw.println("</html>");
		
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	
	// ํ•œ๊ธ€ ๊นจ์ง€๋Š” ํ˜„์ƒ ๋ฐฉ์ง€ :setCharacterEncoding ์„ ๋ณ€๊ฒฝํ•˜๊ธฐ
		req.setCharacterEncoding("utf-8");
		
	// request.getParameter = req.getParameter		
		String name = req.getParameter("name"); //name=name์œผ๋กœ ๋„˜์–ด์˜ด
		String sAge = req.getParameter("age"); //name=age๋กœ ๋„˜์–ด์˜ด
		int age = Integer.parseInt(sAge); //๋‚˜์ด๋Š” ๋ฌธ์ž -> ์ˆซ์ž ํ˜•๋ณ€ํ™˜ ํ•„์š”
		
		resp.setContentType("text/html; charset=utf-8");		
		PrintWriter pw = resp.getWriter();
		
		pw.println("<html>");
		
		pw.println("<head>");
		pw.println("<title>์ œ๋ชฉ์ž…๋‹ˆ๋‹ค</title>");
		pw.println("</head>");
		
		pw.println("<body>");
		
		pw.println("<p>name:" + name + "</p>");
		pw.println("<p>age:" + age + "</p>");
		
// ์ถœ๋ ฅ๊ฐ’:
// name:๋‚˜๋‚˜
// age:31 
		pw.println("</body>");
		
		pw.println("</html>");
	}
	
}

index.html 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<!--  method๊ฐ’ ์„ค์ • ์•ˆ ํ•˜๋ฉด default ๊ฐ’์€ get -->
<form action="hello" method="get">
	<input type="submit" value="์ด๋™"> <!-- submit -> ๋ฒ„ํŠผ ์ƒ์„ฑ -->
</form>

<br><br>
<!-- name์€ ๊ฐ’ ๋„˜๊ฒจ์ค„๋•Œ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ธ๋‹ค 

id: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ ‘๊ทผํ•  ๋•Œ
name : ๋ฐ์ดํƒ€ ๊ฐ’ ๋„˜๊ฒจ์ค„๋•Œ 
class: css 

-->
<!-- get์œผ๋กœ ์ด๋™ -->
<form action="sample" method="get">
์ด๋ฆ„:<input type="text" name="name"><br>
๋‚˜์ด:<input type="text" name="age"><br><br>
<input type="submit" value="sample get๋กœ ์ด๋™">
</form>
<br>

<!-- post๋กœ ์ด๋™ -->
<form action="sample" method="post">
์ด๋ฆ„:<input type="text" name="name"><br>
๋‚˜์ด:<input type="text" name="age"><br><br>
<input type="submit" value="sample post๋กœ ์ด๋™">
</form>


</body>
</html>

์˜ˆ์ œ3 (sample03)

checkbox์™€ select๋กœ ์„ ํƒ๋œ ๋ฐ์ดํ„ฐ ๋ณด๋‚ด๊ธฐ

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
  <display-name>sample03</display-name>
  
  <servlet>
  	<servlet-name>hello</servlet-name>
  	<servlet-class>sample03.HelloServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>hello</servlet-name>
  	<url-pattern>/hello</url-pattern>
  </servlet-mapping>
  
</web-app>

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<!-- jquery ์‘์šฉ -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
</head>
<body>

<!-- get์ด๋“  post๋“  ์ž˜ ๋„˜์–ด๊ฐ„๋‹ค. -->
<form action="hello" id="frm" method="post">

<h3>์ทจ๋ฏธ</h3>
<input type="checkbox" name="hobby" value="picture">๊ทธ๋ฆผ๊ทธ๋ฆฌ๊ธฐ
<input type="checkbox" name="hobby" value="game">๊ฒŒ์ž„ํ•˜๊ธฐ
<input type="checkbox" name="hobby" value="movie">์˜ํ™”๋ณด๊ธฐ
<br><br>

<h3>์ข‹์•„ํ•˜๋Š” ์‚ฌ์ดํŠธ</h3>
<!--  multiple :์‚ฌ์šฉ์ž๊ฐ€ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์˜ต์…˜์„ ๋™์‹œ์— ์„ ํƒํ•  ์ˆ˜ ์žˆ์Œ-->
<select name="url" multiple="multiple"> 
	<option value="naver">๋„ค์ด๋ฒ„</option>
	<option value="google">๊ตฌ๊ธ€</option>
	<option value="zum">์คŒ</option>
</select>

<button type="button">send</button>

</form>

<!-- jquery ํ™œ์šฉ : ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด form์˜ action์œผ๋กœ ๊ฐ(web: hello๋กœ ๋‚ ์•„๊ฐ„๋‹ค) -->
<script type="text/javascript">
$(document).ready(function(){
	
	$("button").click(function(){
		$("#frm").submit();
		
//์œ„์˜ form์—์„œ action ์„ค์ • ์•ˆ ์คฌ๋‹ค๋ฉด
// $("#frm").attr("action", "hello").submit();  ๋ผ๊ณ  ์“ด๋‹ค.
	});
});
</script>



</body>
</html>

 

HelloServlet.java

package sample03;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doProc(req, resp); // doProc์„ ํ˜ธ์ถœ
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doProc(req, resp); // doProc์„ ํ˜ธ์ถœ
	}
	
// get, post๊ตฌ๋ถ„ ์—†์ด ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ public void๋ฌธ์„ ์“ฐ๊ณ  ์œ„์—์„œ doProc์„ ํ˜ธ์ถœํ•œ๋‹ค.
	public void doProc(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
				
// name์ด hobby์™€ url์ธ ๊ฒƒ์ด ๋„˜์–ด์˜จ๋‹ค. 
// ์—ฌ๋Ÿฌ๊ฐœ ๋„˜์–ด์˜ค๋‹ˆ๊นŒ ๋ฐฐ์—ด ์‚ฌ์šฉํ•œ๋‹ค.
// 2๊ฐœ ์ด์ƒ ๋ฐ์ดํ„ฐ ๋„˜์–ด์™”์„๋•Œ getParameterValues ์‚ฌ์šฉ
		String hobby[] = req.getParameterValues("hobby");
		String url[] = req.getParameterValues("url");
		
		resp.setContentType("text/html; charset=utf-8");
		
		PrintWriter pw = resp.getWriter();
        
// ์›๋ž˜๋Š” servlet์—์„œ ์ด๋Ÿฐ html์ฝ”๋“œ ์‚ฌ์šฉ ๋งŽ์ด ์•ˆํ•จ. ํ™•์ธ์šฉ!
		pw.println("<html>");
		
		pw.println("<head>");
		pw.println("<title>์ œ๋ชฉ์ž…๋‹ˆ๋‹ค</title>");
		pw.println("</head>");
		
		pw.println("<body>");
		
// ์œ„์—์„œ hobby[] ์™€ url[]์„ ๋„˜๊ฒจ๋ฐ›์•˜์œผ๋ฏ€๋กœ for๋ฌธ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
		pw.println("<p><์ทจ๋ฏธ></p>");
		if(hobby != null) {
			for (int i = 0; i < hobby.length; i++) { // 3๋ฒˆ ๋ฐ˜๋ณต
				pw.println("<p>" + hobby[i] + "</p>");
			}
		}
		
		pw.println("<p><์‚ฌ์ดํŠธ></p>");
		if(url != null) {
			for (int i = 0; i < url.length; i++) {
				pw.println("<p>" + url[i] + "</p>");
			}
		}
		
		pw.println("</body>");
		
		pw.println("</html>");
	}
}

์˜ˆ์ œ4 (sample04)

Servlet์—์„œ Servlet์œผ๋กœ ๋ฐ์ดํ„ฐ ์ด๋™ํ•˜๊ธฐ

< servlet์—์„œ servlet์œผ๋กœ ๋„˜๊ธธ๋•Œ ์ฃผ์˜์  >

- ๋„˜๊ฒจ๋ฐ›๋Š” ๊ฐ’์ด ํ•œ๊ธ€์ด๋ผ๋ฉด ์ธ์ฝ”๋”ฉ๋ฐฉ์‹์„ ๋ฐ”๊ฟ”์ค˜์•ผ ํ•œ๋‹ค (encode)

		// ํ•œ๊ธ€์˜ ๊ฒฝ์šฐ๋Š” ์ธ์ฝ”๋”ฉ์„ ์ฒ˜๋ฆฌํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. 
		String ename = URLEncoder.encode(name);
		String eaddress = URLEncoder.encode(address);
        
        resp.sendRedirect("world?name=" + ename + "&age=" + age + "&address=" + eaddress);

๋ฐฉ๋ฒ• 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

๐Ÿงจ๋ฐฉ๋ฒ• 1. response ์†Œ์†์˜ sendRedirect ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

index.html - HelloServlet.java , WorldServlet.java , web.xml ์ด์šฉ

๐Ÿงจ ๋ฐฉ๋ฒ•2.  RequestDispatcher ์†Œ์†์˜ foward(์ „์ง„) ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

index.html - HelloServlet2.java , WorldServlet2.java , dto - Human.java , web.xml ์ด์šฉ

 

- ์‹ค์ œ๋กœ ๋ฐฉ๋ฒ•2๊ฐ€ ์ฃผ๋กœ ์“ฐ์ธ๋‹ค.

- ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ๋•Œ ๋ฐฉ๋ฒ•2๋ฅผ ์“ด๋‹ค.

 

์˜ˆ์ œ4์˜ ๋ฐฉ๋ฒ• 1. response ์†Œ์†์˜ sendRedirect ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

index.html - HelloServlet.java , WorldServlet.java , web.xml ์ด์šฉ

 

index.html 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<!--  form ์ „์†ก : get์„ ํ†ตํ•ด hello๋กœ ์ „์†กํ•˜๊ธฐ-->
<form action="hello" method="get">
์ด๋ฆ„:<input type="text" name="name"><br>
๋‚˜์ด:<input type="text" name="age"><br>
์ฃผ์†Œ:<input type="text" name="address"><br>
<input type="submit" value="์ „์†ก">
</form>

</body>
</html>

 

HelloServlet.java 

package sample04;

import java.io.IOException;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dto.Human;

public class HelloServlet extends HttpServlet{
// ๋ฐฉ๋ฒ• 1. response ์†Œ์†์˜ sendRedirect ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doProc(req, resp); // doProc์„ ํ˜ธ์ถœ
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doProc(req, resp); // doProc์„ ํ˜ธ์ถœ
	}
// get, post๊ตฌ๋ถ„ ์—†์ด ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ public void๋ฌธ์„ ์“ฐ๊ณ  ์œ„์—์„œ doProc์„ ํ˜ธ์ถœํ•œ๋‹ค.	
	public void doProc(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
		System.out.println("HelloServlet doProc()"); // ์ฝ˜์†”์ฐฝ์— ๋ฐ˜ํ™˜
		
// ํ•œ๊ธ€ ๊นจ์ง€๋Š” ํ˜„์ƒ ๋ฐฉ์ง€ :setCharacterEncoding ์„ ๋ณ€๊ฒฝํ•˜๊ธฐ		
		//req.setCharacterEncoding("utf-8");
		
// index๋กœ๋ถ€ํ„ฐ name , age, address ๊ฐ€ ๋„˜์–ด์˜จ๋‹ค.
		String name = req.getParameter("name");
		int age = Integer.parseInt( req.getParameter("age") );
		String address = req.getParameter("address");
		
		System.out.println("name:" + name);
		

// response ์†Œ์†์˜ sendRedirect ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
// ํ•œ๊ธ€์˜ ๊ฒฝ์šฐ๋Š” ์ธ์ฝ”๋”ฉ์„ ์ฒ˜๋ฆฌํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. 
		String ename = URLEncoder.encode(name);
		String eaddress = URLEncoder.encode(address);
		
// sendRedirect : ๋งตํ•‘๋œ world(WorldServlet)๋กœ ์ด๋™	
	resp.sendRedirect("world");	 	
	 
// ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์ด๋™ํ•˜๊ธฐ
		resp.sendRedirect("world?name=" + ename + "&age=" + age + "&address=" + eaddress);
	}	
}

WorldServlet.java 

package sample04;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dto.Human;

public class WorldServlet extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doProc(req, resp); // doProc์„ ํ˜ธ์ถœ
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doProc(req, resp); // doProc์„ ํ˜ธ์ถœ
	} 

// get, post๊ตฌ๋ถ„ ์—†์ด ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ public void๋ฌธ์„ ์“ฐ๊ณ  ์œ„์—์„œ doProc์„ ํ˜ธ์ถœํ•œ๋‹ค.	
	public void doProc(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
	
	// ํ•œ๊ธ€ ๊นจ์ง€๋Š” ํ˜„์ƒ ๋ฐฉ์ง€ :setCharacterEncoding ์„ ๋ณ€๊ฒฝํ•˜๊ธฐ
	//	req.setCharacterEncoding("utf-8"); // ์ฃผ์†Œ ์ด๋ฆ„์ด ๋„˜์–ด์˜ค๋ฏ€๋กœ 
	
		String name = req.getParameter("name");
		int age = Integer.parseInt( req.getParameter("age") );
		String address = req.getParameter("address");
		
		
		// ์ง์„ ํ’€๋‹ค
		Human human = (Human)req.getAttribute("human");
		
		resp.setContentType("text/html; charset=utf-8");
		
		PrintWriter pw = resp.getWriter();
		
		pw.println("<html>");
		
		pw.println("<head>");
		pw.println("<title>World์ž…๋‹ˆ๋‹ค</title>");
		pw.println("</head>");
		
		pw.println("<body>");
		
		pw.println("<h1>World</h1>");
		
		
		pw.println("<p>์ด๋ฆ„:" + name + "</p>");
		pw.println("<p>๋‚˜์ด:" + age + "</p>");
		pw.println("<p>์ฃผ์†Œ:" + address + "</p>");
						

		pw.println("</body>");
		
		pw.println("</html>");
	}
}

web.xml 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
  <display-name>sample04</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>
  
  <!-- hello  -> sample04.HelloServlet -->
  <servlet>
  	<servlet-name>hello</servlet-name>
  	<servlet-class>sample04.HelloServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>hello</servlet-name>
  	<url-pattern>/hello</url-pattern>
  </servlet-mapping>
  
  <!-- world -> sample04.WorldServlet : ์ตœ์ข…์ข…์ฐฉ์ง€ -->
  <servlet>
  	<servlet-name>world</servlet-name>
  	<servlet-class>sample04.WorldServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>world</servlet-name>
  	<url-pattern>/world</url-pattern>
  </servlet-mapping>
  
  
</web-app>

 

์˜ˆ์ œ4์˜ ๋ฐฉ๋ฒ•2.  RequestDispatcher ์†Œ์†์˜ foward(์ „์ง„) ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

index.html - HelloServlet2.java , WorldServlet2.java , dto - Human.java , web.xml ์ด์šฉ

index.html 1๋ฒˆ ๋ฐฉ๋ฒ•๊ณผ ๊ฐ™๋‹ค.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<!--  form ์ „์†ก : get์„ ํ†ตํ•ด hello๋กœ ์ „์†กํ•˜๊ธฐ-->
<form action="hello" method="get">
์ด๋ฆ„:<input type="text" name="name"><br>
๋‚˜์ด:<input type="text" name="age"><br>
์ฃผ์†Œ:<input type="text" name="address"><br>
<input type="submit" value="์ „์†ก">
</form>

</body>
</html>

HelloServlet.java 

package sample04;

import java.io.IOException;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dto.Human;

public class HelloServlet2 extends HttpServlet{
// ๋ฐฉ๋ฒ•2. RequestDispatcher ์†Œ์†์˜ foward(์ „์ง„) ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doProc(req, resp); // doProc์„ ํ˜ธ์ถœ
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doProc(req, resp); // doProc์„ ํ˜ธ์ถœ
	}
// get, post๊ตฌ๋ถ„ ์—†์ด ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ public void๋ฌธ์„ ์“ฐ๊ณ  ์œ„์—์„œ doProc์„ ํ˜ธ์ถœํ•œ๋‹ค.	
	public void doProc(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
		System.out.println("HelloServlet doProc()"); // ์ฝ˜์†”์ฐฝ์— ๋ฐ˜ํ™˜
		
// ํ•œ๊ธ€ ๊นจ์ง€๋Š” ํ˜„์ƒ ๋ฐฉ์ง€ :setCharacterEncoding ์„ ๋ณ€๊ฒฝํ•˜๊ธฐ		
		//req.setCharacterEncoding("utf-8");
		
// index๋กœ๋ถ€ํ„ฐ name , age, address ๊ฐ€ ๋„˜์–ด์˜จ๋‹ค.
		String name = req.getParameter("name");
		int age = Integer.parseInt( req.getParameter("age") );
		String address = req.getParameter("address");
		
		System.out.println("name:" + name);
		
		
//RequestDispatcher ์†Œ์†์˜ foward(์ „์ง„) ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
		
		
// RequestDispatcher forward(์ „์ง„)
		Human h = new Human(name, age, address);
		
// ์ง์‹ธ! : human์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ h๋ฅผ ๋ณด๋‚ด๊ธฐ
		req.setAttribute("human", h);
		
// ์ด๋™
	//๋ฐฉ๋ฒ•1. resp.sendRedirect("world");   // ์ด๋™์€ ๋˜๋Š”๋ฐ ๋ฐ์ดํ„ฐ๋Š” ์ „์†ก์ด ์•ˆ๋จ
		
	// world๋กœ ์ด๋™
		req.getRequestDispatcher("world").forward(req, resp);
	}	
}

WorldServlet.java 

package sample04;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dto.Human;

public class WorldServlet2 extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doProc(req, resp); // doProc์„ ํ˜ธ์ถœ
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doProc(req, resp); // doProc์„ ํ˜ธ์ถœ
	} 

// get, post๊ตฌ๋ถ„ ์—†์ด ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ public void๋ฌธ์„ ์“ฐ๊ณ  ์œ„์—์„œ doProc์„ ํ˜ธ์ถœํ•œ๋‹ค.	
	public void doProc(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
	
		
// ์ง์„ ํ’€๋‹ค : "human"์œผ๋กœ ๋ณด๋ƒˆ๋˜๊ฑธ ๋‹ค์‹œ ํ’€๊ธฐ
// setAttribute๋กœ ์ง์„ ์ŒŒ์œผ๋‹ˆ๊นŒ getAttribute๋กœ ์ง์„ ํ‘ผ๋‹ค
//getAttribute ๋Š” object๋กœ ๋ฆฌํ„ด๋˜๋‹ˆ๊นŒ ์บ์ŠคํŠธ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด (Human) ์ด๋ผ๊ณ  ์จ์•ผํ•œ๋‹ค.
		Human human = (Human)req.getAttribute("human");
		
		resp.setContentType("text/html; charset=utf-8");
		
		PrintWriter pw = resp.getWriter();
		
		pw.println("<html>");
		
		pw.println("<head>");
		pw.println("<title>World์ž…๋‹ˆ๋‹ค</title>");
		pw.println("</head>");
		
		pw.println("<body>");
		
		pw.println("<h1>World</h1>");
		

		pw.println("<p>์ด๋ฆ„:" + human.getName() + "</p>");
		pw.println("<p>๋‚˜์ด:" + human.getAge() + "</p>");
		pw.println("<p>์ฃผ์†Œ:" + human.getAddress() + "</p>");
		
		pw.println("</body>");
		
		pw.println("</html>");
	}
}

 

dto - Human.java 

package dto;

import java.io.Serializable;
// Serializable: ์ง๋ ฌํ™”
// ์ž๋ฐ” ์‹œ์Šคํ…œ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉ๋˜๋Š” Object ๋˜๋Š” Data๋ฅผ 
// ์™ธ๋ถ€์˜ ์ž๋ฐ” ์‹œ์Šคํ…œ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐ”์ดํŠธ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜
public class Human implements Serializable {

// name, age, address๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„˜์–ด์˜ด
	private String name;
	private int age;
	private String address;
	
	public Human() {
	}
//๋งค๊ฐœ๋ณ€์ˆ˜ ์žˆ๋Š” ์ƒ์„ฑ์ž
	public Human(String name, int age, String address) {
		super();
		this.name = name;
		this.age = age;
		this.address = address;
	}
// setter, getter
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}
	
}

web.xml  1๋ฒˆ ๋ฐฉ๋ฒ•๊ณผ ๊ฐ™๋‹ค.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
  <display-name>sample04</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>
  
  <!-- hello  -> sample04.HelloServlet -->
  <servlet>
  	<servlet-name>hello</servlet-name>
  	<servlet-class>sample04.HelloServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>hello</servlet-name>
  	<url-pattern>/hello</url-pattern>
  </servlet-mapping>
  
  <!-- world -> sample04.WorldServlet : ์ตœ์ข…์ข…์ฐฉ์ง€ -->
  <servlet>
  	<servlet-name>world</servlet-name>
  	<servlet-class>sample04.WorldServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>world</servlet-name>
  	<url-pattern>/world</url-pattern>
  </servlet-mapping>
  
  
</web-app>

 

์˜ˆ์ œ5 : session ์˜ˆ์ œ

HelloServlet.java

package sample05;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

//web.xml ๋“ฑ๋ก์„ ํ•œ์ค„๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ธฐ๋Šฅ
@WebServlet("/hello") 
public class HelloServlet extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("HelloServlet doGet()");  // helloServlet์œผ๋กœ ์ด๋™๋งํฌ ๋ˆ„๋ฅด๋ฉด ์ฝ˜์†”์ฐฝ์— ๋ฐ˜ํ™˜๋จ
		
		/*
			getSession(false)
			session ์ด ์กด์žฌํ•˜๋ฉด ํ˜„์žฌ HttpSession์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค
			session ์ด ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š”์ง€ ํŒ๋‹จ.
			session ๊ฐ์ฒด๊ฐ€ ์—†์œผ๋ฉด null์„  ๋ฐ˜ํ™˜ํ•œ๋‹ค
			
			getSession(true) = getSession() 
			session ์ด ์กด์žฌํ•˜๋ฉด ํ˜„์žฌ HttpSession์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค
			session ๊ฐ์ฒด๊ฐ€ ์—†์œผ๋ฉด ์ƒˆ๋กœ session์„ ์ƒ์„ฑํ•œ๋‹ค
		*/
		
		resp.setContentType("text/html; charset=utf-8");
		
		PrintWriter pw = resp.getWriter();
		
		pw.println("<html>");
		
		pw.println("<head>");
		pw.println("<title>Hello์ž…๋‹ˆ๋‹ค</title>");
		pw.println("</head>");
		
		pw.println("<body>");		
		pw.println("<h1>Hello</h1>");

// session์€ req(uest) ์†Œ์†
// ๋ฐฉ์„ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ session์ด ์žˆ๋Š๋ƒ ์กฐ์‚ฌํ–ˆ์„ ๋•Œ ์—†๋‹ค๊ณ  ๋‚˜์˜ด.(false)
		HttpSession session = req.getSession(false);
		if(session == null) {
			session = req.getSession(true);			// ์„ธ์…˜ ์ƒ์„ฑ(์ƒ์„ฑ๋์Œ)
			
//			session.setMaxInactiveInterval(30);		//์„ธ์…˜ ์œ ํšจ์‹œ๊ฐ„ : 30์ดˆ
//		    30์ดˆ = 30 / 1์‹œ๊ฐ„ = 60 * 60 / ํ•˜๋ฃจ = 24 * 60 * 60 / 1๋…„ = 365 * 24 * 60 * 60

// session ํ™œ์šฉ
		//์ €์žฅ : req.setAttribute์™€ ์‚ฌ์šฉ๋ฒ• ๋™์ผ -> ๋ฐฉ๋ฌธํšŸ์ˆ˜ : 1๋ฒˆ
			session.setAttribute("visited", "1");	// ์„ธ์…˜ ์ €์žฅ : visited(key):1(value)
			pw.println("<p>์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฌธ์ž…๋‹ˆ๋‹ค</p>");
		}
		// ์„ธ์…˜ ์ƒ์„ฑ๋์—ˆ๋‹ค๋ฉด
		else {
			String visited = (String)session.getAttribute("visited");
			
			if(visited != null) {
				int count = Integer.parseInt(visited); // ์ˆซ์ž๋กœ ๋ณ€ํ™˜
				
				count++;
				
				pw.println("<p>" + count + "๋ฒˆ์งธ ๋ฐฉ๋ฌธ์ž…๋‹ˆ๋‹ค</p>");
				session.setAttribute("visited", count + ""); // "" : ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊ฟ”์คŒ
			}
		}		

// session object๋ฅผ ์‚ญ์ œ ๊ธฐ๋Šฅ : removeAttribute
	//	session.removeAttribute("visited");
		
// session ์ž์ฒด๋ฅผ ์‚ญ์ œ
	//	session.invalidate();
		
		pw.println("</body>");
		
		pw.println("</html>");
		
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	}
}

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>


<a href="hello">helloServlet์œผ๋กœ ์ด๋™</a> 
 

</body>
</html>

 

 

 

<์ฐธ๊ณ ์šฉ>

๋ฐฉ๋ฒ• 1 + 2 ํ•ฉ์นœ  ์›๋ณธ ์†Œ์Šค

HelloServlet.java

package sample04;

import java.io.IOException;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dto.Human;

public class HelloServlet extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doProc(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doProc(req, resp);
	}
	
	public void doProc(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
		System.out.println("HelloServlet doProc()");
		
		//req.setCharacterEncoding("utf-8");
		
		String name = req.getParameter("name");
		int age = Integer.parseInt( req.getParameter("age") );
		String address = req.getParameter("address");
		
		System.out.println("name:" + name);
		
		/*
		
		// response sendRedirect
		// ํ•œ๊ธ€์˜ ๊ฒฝ์šฐ๋Š” ์ธ์ฝ”๋”ฉ์„ ์ฒ˜๋ฆฌํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. 
		String ename = URLEncoder.encode(name);
		String eaddress = URLEncoder.encode(address);
		
	//	resp.sendRedirect("world");	// ๋งตํ•‘๋œ world(WorldServlet)๋กœ ์ด๋™		
		resp.sendRedirect("world?name=" + ename + "&age=" + age + "&address=" + eaddress);
		*/
		
		
		
		// RequestDispatcher forward(์ „์ง„)
		Human h = new Human(name, age, address);
		
		// ์ง์‹ธ!
		req.setAttribute("human", h);
		
		// ์ด๋™
	//	resp.sendRedirect("world");   // ์ด๋™์€ ๋˜๋Š”๋ฐ ๋ฐ์ดํ„ฐ๋Š” ์ „์†ก์ด ์•ˆ๋จ
		req.getRequestDispatcher("world").forward(req, resp);
	}	
}

WorldServlet.java

package sample04;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dto.Human;

public class WorldServlet extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doProc(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doProc(req, resp);
	}
	
	public void doProc(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
		
	//	req.setCharacterEncoding("utf-8");
		
		/*
		String name = req.getParameter("name");
		int age = Integer.parseInt( req.getParameter("age") );
		String address = req.getParameter("address");
		*/
		
		// ์ง์„ ํ’€๋‹ค
		Human human = (Human)req.getAttribute("human");
		
		resp.setContentType("text/html; charset=utf-8");
		
		PrintWriter pw = resp.getWriter();
		
		pw.println("<html>");
		
		pw.println("<head>");
		pw.println("<title>World์ž…๋‹ˆ๋‹ค</title>");
		pw.println("</head>");
		
		pw.println("<body>");
		
		pw.println("<h1>World</h1>");
		
		/*
		pw.println("<p>์ด๋ฆ„:" + name + "</p>");
		pw.println("<p>๋‚˜์ด:" + age + "</p>");
		pw.println("<p>์ฃผ์†Œ:" + address + "</p>");
		*/				
		
		pw.println("<p>์ด๋ฆ„:" + human.getName() + "</p>");
		pw.println("<p>๋‚˜์ด:" + human.getAge() + "</p>");
		pw.println("<p>์ฃผ์†Œ:" + human.getAddress() + "</p>");
		
		pw.println("</body>");
		
		pw.println("</html>");
	}
	
}

 

๋Œ“๊ธ€