듀다의 성장개발로그

웹 백엔드 (3) - Servlet 본문

카테고리 없음

웹 백엔드 (3) - Servlet

du-da 2021. 1. 28. 11:55

서블릿(Servlet)이란 WAS에서 동작하는 자바 클래스로, HttpServlet 클래스를 상속한 클래스입니다.

자바 웹 애플리케이션에서 동적인 처리를 담당합니다.

 

자바 웹 애플리케이션에선 WEB-INF폴더의 web.xml파일이 웹 애플리케이션에 대한 정보를 가지고 있습니다.

3.0 미만에서는 반드시 이 파일이 필요하며, 3.0 이상 버전에서는 자바 어노테이션을 대신 사용합니다.

 

Servlet도 자바 클래스이기 때문에 이것을 다루는 것도 자바 클래스를 다루는 방법과 크게 다르지 않습니다.

 

New - Sevlet으로 서블릿을 생성합니다.

 

이름을 지정하고 Next를 누르면 위와 같은 화면으로 바뀌는데, URL 매핑 또한 변경할 수 있습니다.

 

그리고 필요한 메소드들을 체크한 뒤 Finish를 눌러 서블릿 생성을 완료하시면 됩니다. 

 

 

 

  package exam;

  import java.io.IOException;
  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 HiServlet
   */
  @WebServlet("/hi")
  public class HiServlet extends HttpServlet {
      private static final long serialVersionUID = 1L;

      /**
       * @see HttpServlet#HttpServlet()
       */
      public HiServlet() {
          super();
          // TODO Auto-generated constructor stub
      }

      /**
       * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
       */
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          // TODO Auto-generated method stub
          response.getWriter().append("Served at: ").append(request.getContextPath());
      }

      /**
       * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
       */
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          // TODO Auto-generated method stub
          doGet(request, response);
      }

  }

 

doGet과 doPost를 선택하였을 때 기본 생성 코드는 위와 같습니다.

원하는 동작을 위 메소드에서 지정해주면 됩니다.

 

 

 

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		String volume = request.getParameter("volume");
		out.println("<html>");
		out.println("<head><title>Volume Control</title></head>");
		out.println("<body>");
		out.println("<div>\r\n" + 
				"  <input type=\"range\" id=\"volume\" name=\"volume\"\r\n" + 
				"         min=\"0\" max=\"11\" value = " + volume + ">\r\n" + 
				" volume = " + volume +
				"</div>\r\n"
				);
		out.println("</body>");
		out.println("</html>");
	}

 

doGet과 input range를 활용한 예제를 만들어 보았습니다. get으로 받은 volume 값을 화면에 출력하고 input range로도 표현하는 예제입니다.

값이 정해지지 않았을 땐 볼륨 5와 null로 표현됩니다.

 

url에 값을 넣어 주니 화면 상의 정보가 위와 같이 변경되었습니다.