본문 바로가기
JSP Servlet

JSP Servlet 데이터 전송 방식 Get, Post

by wanttosleep1111 2023. 1. 28.

JSP Servlet 데이터 전송 방식 Get, Post

 

1. 데이터 전송 방식 : 데이터 전송 방식을 지정하는 method 속성 이용

  • Get : 데이터 조회 요청 (default)
  • Post : 데이터 생성 요청
  • Put : 데이터 수정 요청
  • Delete : 데이터 삭제 요청
 

 

2. GET 방식

  • URL에 데이터를 포함시켜 요청
  • 데이터를 패킷의 Header에 포함하여 전송
  • 전송하는 데이터 길이에 한계 존재 (브라우저에서 제한, 약 255자)
  • 보안에 취약
  • 캐싱 가능

 

 

  • Tomcat 7.0버전 이하일 경우 get 방식 한글 인코딩

 

3. Post 방식

  • URL에 데이터를 노출하지 않고 요청
  • 데이터를 패킷의 Body에 담아서 전송
  • 전송하는 데이터의 길이에 제한 없음
  • 보안에 강함
  • 캐싱 불가능
  • Post 방식 한글 인코딩 : request.setCharacterEncoding("UTF-8");

 

※ 인코딩 방법

  • request.setCharacterEncoding("UTF-8");
    클라이언트가 전송한 요청 데이터 인코딩 방식 지정
  • response.setContentType("text/html;charset=UTF-8");
    클라이언트가 응답할 페이지 환경설정
    브라우저마다 문자 해석 방식이 다르기 때문에 인코딩 방식 지정

 


 

▶ 예제

이름을 입력 받아 post방식으로 전송 후 출력

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<form action="GetPost", method="post">
		이름 : <input type="text" name="name">
		<input type="submit" value="전송">
	</form>

</body>
</html>

 

package Servlet0127;

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("/GetPost")
public class Ex02GetPost extends HttpServlet {
	private static final long serialVersionUID = 1L;

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

		// post방식일 때 요청 데이터 한글 인코딩 잡아주기
		request.setCharacterEncoding("UTF-8");
		// --> 요청받은 데이터를 꺼내오기 전에 인코딩을 잡아줄 것
		response.setContentType("text/html;charset=UTF-8");
		
		PrintWriter out = response.getWriter();
		
		String name = request.getParameter("name");
		
		out.print(name);
	
	
	}

}

 

 

▶ 예제

아래와 같은 모양의 페이지를 만들기

직업, 성별, 취미를 출력해보기

※ request.getParameterValues("") : 하나의 name에 value값이 여러가지인 데이터일 때 이용하며 return으로 배열을 받음

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

	<form action="UserInfo" method="post">
		<h3>직업</h3>
		<select name="job">
			<option>학생</option>
			<option>회사원</option>
			<option>자영업</option>
		</select>
		<h3>성별</h3>
		<input type="radio" name="gender" value="남자">남자
		<input type="radio" name="gender" value="여자">여자
		<h3>취미</h3>
		<input type="checkbox" name="hobby" value="축구">축구
		<input type="checkbox" name="hobby" value="야구">야구
		<input type="checkbox" name="hobby" value="농구">농구
		<br>
		<br>
		<input type="submit">
	</form>
	
</body>
</html>

 

package Servlet0127;

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("/UserInfo")
public class Ex03UserInfo extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 한글 인코딩, 출력 스트림
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		// 데이터 불러오기
		String job = request.getParameter("job");
		String gender = request.getParameter("gender");
		String[] hobby = request.getParameterValues("hobby");
		// 데이터 출력
		out.print("직업 : "+job+"<br>");
		out.print("성별 : "+gender+"<br>");
		out.print("취미 : ");
		for (int i = 0; i<hobby.length; i++) {
			out.print(hobby[i]+" ");
		}
		
	}

}

 

 

▶ 예제

