[ JSP ] Survlet의 요청(Request)과 응답(Response)

duck-ach·2022년 10월 6일
0

JSP

목록 보기
3/14

요청(Request)

클라이언트가 서버로 보내는 '요청' 또는 '데이터'를 말한다.
GET방식과 POST방식이 있으며, GET과 POST에 관한 사항은 GET방식과 POST방식 을 참고하면 좋겠다.
HttpServletRequest request 객체가 처리한다. (Tomcat이 있어야 사용가능)

1. 요청에 포함된 한글 처리

대한민국에서 태어나서 대한민국 회사에서 일하게 된다면 UTF-8 처리를 꼭 해주어야 할것이다. 항상 쓰이는 것이라고 하니 더욱 더 기억해두자.

request.setCharacterEncoding("UTF-8");

2. 요청 파라미터(Parameter) 확인

URL?파라미터=값&파라미터=값

모든 파라미터는 String타입이다!

String name = request.getParameter("name");
String strAge = request.getParameter("age");

// null 처리
	int age = 0; // 초기화를 잘 해야한다.
	if(strAge != null) {
		age = Integer.parseInt(strAge);			
	}
		
	System.out.println(name + ", " + age);

만약 if처리 없이 age=Integer.parseInt(strAge);를 해준다면 500번대 오류가 뜬다.

이클립스를 실행시키고 실행창이 떴을때, 주소창의 파라미터를 수정해주면

아래와 같이 데이터가 삽입되어 출력이된다.

응답(Response)

서버가 요청(Request)에 대해 클라이언트로 보내는 '응답'을 말한다.
HttpServletResponse response 객체가 처리한다. (Tomcat이 있어야 가능)

사용자에게 전달할 데이터의 형식을 HTML 문서로 결정한다.

※ MIME-TYPE : 클라이언트에게 전송된 문서의 형식을 의미한다.
MIME-TYPE에 대해 자세히 알고싶다면?

// 	1) 사용자에게전달할 데이터의 형식을 HTML문서로 결정한다. (MIME-TYPE : 문서의 형식)

	response.setContentType("text/html"); // MIME-TYPE
		
	// 	2) 응답에 포함되는 한글 처리(문자셋)
	response.setCharacterEncoding("UTF-8");
		
	// 1) + 2) MIME-TYPE + 문자셋 동시에
	response.setContentType("text/html; charset=UTF-8");
		
	// 	3) 응답 스트림 생성
	//		(1) 문자 출력 스트림(*Writer)을 생성
	// 		(2) response 객체로부터 PrintWriter 객체를 얻을 수 있음
	//			- io패키지의 writer객체를 사용하면 IOExceotion처리를 해야하는데 이미 throws 처리가 되어있다.
	//			-- write() 메소드보다는 print()/println() 메소드를 이용하는 것을 권장
	PrintWriter out = response.getWriter();
		
	// 4) 응답 만들기(HTML 문서 만들기)
	out.println("<html lang=\"ko\">");
	out.println("<head>");
	out.println("<meta charset=\"UTF-8\">");
    out.println("<title>");
    out.println("나의 첫 번째 응답");
    out.println("</title>");
    out.println("</head>");
    out.println("<body>");
    out.println("<h1>안녕하세요. " +name +"님 반갑습니다 ♥ <h1>");
    if(age>=20) {
    out.println("<h1>귀하는 " + age + "살 이므로 입장이 가능합니다.</h1>");
    } else {
    out.println("<h1>귀하는 " + age + "살?애들은 다음에</h1>");
    }
    out.println("</body>");
    out.println("</html>");
	      
    out.flush(); // 출력 스트림에 남아 있는 모든 데이터 내보내기(만약을 위해서, 생략가능)
    out.close();

HTML에서 Servlet부르기

GET방식 요청 : <a> 태그

1) FULL주소 삽입

<div>
	<a href="http://localhost:9090/01_Servlet/AnchorServlet">링크1</a> <!-- Full 주소 (200) -->
</div>

2) (추천)Context path + URLMapping

<div>
	<a href="/01_Servlet/AnchorServlet">링크2</a> <!-- context path + mapping값 (200) -->
</div>

슬래시(/)가 있으면 context path 로 인식, 슬래시가

3) (404오류) mapping값을 Context Path값으로 인식

<div>
	<a href="/AnchorServlet">링크3</a> <!-- mapping값만 (404오류) -->
</div><!-- 슬래시로 시작하면 컨텍스트 패스로 인식 -->

4) (404) Context path를 mapping값으로 인식


<div>
	<a href="01_Servlet/AnchorServlet">링크4</a> <!-- mapping값만 (404오류) -->
</div> <!-- 슬래시가 있으면 context path로 슬래시가 없으면 URLmapping으로 인식 -->

5) (404)URLMapping값만 삽입


<div>
	<a href="AnchorServlet">링크5</a> <!-- (404) URL매핑으로 인식되지만, HTML문서의 경로에 따라 실행 여부가 다름 -->
</div>

연습1) 주어진 HTML에 Servlet을 이용해 주어진 문장 출력하기

출력 : 1+2=3

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<!-- 연습. -->
	<!-- 응답 : 1+2=3 -->
	<div>
		<a href="/01_Servlet/AnchorServlet?a=1&b=2">더하기</a>
	</div>
</body>
</html>
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		
		
		
	// 요청 - client에 있는 문제
	String strA = request.getParameter("a");
	String strB = request.getParameter("b");
		
	int a = 0;
	int b = 0;
	if(strA != null && strB != null) {
		a = Integer.parseInt(strA);
		b = Integer.parseInt(strB);		
			
			
	}
		
	// 응답 - client에 있는 문제
	PrintWriter outPlus = response.getWriter();
	outPlus.println("<h1>" + a + "+" + b + "=" + (a+b) + "</h1>");
}

결과

profile
자몽 허니 블랙티와 아메리카노 사이 그 어딘가

0개의 댓글