카테고리 없음
웹 백엔드 (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에 값을 넣어 주니 화면 상의 정보가 위와 같이 변경되었습니다.