- Servlet의 응답 처리방법
- doGet(), doPost() 메서드의 처리
- javax.servlet.http.HttpServletResponce 객체를 사용한 처리
- setContentType()을 이용한 클라이언트에게 전송할 데이터의 종류(MIME-TYPE)을 지정
- 클라이언트와 servlet의 통신은 자바I/O 스트림을 이용한다.
- MIME-TYPE
- 톰캣 컨테이너에서 미리 설정해 놓은 데이터 종류들을 MIME-TYPE(마임타입) 이라고한다.
- HTML로 전송시 -> text/html
- 일반 텍스트로 전송시 -> text/plain
- XML데이터로 전송시 -> application/xml
- 웹 브라우저는 기본적으로 HTML만 인식하므로 Servlet에서 전송하는 대부분의 데이터는 text/html로 전송한다
- Servlet에서 클라이언트 응답과정
- setContentType()을 이용해 MIME-TYPE 지정 -> 데이터 출력을 위한 PrintWriter 객체 생성 -> HTML 기반 출력 데이터 생성 -> PrintWriter내 print(), println() 사용하여 데이터 출력
- 톰캣 컨테이너에서 미리 설정해 놓은 데이터 종류들을 MIME-TYPE(마임타입) 이라고한다.
- 요청받은 Servlet 데이터를 I/O 이용한 출력
- login2.html
- <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>로그인</title>
</head>
<body>
<form name="frmLogin" method="get" action="login2" enctype="UTF-8">
아이디 : <input type="text" name="user_id"></br>
비밀번호 : <input type="password" name="user_password"></br>
<input type="submit" value="로그인">
<input type="reset" value="다시입력">
</form>
</body>
</html>
- <!DOCTYPE html>
- LoginServlet2.java
- @WebServlet(value = "/login2")
public class LoginServlet2 extends HttpServlet {
@Override
public void init() throws ServletException
{
System.out.println("init 호출");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
String user_id = request.getParameter("user_id");
String user_password = request.getParameter("user_password");
String data = "<html>";
data += "<body>";
data += "아이디 : " + user_id;
data += "</br>";
data += "비밀번호 : " + user_password;
data += "</body>";
data += "</html>";
out.println(data);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
- @WebServlet(value = "/login2")
- login2.html
- input name에서 넘어온 파라미터를 String 형식 request.getParameter()를 사용하여 변수에 저장 후 PrintWriter를 사용하여 화면상에 출력
- I/O Stream 을 사용한 환율 계산기 예제
- package sec02.ex01;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet(value = "/calc")
public class ClacServlet extends HttpServlet {
@Override
public void init() throws ServletException
{
System.out.println("init call");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter pw = response.getWriter();
String command = request.getParameter("command"); // 수행할 요청 받아오는것
String won = request.getParameter("won"); // 변환할 원화를 확인
String operator = request.getParameter("operator"); // 변환할 외화 종류를 받아옴
if(command != null && command.equals("calculate")) // 초기 응답시 command가 null이 아니며, command 값이 calculate 일경우
{
String result = calculate(Float.parseFloat(won), operator);
pw.print("<html><font size=10> 변환 결과</font></br>");
pw.print("<html><font size=10>" + result + operator + "</font></br>");
pw.print("<a href= '/calc'> 환율계산기 </a>");
return ;
}
pw.print("<html><title>환율 계산기</title>");
pw.print("<font font size=5>환율 계산기</font>");
pw.print("<form name='frmCalc action='calc' method='get' />");
pw.print("원화 : <input type='text' name='won' size='10'/>");
pw.print("<select name = 'operator'>");
pw.print("<option value='dollar'>달러</option>");
pw.print("<option value='en'>엔화</option>");
pw.print("<option value='wian'>위안</option>");
pw.print("<option value='pound'>파운드</option>");
pw.print("<option value='euro'>유료</option>");
pw.print("</select>");
pw.print("<input type='hidden' name='command' value='calculate'/>");
pw.print("<input type='submit' value='변환'/>");
pw.print("</form>");
pw.print("</html>");
pw.close();
}
private static String calculate(float won, String operator)
{
String result = null;
float USD_RATE = 1124.70F;
float JPY_RATE = 10.113F;
float CNY_RATE = 163.30F;
float GBP_RATE = 1444.35F;
float EUR_RATE = 1295.97F;
if(operator.equals("dollar"))
{
result = String.format("%.6f", won / USD_RATE);
}
else if(operator.equals("en"))
{
result = String.format("%.6f", won / JPY_RATE);
}
else if(operator.equals("wian"))
{
result = String.format("%.6f", won / CNY_RATE);
}
else if(operator.equals("pound"))
{
result = String.format("%.6f", won / GBP_RATE);
}
else if(operator.equals("euro"))
{
result = String.format("%.6f", won / EUR_RATE);
}
return result;
}
}
- package sec02.ex01;
'JAVA' 카테고리의 다른 글
Servlet 로그인 요청시 유효성 검사 간단 예제소스 (0) | 2021.07.26 |
---|---|
javaScript를 이용한 Servlet 요청 (0) | 2021.07.26 |
Servlet의 세가지 기본기능 (0) | 2021.07.21 |
서블릿의 생명주기 메서드 (0) | 2021.07.21 |
Servlet 특징 정리 (0) | 2021.07.21 |