Web Programming/JSP

3. JSP Servlet Request Response

유가엘 2020. 3. 17. 11:12

lesson03_JSP_InputOutput.zip
0.01MB
lesson03_JSP_Servlet_Communication.zip
0.01MB

Servlet의 LifeCycle

Servlet을 생성하면 아래와 같이 간단한 방식으로 생성과 삭제가 이뤄집니다.

일반적으로 Service 에는 기능을 담당하며, doGet, doPost 를 사용합니다.

Request

화면(View)을 담당하는 .JSP, .HTML 에서 서버(Servlet)을 향해 데이터를 전달 할 수 있습니다.

 

doGet

URL안에 사용자의 데이터가 함께 전달됩니다.

구분자인 ? 파라메터명=값&파라메터명=값&... 형태로 URL이 출력됩니다.

http://localhost:8090/lesson03_JSP_Servlet_Communication/Gugudan?dan=5&start=2&end=9

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<!-- form 안에서 method ="get"을 선언하였습니다. 기본값입니다. -->
	<form action="Gugudan" method="get">
		단<input name="dan"> <br> 
		시작<input name="start"> <br>
		끝<input name="end"> <br> 
		버튼 태그로 만든 버튼입니다.	<button>출력</button>
	</form>

</body>
</html>
package lesson03_JSP_Servlet;

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;

@WebServlet("/Gugudan")
public class Gugudan extends HttpServlet {
	private static final long serialVersionUID = 1L;
    
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("doGet으로 접근하였습니다.");
		
		int dan = Integer.parseInt(request.getParameter("dan"));
		int s = Integer.parseInt(request.getParameter("start"));
		int e = Integer.parseInt(request.getParameter("end"));
		response.setCharacterEncoding("euc-kr");

		PrintWriter out = response.getWriter();
		out.print("<html>");
		out.println("<head><meta charset='euc-kr'><title>구구단</title></head>");
		out.println("<body>");
		out.print("<table border='1'>");
		out.printf("<tr><td><h2>%d단</h2></td></tr>", dan);
		for (int i = s; i <= e; i++) {
			out.printf("<tr><td>%d x %d = %d</td></tr>", dan, i, dan * i);
		}
		out.print("</table>");
		out.println("</body>");
		out.println("</html>");
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("doPost로 접근하였습니다.");
		doGet(request, response);
	}

}

doPost

사용자의 데이터가 Header 안에서 암호화 되서 전달 됩니다.

http://localhost:8090/lesson03_JSP_Servlet_Communication/Gugudan

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<!-- form 안에서 method ="post"을 선언하였습니다. 기본값입니다. -->
	<form action="Gugudan" method="post">
		단<input name="dan"> <br> 
		시작<input name="start"> <br>
		끝<input name="end"> <br> 
		input으로만든 버튼입니다.<input type="submit" value="출력"> <br>
		버튼 태그로 만든 버튼입니다.	<button>출력</button>
	</form>
</body>
</html>
package lesson03_JSP_Servlet;

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;

@WebServlet("/Gugudan")
public class Gugudan extends HttpServlet {
	private static final long serialVersionUID = 1L;
    
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("doGet으로 접근하였습니다.");
		
		int dan = Integer.parseInt(request.getParameter("dan"));
		int s = Integer.parseInt(request.getParameter("start"));
		int e = Integer.parseInt(request.getParameter("end"));
		response.setCharacterEncoding("euc-kr");

		PrintWriter out = response.getWriter();
		out.print("<html>");
		out.println("<head><meta charset='euc-kr'><title>구구단</title></head>");
		out.println("<body>");
		out.print("<table border='1'>");
		out.printf("<tr><td><h2>%d단</h2></td></tr>", dan);
		for (int i = s; i <= e; i++) {
			out.printf("<tr><td>%d x %d = %d</td></tr>", dan, i, dan * i);
		}
		out.print("</table>");
		out.println("</body>");
		out.println("</html>");
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("doPost로 접근하였습니다.");
		doGet(request, response);
	}

}

 만약 JSP 생성시, 생성되는 템플릿을 변경하고 싶다면 Windows > Preferences 에서 변경할 수 있습니다.

New에서 Template를 생성할 수있습니다. 아래 샘플은 HTML5입니다.

<%@page language="java" contentType="text/html; charset=${encoding}"
pageEncoding="${encoding}"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="${encoding}">
		<title>Insert title here</title>
	</head>
	<body>
	
	</body>
</html>