Spring/공부

서블릿 데이터 요청, 응답 방법

synclair 2023. 4. 13. 01:52

서블릿 위해 HttpServlet를 클래스에서 상속 받아야함

@WebServlet(name = "requestBodyJsonServlet", urlPatterns = "/request-body-json")  
public class RequestBodyJsonServlet extends HttpServlet {  

}  

HTTP 요청 데이터

GET 쿼리 파라미터

(1) 전체 파라미터 조회

request.getParameterNames().asIterator()  
.forEachRemaining(paramName -> System.out.println(paramName + "=" + request.getParameter(paramName))); 

(2) 단일 파라미터 조회

request.getParameter("받은 파라미터");

(3) 이름이 같은 복수 파라미터 조회

String[] usernames = request.getParameterValues("username");
for( String name : usernames){  
  System.out.println("받은 파라미터 = " + 받은 파라미터);  
}

- API 메시지 바디 - 단순 텍스트 요청

ServletInputStream inputStream = request.getInputStream();  
String messageBody = StreamUtils.copyToString(inputStream, 상태메시지);  

- API 메시지 바디 - JSON 형식 요청

ServletInputStream inputstream = request.getInputStream();  
String mesageBody = StreamUtils.copyToString(inputStream, 상태메시지);  

// Json 데이터 -> 객체 파싱    
HelloData helloData = objectMapper.readValue(messageBody, HelloData.class);  

// 테스트  
System.out.println("helloData.getUsername() = " + helloData.getUsername());  
System.out.println("helloData.getAge() = " + helloData.getAge());  
response.getWriter().write("ok");  

HTTP 응답데이터

-쿠키 보내기

Cookie cookie = new Cookie("쿠키 키 이름", "쿠키 값");  
cookie.setMaxAge(쿠키지속시간\[초\]);  
response.addCookie(cookie);  

단순 텍스트,HTML

//Content-Type 설정  
response.setContentType("text/html");  
response.setCharacterEncoding("utf-8");  

PrintWriter writer = response.getwriter();  
writer.println("<html>");  
writer.println("</html>");  

API JSON 전송

//Content-Type json 설정  
response.setContentType("application/json");  
객체 매핑   
ObjectMapper objectMapper = new ObjectMapper();  

객체 -> Json(String)  
String result = objectMapper.writeValeAsString(객체);  

Json 전송   
respons.getWriter().write(객체);