본문 바로가기
Java/Spring

simple servlet

by java개발자 2021. 11. 14.

0. 개발환경

jdk 1.8

tomcat 7.0

eclipse 2021-06

1. new Dynamic Web Project (Dynamic web module version: 3.0)

2. new Servlet

3. Servlet1.java 코드가 생성됨.

web.xml의 servlet-mapping을 사용하지 않고, @WebServlet이 이용되었다.

package com.exmaple;

import java.io.IOException;
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("/Servlet1")
public class Servlet1 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public Servlet1() {
		super();
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

3. server 연결

4. server 실행

 

5. request로 들어오는 raw 데이터 확인 (웹서비스 등의 데이터 확인하는 용도로...)

package com.exmaple;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Enumeration;

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

	public Servlet1() {
		super();
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		
		System.out.println("==================== header ====================");
		printHeader(request);
		System.out.println("==================== parameter ====================");
		printParameter(request);
		System.out.println("==================== body ====================");
		System.out.println(getBody(request));
		doGet(request, response);
	}


	public static void printHeader(HttpServletRequest request) throws IOException {
		Enumeration<String> headerNames = request.getHeaderNames();
		while (headerNames.hasMoreElements()) {
			String headerName = headerNames.nextElement();
			System.out.println("header: " + headerName);

			Enumeration<String> headers = request.getHeaders(headerName);
			while (headers.hasMoreElements()) {
				String headerValue = headers.nextElement();
				System.out.println("value: " + headerValue);
			}
			System.out.println("");
		}
	}

	public static void printParameter(HttpServletRequest request) {
		Enumeration<String> names = request.getParameterNames();
		while(names.hasMoreElements()) {
			String name = names.nextElement();
			String value = request.getParameter(name);
			System.out.println("name: " + name);
			System.out.println("value: " + value);
			System.out.println();
		}
	}
	
	public static String getBody(HttpServletRequest request) throws IOException {
		String body = null;
		StringBuilder stringBuilder = new StringBuilder();
		BufferedReader bufferedReader = null;

		try {
			InputStream inputStream = request.getInputStream();
			if (inputStream != null) {
				bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
				char[] charBuffer = new char[128];
				int bytesRead = -1;
				while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
					stringBuilder.append(charBuffer, 0, bytesRead);
				}
			}
		} catch (IOException ex) {
			throw ex;
		} finally {
			if (bufferedReader != null) {
				try {
					bufferedReader.close();
				} catch (IOException ex) {
					throw ex;
				}
			}
		}
		body = stringBuilder.toString();
		return body;
	}
}

console log 결과

==================== header ====================
header: host
value: localhost:8080

header: content-type
value: text/plain

header: cookie
value: JSESSIONID=6135A7F982712586F8C070ED65DEDEC9

header: content-length
value: 28

==================== parameter ====================
name: name
value: yyy

name: age
value: 12

==================== body ====================
<a>
111
</a>
aaaa...~!~!~

 

 

출처:

https://stackoverflow.com/questions/14525982/getting-request-payload-from-post-request-in-java-servlet

https://examples.javacodegeeks.com/enterprise-java/servlet/get-all-request-headers-in-servlet/