본문 바로가기

Backend/Servlet

서블릿 응답 처리와 MIME-TYPE

서블릿 응답 처리 방법

  • doGet() 또는 doPost() 메소드 안에서 처리
  • javax.servlet.http.HttpServletResponse 객체 이용
  • setContentType()을 이용해서 클라이언트에게 전송할 데이터 종류(MIME-TYPE) 지정
  • 클라이언트(웹 브라우저)와 서블릿 통신은 자바 I/O 스트림 이용 (서버에서 클라이언트로 데이터 전송 시 자바 I/O 스트림 이용)
    • PrintWriter 클래스 사용
    • PrintWriter out = response.getWriter();
    • out.print(data); 
    • data : 웹 브라우저로 보내는 데이터
      • HTML 형식으로 출력되어야 하므로 
      • data에 HTML 태그 포함시켜서 전송
      • HTML 문서 형식을 제대로 작성해서 전송
      • 전송된 HTML 형식으로 출력

MIME-TYPE

  • 톰캣 컨테이너에 미리 지정해 놓은 데이터 종류로 서블릿에서 브라우저로 전송 시 설정해서 사용
  • HTML로 전송 시 : text/html
  • 웹 브라우저는 기본적으로 HTML을 인식하므로 text/html로 지정
  • 일반 텍스트로 전송 시 : text/plain
  • XML 데이터로 전송 시 : application/xml

서블릿 응답 처리 과정

 

서블릿 응답 처리 예제 - 1

  • 패키지 : sec03
  • login2.html
  • LoginServlet2.java
  • 매핑 이름 : /login2

login2.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>로그인창</title>
	</head>
	<body>
	  <form name="formLogin" method="post" action="login2" >
		   아이디  :<input type="text" name="user_id"><br>
	     비밀번호:<input type="password" name="user_pw" ><br>
	    <input type="submit" value="로그인">  <input type="reset" value="다시입력">
	  </form>
	</body>
</html>

 

LoginServlet2.java

package sec03;

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

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doProcess(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doProcess(request, response);
	}
	
	protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 클라이언트 요청 처리
		// 클라이언트 -> 서버로 전송되는 데이터 인코딩
		request.setCharacterEncoding("utf-8");
		String id = request.getParameter("user_id");
		String pw = request.getParameter("user_pw");
		
		// 응답 처리
		// 서버 -> 클라이언트로 setContextType
		response.setContentType("text/html;charset=utf-8");
		
		// 서버에서 클라이언트로 데이터 전송
		// 자바 I/O 스트림 이용
		PrintWriter out = response.getWriter();
		// HTML 문서 형식으로 데이터 전송
		out.print("<html><head></head><body>");
		out.print("아이디 : " + id + "<br>");
		out.print("비밀번호 : " + pw + "<br>");
		out.print("</body></html>");
	}

}

서블릿 응답 처리 예제 - 2

 

  • newMember2.html
  • NewMemberServlet2.java
  • 매핑 이름 : newMember2
  • 폼 데이터 서버로 전송된 데이터를 다시 클라이언트로 응답해서 HTML 형식으로 출력

newMember2.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>회원가입 폼</title>
		<style>			
			#id, #pwd { width: 100px;}
			table { margin:0 auto; width:600px; }
		</style>
			
	</head>
	<body>
		<div id="wrap">
	        <h3 align="center">회원 가입</h3>
	        <hr>
	        <form id="newMemberForm" name="newMemberForm" method="post" action="newMember2">
	          <table>
	          	<tr><td> 성명</td><td><input type="text" id="name" name="name"></td></tr>
	            <tr><td> ID</td><td><input type="text" id="id" name="id"></td></tr>
	            <tr><td>비밀번호</td><td><input type="password" id="pwd" name="pwd"></td></tr>
	            <tr><td>휴대폰 번호</td><td><input type="text" id="hp1" name="hp1" size="3"> 
	                    - <input type="text" id="hp2" name="hp2" size="4">
	                    - <input type="text" id="hp3" name="hp3" size="4"></td></tr>   
	            <tr><td>학년</td><td><input type="radio" id="year1" name="year" value="1" >1학년
	                                     <input type="radio" id="year2" name="year" value="2">2학년
	                                     <input type="radio" id="year3" name="year" value="3">3학년
	                                     <input type="radio" id="year4" name="year" value="4">4학년</td></tr>
	            <tr><td>관심분야</td>
	                  <td><input type="checkbox"  id="web" name="interest" value="웹 프로그래밍">웹 프로그래밍
	                         <input type="checkbox"  id="design" name="interest" value="파이썬">파이썬
	                         <input type="checkbox"  id="bigdata" name="interest" value="빅데이터">빅데이터
	                         <input type="checkbox"  id="java" name="interest" value="자바">자바 프로그래밍</td></tr>
	            <tr><td>학과</td>
	                  <td><select id="department" name="department">
	                               <option value="">선택하세요</option>
								   <option value="경영학과">경영학과</option>
								   <option value="산업공학과">산업공학과</option>
								   <option value="경제학과">경제학과</option>
								   <option value="전자공학과">전자공학과</option>
								   <option value="컴퓨터학과">컴퓨터학과</option>
	                          </select></td></tr>
	             <tr>
	                <td colspan="2" align="center">
	                    <br><input type="submit" value="완료">
	                    <input type="reset" value="취소">
	                </td>
	            </tr>             
	          </table>
      		</form>	
      	 </div>            
    </body>
</html>

 

NewMemberServlet2.java

package sec03;

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

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doProcess(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doProcess(request, response);
	}
	
	protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 클라이언트 요청 처리
		// 클라이언트 -> 서버로 전송되는 데이터 인코딩
		request.setCharacterEncoding("utf-8");
		String name = request.getParameter("name");
		String id = request.getParameter("id");
		String pwd = request.getParameter("pwd");
		
		// 응답 처리
		// HTML 문서 형식으로 데이터 전송
		// 서버 -> 클라이언트로 setContextType
		response.setContentType("text/html;charset=utf-8");
		
		// 서버에서 클라이언트로 데이터 전송
		// 자바 I/O 스트림 이용
		PrintWriter out = response.getWriter();
		// HTML 문서 형식으로 데이터 전송
		out.print("<html><head></head><body>");
		out.print("이름 : " + name + "<br>");
		out.print("아이디 : " + id + "<br>");
		out.print("비밀번호 : " + pwd + "<br>");
		out.print("</body></html>");
	}

}

 

'Backend > Servlet' 카테고리의 다른 글

DTO vs VO  (0) 2021.12.28
자바스크립트로 서블릿에 요청하기 예제  (0) 2021.12.27
GET / POST 방식  (0) 2021.12.27
서블릿 요청 API  (0) 2021.12.27
URL / URI / ContextPath / ServletPath  (0) 2021.12.27