각진 세상에 둥근 춤을 추자

[JSP] Eclipse - Servlet6: 사용자 입력을 통한 POST 요청 본문

JSP

[JSP] Eclipse - Servlet6: 사용자 입력을 통한 POST 요청

circle.j 2022. 10. 23. 22:32

 

 

(이전 게시글)

2022.10.23 - [JSP] - [JSP] Eclipse - Servlet5: 사용자 입력을 통한 GET 요청

 

[JSP] Eclipse - Servlet5: 사용자 입력을 통한 GET 요청

(이전 게시글) 2022.10.23 - [JSP] - [JSP] GET 요청과 쿼리스트링 [JSP] Eclipse - Servlet4: GET 요청과 쿼리스트링 (이전 게시글) 2022.10.23 - [JSP] - [JSP] Eclipse - Servlet3: 출력 형식 이해 (한글 깨짐..

this-circle-jeong.tistory.com

 

이번에는 사용자 입력 방식으로 POST 방식을 사용한다.

 

1. 입력 폼 작성하기: reg.html

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>사용자 입력을 통한 POST 요청</title>
</head>
<body>
	<div>
		<form action="notice-reg">
			<div>
				<label>제목: </label><input type="text" name="title">
			</div>
			<div>
				<label>내용: </label>
				<textarea name="content"></textarea>
			</div>
			<div>
				<input type="submit" value="등록하기"/>
			</div>
		</form>
	</div>
</body>
</html>

<form action="notice-reg"

해당 form을 notice-reg 매핑 주소로 전달한다. 

 

 

2. 서블릿 파일 작성하기: NoticeReg.java

 

package com.circle.web;

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;


@WebServlet("/notice-reg")
public class NoticeReg extends HttpServlet {
	
	@Override
	public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		// 인코딩 방식 지정
		response.setCharacterEncoding("UTF-8");
		
		// 받는 Content Type 지정 (html 문서, UTF-8로 읽어라!)
		response.setContentType("text/html; charset=UTF-8");
		
		PrintWriter out = response.getWriter();
		
		String title = request.getParameter("title");
		String content = request.getParameter("content");
		
		out.println(title);
		out.println(content);
	}
}

 

실행 후, 폼에 내용을 입력한다.

 

일반적으로 입력 방식을 지정하지 않은 GET 방식의 경우 해당 내용이 주소창에 노출된다. 

이는 미관상 보기 안 좋을 뿐더러 보안상의 이유로도 좋지 않다.

그렇기 때문에 사용자 입력 방식을 POST 방식으로 지정해 본다. 

 

 

3. 사용자 입력 방식: POST

 

<form action="notice-reg" method="post">

 

(reg.html)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>사용자 입력을 통한 GET 요청</title>
</head>
<body>
	<div>
		<form action="notice-reg" method="post">
			<div>
				<label>제목: </label><input type="text" name="title">
			</div>
			<div>
				<label>내용: </label>
				<textarea name="content"></textarea>
			</div>
			<div>
				<input type="submit" value="등록하기"/>
			</div>
		</form>
	</div>
</body>
</html>

 

실행 결과, 주소창에 해당 요청 내용이 보이지 않는 것을 알 수 있다. 

 


한글 입력 문제

 

제목과 내용에 한글을 입력했을 경우, 한글이 깨진 형태로 출력된다. 

 

 

// 한글 깨짐 해결: 입력받는 값을 utf-8로 읽어라
request.setCharacterEncoding("UTF-8");