톰캣이나 여러 WAS 서버가 많다. HttpServletRequest와 HttpServletResponse는 인터페이스인 것을 확인할 수 있다. 그러므로 이 인터페이스를 구현한 구현체들이 존재한다.
request 객체와 resonse 객체를 출력해보면 다음과 같이 확인해볼 수 있다.
WAS에서 request, response를 생성하고, 서블릿 컨테이너의 helloServlet을 실행한다! helloServlet이 종료되고 나면 Response 객체 정보로 HTTP 응답을 생성한다!
@WebserVlet 애노테이션 추가, 서블릿 이름과 url을 값으로 함께 넣어준다.
public class HeelloServlet이 실행되면서 이것은 HttpServlet을 상속 받는다!
package hello.servlet.basic;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name="helloServlet", urlPatterns ="/hello")
public class HelloServlet extends HttpServlet {//HttpServlet을 상속받는다!
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("HelloServlet.service");
System.out.println("request = " + request);
System.out.println("response = " + response);
String username = request.getParameter("username");
System.out.println("username = " + username);
response.setContentType("text/plain");
response.setCharacterEncoding("utf-8");//인코딩 정보 알려줘야함!
response.getWriter().write("hello"+username);//http응답 메시지 바디에 들어간다!
}
}