서블릿 응답 처리 방법
- 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 |