간단한 서블릿 소스코드를 보겠다.
@WebServlet(name = "helloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
System.out.println("username = " + username);
response.setContentType("text/plain");
response.setCharacterEncoding("utf-8");
response.getWriter().write("hello world " + username);
}
}
- @WebServlet
- name : 서블릿 Bean객체의 이름
- urlPatterns : URL 매핑주소 값
- protected void service() : 서블릿 컨테이너는 해당 메소드를 실행시킨다.
- HttpServletRequest, HttpServletResponse : HTTP요청 정보와 응답정보를 활용할 수 있다.
* 서블릿을 활용한 Servlet 동작 개념 및 HTTP요청 흐름
1. 스프링 부트를 실행하게 되면 스프링부트는 내장되어 있는 Tomcat서버를 실행시킨다.
2. 톰캣서버는 내부에 Servlet컨테이너기능을 가지고 있다.
3. 서블릿 컨테이너는 위 코드와 같이 정의된 서블릿들을 객체화 시켜 생성한다.(위 소스에서는 helloServlet이라는 이름으로 생성된다.)
4. 서블릿 객체가 생성된 was서버는 HTTP요청을 기다리다가, 요청이 들어오게 되면
5. Request, Response객체를 생성한 후
6. Servlet을 호출해주고
7. 작업을 완료한 후
8. Tomcat서버가 Response객체를 만든 후 Client에 반환해 준다.
* HttpServletRequest
HttpServletRequest는 HTTP요청 메세지를 편리하게 조회할 수 있게 해준다
Http 요청메세지는 주로 3가지 방식을 사용한다ㅣ
- GET - 쿼리파라미터 방식
- /url?membername=kang?age=20
- 메세지 바디 없이, URL 자체에 쿼리파라미터에 데이터를 포함시킨다.
- POST - HTML Form 방식
- content-type: application/x-www.form-urlencoded 이어야 한다.
- 메세지 바디(url X)에 쿼리파라미터 형식으로 전달한다
-
POST /save HTTP/1.1
HOST 127.0.0.1:8080
Content-Type: application/x-www.form-urlencoded
membername=kang&age=20
- HTTP message body에 직접 데이터를 넣어 요청하는 방식
- HTTP API에 주로 사용하며 주로 JSON형태로 쓰인다.
-
POST HTTP/1.1
HOST 127.0.0.1:8080/call-json
Content-Type: application/json
{
"membername": "kang",
"age":20
}
* HttpServletResponse
- HTTP 응답메세지 생성
- HTTP응답 코드 설정
- 헤더 생성
- 바디 생성
- 단순 텍스트 응답
- writer.pringln("ok")
- HTML응답
- writer.pringln("<html>") writer.pringln("<body>") ~~~~
- JSON응답
- {"membername": kang, "age": 20}
- 단순 텍스트 응답
- 편의 기능제공
- Content-Type
- Cookie
- Redirect
'Spring Boot > 4. SpringMVC part1' 카테고리의 다른 글
4. MVC패턴 (0) | 2021.06.01 |
---|---|
2-3. CSR , SSR (0) | 2021.06.01 |
2-2 Web 동시요청, 멀티쓰레드 (0) | 2021.06.01 |
2-1. 서블릿(Servlet) (0) | 2021.06.01 |
1. Web Application 이란? (0) | 2021.06.01 |