IT 관련,,/Java관련 언어들

[웹/JSP]jsp Get, Post방식

IT깡패's 2018. 8. 18. 18:20
728x90
반응형
SMALL


JSP에서 Get, Post방식을 사용하려면 HTML의 Form태그가 필요합니다.


Form태그

사용자의 입력정보를 받기 위한 <input>요소로 구성되어 있습니다.

 - type = "submit, button" : 버튼에 대한 속성이며, 특히 submit은 사용자 데이터를 처리할 페이지로 전달 합니다.


action 속성 : 사용자 데이터를 전달할 웹페이지입니다.


method 속성 : get 또는 post 방식이 있습니다.

 - get : 사용자의 입력 데이터를 url에 표시하며, 데이터 크기에 제한이였고 쿼리 형식입니다.

 - post : 데이터 크기의 제한이 없어 많은 양의 데이터를 전달할 수 있습니다.


placeholder 속성 : 웹에서 HTML형식으로 글씨가 씌어진다.


전송방식

jsp 전송방식에는 get, post 2개의 방식이 있습니다.

1. Get 방식

Get 방식은 클라이언트가 서버에게 데이터를 요청할 때, 사용하는 방식입니다.

URL뒤에 데이터가 QueryString으로 붙어서 전송되는 방식입니다.

URL은 HTTP 데이터 포맷의 Header에 저장되는 전송됩니다.


빨간 박스로 처리된 부분이 쿼리스트링(?부분부터)이고, get방식의 특징입니다.


- 특징

(1) POST방식 보다 전송속도가 빠릅니다.

(2) 전송데이터가 QueryString으로 데이터가 전송이 되기 때문에 post보다 보안이 취약합니다.

그렇기 때문에, 전송되는 데이터는 URL에 보여도 상관없는 데이터만을 보내야 합니다.(id, pass 데이터 등의 사용자 정보 데이터는 절대로 보내면 안 됨.)

(3) URL의 최대길이가 2048자만 전송이 가능하므로 전송되는 데이터의 길이에 제한이 있습니다.(대용량의 데이터를 전송할 수 없는 단점이 있습니다.)


JSP를 이용하여 GET방식의 코드를 구현해봅시다~

- FormEx.jsp(form부분만 넣어줌 - 소스스크립트 에러때문,,)



method속성은 전송방식을 결정합니다. 이 때 대소문자 구별하지 않습니다.

action속성은 전송되는 데이터를 받을 페이지 주소경로를 지정해주는 속성입니다.


데이터를 받을 페이지는 서블릿을 사용하여 구현하였습니다.

- FormServlet.java

package formTest;

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;

/**
 * Servlet implementation class FromServlet
 */
@WebServlet(name="formTest", urlPatterns= {"/formTest"})
public class FormServlet extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		response.setContentType("text/html;charset=utf-8");
		
		String id = request.getParameter("userId");
		String pw = request.getParameter("userPwd");
		
		PrintWriter out = response.getWriter();
		out.println("

아이디 : " + id +"

"); out.append("

"); out.append("패스워드: "); out.append(pw); out.append("

"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); String id = req.getParameter("userId"); String pw = req.getParameter("userPwd"); resp.setContentType("text/html;charset=utf-8"); PrintWriter out = resp.getWriter(); out.println("

아이디 : " + id +"

"); out.append("

"); out.append("패스워드: "); out.append(pw); out.append("

"); } }


두 소스들의 웹페이지화면 창입니다.

위의 표시된 웹페이지 화면창에서 URL에 아이디와 비밀번호가 쿼리스트링으로 보내지는 것을 확인하시면 됩니다.


2. Post 방식

클라이언트가 서버에게 클라이언트를 전송할 때, 사용하는 방식입니다. 

HTTP통신의 데이터 포맷은 Header, Body 구성이 되어 있습니다.

데이터가 URL에 쿼리스트링으로 붙어 보내지는 Get 방식과 달리 Post 방식은 Http데이터 포맷의 Body부분에 데이터가 담겨진 상태로 전송이 됩니다.

그래서 보안성이 뛰어나게 되며, 당연히 Get 방식보다 보안성이 좋습니다.


 - 특징

(1) 대용량의 데이터를 전송할 수 있습니다.

(2) Http통신 데이터 포맷의 body부분에 데이터가 실려서 전송이 되기 때문에 보안성이 뛰어납니다.


이번에는 Post 방식의 코드도 구현해보죠~

- FormEx.jsp(요것도 form부분만 출력)





method속성은 Post 방식을 사용하였습니다. 이 때도 대소문자를 구별하지 않습니다.

action속성은 전송되는 데이터를 받을 페이지 주소경로를 지정해주는 속성입니다.


FormServlet.java

package formTest;

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;

/**
 * Servlet implementation class FromServlet
 */
@WebServlet(name="formTest", urlPatterns= {"/formTest"})
public class FormServlet extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		response.setContentType("text/html;charset=utf-8");
		
		String id = request.getParameter("userId");
		String pw = request.getParameter("userPwd");
		
		PrintWriter out = response.getWriter();
		out.println("

아이디 : " + id +"

"); out.append("

"); out.append("패스워드: "); out.append(pw); out.append("

"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); String id = req.getParameter("userId"); String pw = req.getParameter("userPwd"); resp.setContentType("text/html;charset=utf-8"); PrintWriter out = resp.getWriter(); out.println("

아이디 : " + id +"

"); out.append("

"); out.append("패스워드: "); out.append(pw); out.append("

"); } }


Post 방식의 웹페이지 화면 창입니다.

URL에 Get 방식처럼 쿼리스트링(아이디와 비밀번호)의 데이터가 보이지 않으면 됩니다.


여기까지 jsp의 get, post방식의 설명(HTML form태그의 설명)과 예제들이였습니다~

728x90
반응형
LIST