Developer/Spring eGov4.0 (Java11, Tomcat9)

Servlet 알아보기 2 (메서드 사용)

단님 2024. 11. 1. 11:55
728x90
Servlet 의 메서드 알아보기

 

doGet()

GET 방식은 클라이언트에서 서버로 데이터를 전달할 때,

URL 뒤에 쿼리 스트링(Query String)을 추가하여 전달하는 방식.

HTTP 헤더에 정보를 포함하여 빠르게 요청을 보낼 수 있으며, 웹에서 많이 사용된다.

GET 방식 특징
쿼리 스트링 사용 : URL 뒤에 ?파라미터명=값 형태로 데이터를 전달
속도가 빠름 : GET 방식은 간단한 데이터를 전달할 때 빠른 응답 속도를 제공
크기 제한 : URL에 포함되는 방식이므로 이미지 등 큰 데이터 전송에는 적합하지 않으며,
주로 짧은 텍스트 데이터를 전송하는 데 사용
보안성 부족: URL에 데이터가 그대로 노출되므로 민감한 정보 전송에는 적합하지 않음.
https://example.com/search?query=java

 

doPost()

POST 방식은 클라이언트가 서버로 데이터를 전달할 때, HTTP 요청 본문(body)에 데이터를 포함하여 전달하는 방식

이 방식은 주로 민감한 정보나 대용량 데이터를 안전하게 전송하기 위해 사용

POST 방식 특징
HTTP Body에 데이터 포함 : URL에 데이터를 추가하지 않고,
HTTP 요청 본문(body)에 데이터를 포함하여 전송
보안성 높음 : 데이터가 URL에 노출되지 않아 민감한 정보 전송에 적합
다만, 보안을 위해 HTTPS를 사용하는 것이 바람직하다.
데이터 사이즈에 제한이 적음 : 본문에 데이터를 포함하기 때문에 데이터 사이즈 제한이 거의 없다.
따라서 이미지, 파일 등 대용량 데이터 전송에 적합하다.
Servlet과의 연동 : POST 방식으로 서블릿을 호출할 때는 HTML의 <form> 태그를 사용하여
method="post" 로 설정
<form method="post" action="서블릿_URL">
    <input type="text" name="data">
    <button type="submit">Submit</button>
</form>

 


Servlet 실습

 

HTML로 서블릿 요청
<h2>** Servlet Get/Post Test **</h2>
<form action="/web01/getpost" method="post">
	I D : <input type="text" value="apple" name="id"><br>
	Name: <input type="text" value="스티브" name="name"><br>
	Age : <input type="text" value="22" name="age"><br>
	<input type="submit" value="전송">
</form>

HTML의 속성

id : 문서 내부 자바스크립트가 사용

name : 문서 외부에서 사용

 

쿼리 스트링으로 서블릿 요청
http://localhost:8080/web01/getpost?id=apple&name=스티브&age=22&password=123

 

name 을 삭제한 후 쿼리스트링을 작성한다면 ?

http://localhost:8080/web01/getpost?id=apple&name=&age=22&password=123

 

servlet
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 1. request 처리. 
        request.setCharacterEncoding("UTF-8"); // 한글 처리
		
		String id = request.getParameter("id");
		String name = request.getParameter("name"); // getParameter
		String password = request.getParameter("password");
		if(password!=null && password.length()>0) {
			System.out.println("**password = "+password.toUpperCase());
		}else {
			System.out.println("**password is Null  , password is Empty");
		}
		
		// 2 . response 처리.
		response.setContentType("text/html; charset=UTF-8");// 한글 처리
		PrintWriter out = response.getWriter();
		out.print("<html><body>");
		out.print("<h2 style='color:blue;'>** Get/Post Test **</h2>");
		out.print("<h3> => 전달된 Parameter 확인</h3>");
		out.print("<h3> => ID : " + id + "</h3>");
		out.print("<h3> => Name : " + name + "</h3>");
		out.print("</body></html>");
		
	}//doGet
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("** do post **");
		doGet(request, response);
	}//doPost
클라이언트가 해당 GET 요청을 보냈을때 ,
서버의 파라미터를 받아처리하고 , 응답을 HTML 형식으로 작성하여 클라이언트에게 전달하는 구조

1. 파라미터의 한글처리 : request.setCharacterEncoding("UTF-8");
2. 파라미터 추출 
3. 응답의 한글처리 : response.setContentType("text/html; charset=UTF-8"); : GET 요청에서는 생략가
4. 출력 객체를 활용하여 응답 전송

 

결과