๐์๋ธ๋ฆฟ์ด๋?
ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋
Servlet ํด๋์ค์ ๊ตฌํ ๊ท์น์ ์งํจ ์๋ฐ ์น ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์
๊ฐ๋จํ ๋งํด์, ์๋ธ๋ฆฟ์ด๋ ์๋ฐ๋ฅผ ์ฌ์ฉํ์ฌ ์น์ ๋ง๋ค๊ธฐ ์ํด ํ์ํ ๊ธฐ์ ์ ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ข๋ ๋ค์ด๊ฐ์ ์ค๋ช ํ๋ฉด
ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ ํ ์์ฒญ์ ํ๋ฉด ๊ทธ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ์ ์กํด์ฃผ์ด์ผ ํ๋๋ฐ, ์ด๋ฌํ ์ญํ ์ ํ๋ ์๋ฐ ํ๋ก๊ทธ๋จ์ ๋๋ค.
์๋ฅผ ๋ค์ด, ์ด๋ ํ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ ํ๋ ค๊ณ ํ ๋. ์ฌ์ฉ์๋ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๊ณ , ๋ก๊ทธ์ธ ๋ฒํผ์ ๋๋ฆ ๋๋ค.
๊ทธ๋ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ํ์ธํ๊ณ , ๋ค์ ํ์ด์ง๋ฅผ ๋์์ฃผ์ด์ผ ํ๋๋ฐ, ์ด๋ฌํ ์ญํ ์ ์ํํ๋
๊ฒ์ด ๋ฐ๋ก ์๋ธ๋ฆฟ(Servlet)์ ๋๋ค. ๊ทธ๋์ ์๋ธ๋ฆฟ์ ์๋ฐ๋ก ๊ตฌํ ๋ *CGI๋ผ๊ณ ํํ ๋งํฉ๋๋ค.
- ์ฌ์ฉ์(ํด๋ผ์ด์ธํธ)๊ฐ URL์ ์ ๋ ฅํ๋ฉด HTTP Request๊ฐ Servlet Container๋ก ์ ์กํฉ๋๋ค.
- ์์ฒญ์ ์ ์ก๋ฐ์ Servlet Container๋ HttpServletRequest, HttpServletResponse ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค.
- web.xml์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉ์๊ฐ ์์ฒญํ URL์ด ์ด๋ ์๋ธ๋ฆฟ์ ๋ํ ์์ฒญ์ธ์ง ์ฐพ์ต๋๋ค.
- ํด๋น ์๋ธ๋ฆฟ์์ service๋ฉ์๋๋ฅผ ํธ์ถํ ํ ํด๋ฆฌ์์ธํธ์ GET, POST์ฌ๋ถ์ ๋ฐ๋ผ doGet() ๋๋ doPost()๋ฅผ ํธ์ถํฉ๋๋ค.
- doGet() or doPost() ๋ฉ์๋๋ ๋์ ํ์ด์ง๋ฅผ ์์ฑํ ํ HttpServletResponse๊ฐ์ฒด์ ์๋ต์ ๋ณด๋ ๋๋ค.
- ์๋ต์ด ๋๋๋ฉด 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 ํ์ผ ์ถ๊ฐํ๋๊น ๊ธฐ๋ฅ ๊ธฐ์ตํ๊ณ ์์ด์ผํ๋ค.
์๋์ ๊ธด ํ์ผ ๋ด์ฉ์ ๋จ ํ์ค @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>");
}
}
'front-end' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Ajax] Ajax ๋น๋๊ธฐ๋ฐฉ์ ๊ฐ๋ (0) | 2023.02.08 |
---|---|
[JSP] JSP์ ๊ฐ๋ (0) | 2023.02.08 |
[Jquery] Jquery ์ฌ์ฉํ๊ธฐ, ํจ์ ํธ์ถ ๋ฐฉ๋ฒ, radio / checkbox / select ์์๋ณด๊ธฐ (0) | 2023.02.03 |
[json] json ๊ฐ๋ ๊ณผ json ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ์ฌ ํ ์ด๋ธ ๋ง๋ค๊ธฐ (0) | 2023.02.02 |
[XML] XML ๊ฐ๋ ๊ณผ ๋๊ธฐ/๋น๋๊ธฐ๋ฐฉ์, HTTP ์์ฒญ (0) | 2023.02.01 |
๋๊ธ