데이터 전송 방식을 Post로 회원가입 테이블 만들어보기

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

	<form action="Join" method="post">
        <table width="400px">
            <!-- Step 1 : 아이디/비번 입력 -->
            <tr height="50px" bgcolor="gray">
                <th colspan="2">Step 1 : 아이디/비번 입력</th>
            </tr>
            <tr height="35px" bgcolor="whitesmoke">
                <td align="left">아이디</td>
                <td><input type="text" name="id"></td>
            </tr>
            <tr height="35px" bgcolor="whitesmoke">
                <td align="left">비밀번호</td>
                <td><input type="password" name="pw"></td>
            </tr>
            <tr height="35px" bgcolor="whitesmoke">
                <td align="left">비밀번호 확인</td>
                <td><input type="password" name="pw_check"></td>
            </tr>
            <!-- Step 2 : 개인정보 입력 -->
            <tr height="50px" bgcolor="gray">
                <th colspan="2">Step 2 : 개인정보</th>
            </tr>
            <tr height="35px" bgcolor="whitesmoke">
                <td align="left">성별</td>
                <td>
                    <input type="radio" name="gender" value="남">남
                    <input type="radio" name="gender" value="여">여
                </td>
            </tr>
            <tr height="35px" bgcolor="whitesmoke">
                <td align="left">혈액형</td>
                <td>
                    <select name="bt">
                        <option>A형</option>
                        <option>B형</option>
                        <option>O형</option>
                        <option>AB형</option>
                    </select>
                </td>
            </tr>
            <tr height="35px" bgcolor="whitesmoke">
                <td align="left">생일</td>
                <td>
                    <input type="date" name="bd">
                </td>
            </tr>
            <!-- Step 3 : 선호도 입력 -->
            <tr height="50px" bgcolor="gray">
                <th colspan="2">Step 3 : 선호도</th>
            </tr>
            <tr height="35px" bgcolor="whitesmoke">
                <td align="left">취미</td>
                <td>
                    <input type="checkbox" name="hobby" value="축구">축구
                    <input type="checkbox" name="hobby" value="야구">야구
                    <input type="checkbox" name="hobby" value="농구">농구
                </td>
            </tr>
            <tr height="35px" bgcolor="whitesmoke">
                <td align="left">좋아하는 색깔</td>
                <td>
                    <input type="color" name="color">
                </td>
            </tr>
            <!-- Step 4 : 하고싶은 말 입력 -->
            <tr height="50px" bgcolor="gray">
                <th colspan="2">Step 4 : 하고싶은 말</th>
            </tr>
            <tr>
                <td colspan="2">
                    <textarea cols="56" rows="5" name="text"></textarea>
                </td>
            </tr>
            <!-- 제출 및 초기화 -->
            <tr height="35px" bgcolor="whitesmoke">
                <td colspan="2" align="center">
                    <input type="submit">
                    <input type="reset">
                </td>
            </tr>
		</table>            
    </form>

</body>
</html>

 

package Servlet0127;

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("/Join")
public class H02Join extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 한글 인코딩, 출력 스트림
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		// 데이터 불러오기
		String id = request.getParameter("id");
		String pw = request.getParameter("pw");
		String pw_check = request.getParameter("pw_check");
		String gender = request.getParameter("gender");
		String bt = request.getParameter("bt");
		String bd = request.getParameter("bd");
		String[] hobby = request.getParameterValues("hobby");
		String color = request.getParameter("color");
		String text = request.getParameter("text");
		// 데이터 출력
		out.print("아이디 : "+id+"<br>");
		out.print("비밀번호 : "+pw+"<br>");
		if (pw.equals(pw_check)) {
			out.print("비밀번호가 일치합니다."+"<br>");
		} else {
			out.print("비밀번호가 일치하지 않습니다."+"<br>");
		}
		out.print("성별 : "+gender+"<br>");
		out.print("혈액형 : "+bt+"<br>");
		out.print("생일 : "+bd+"<br>");
		out.print("취미 : ");
		for (int i = 0; i < hobby.length; i++) {
			out.print(hobby[i]+" ");
		}
		out.print("<br>");
		out.print("좋아하는 색깔 : "+color+"<br>");
		out.print("하고 싶은 말 : "+text);

	}

}

'JSP Servlet' 카테고리의 다른 글

JSP Servlet 내장 객체 (Implicit Object)  (0) 2023.02.04
JSP Servlet Java Server Pages 기본  (0) 2023.01.30
JSP Servlet 데이터 전송 form 태그, input 태그  (0) 2023.01.27
JSP Servlet Print, Table  (0) 2023.01.26
JSP Servlet 기본  (0) 2023.01.26

댓글