@ServletComponentScan // 서블릿 자동등록해줌
@WebServlet(name="helloServlet", urlPatterns = "/hello")
public class HelloServlet extends 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);
}
}
단축키 cmd+O : protected생성
쿼리 파라미터
http://localhost:8080/hello?username=kim 일 때
String username = request.getParameter("username");
System.out.println("username = " + username); // username = kim
http 요청 메시지는 원래는
POST /save HTTP/1.1 //스타트라인
Host: localhost:8080 // 헤더
Content-Type: application/x-www-form-urlencoded
username=kim&age=20 // 바디
...
START LINE
- HTTP 메소드
- URL
- 쿼리 스트링
- 스키마, 프로토콜
헤더
- 헤더 조회
바디
- form 파라미터 형식 조회
- message body 데이터 직접 조회
이런 식으로 담겨져 옴.
이것을 직접 일일히 파싱하기란 귀찮음.
이를 서블릿은 파싱해서 HttpServletRequest 객체에 담아 제공해줌.
++ 임시저장소 기능을 제공함.
저장: request.setAttribute(name, value)
조회: request.getAttribute(name)
//header정보에 들어간다.
response.setContentType("text/plain");
response.setCharacterEncoding("utf-8");
//화면에 보여진다.
response.getWriter().write("hello " + username);
주고 받는 http통신 모두 보기
logging.level.org.apache.coyote.http11=debug
main하위에 webapp디렉토리 생성 후 index.html, basic.html생성