JSP & Servlet

2020 jsp(java server page) & servlet(ServerApplicationLet) 14.입력할 내용이 많은 경우는 POST 요청

Jungsoomin :) 2020. 6. 27. 11:38

주문의 옵션이 많다면 적어서 제출해주세요! 라고 하는 것이 정상적이다. 

 

웹서버의 흐름은 이렇다.

 

주문서(입력 폼)를 주세요 GET    >>  주문내용 POST  >>  주문된 요청에 대한 응답 response

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<div>
		<div>
			
			<form action="notice-reg">
				
				<div>
					<label>제목:</label><input name="tilte" type="text"> 
				</div>
				
				<div>
					<label>내용:</label><textarea name="content" ></textarea>
				</div>
				
				<div>
					<input type="submit" value="등록"/>
				</div>
				
			</form>
		
		</div>
	</div>
</body>
</html>

 

name 속성이 있어야 키워드를 가지고 value를 전달할 수 있으니 기억하자.

 


@WebServlet("/notice-reg")
public class NoticeReg extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		resp.setCharacterEncoding("UTF-8");
		resp.setContentType("text/html; charset=UTF-8");

		PrintWriter out = resp.getWriter();

		String title = req.getParameter("tilte");
		String content = req.getParameter("content");

		out.println(title);
		out.println(content);

	}

해당 폼 액션에 맞는 Servlet Class 를 만들어주고 간단히 키워드의 value 값을 받아 돌려주는 식으로 코드를 작성한다.

 

 

주소값이 이상한 것이 보인다. url 길이에는 제한이 있고, 쿼리스트링은 문서에 대한 옵션 값이다.장문으로 보내는 것은 올바르지 않다.

 


 

<form action="notice-reg" method="post"> 으로 수정해보자 

요청 body는 제한이 없으므로 POST로 보냄으로 커다란 용량도 받아낼 수 있게 된다.

 

즉 요청 body에 tilte="hello"&content="hello" 라고 보냄이 되는 것이다.

 

주소가 원하는 방향으로 찍히는 것을 확인 할 수 있게 된다.