웹프로그래밍에서 클라이언트의 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 Servlet 클래스의 구현 규칙을 지킨 자바 프로그래밍 기술
웹에서 클라이언트가 어떠한 요청을 하면 그에대한 결과를 돌려줘야하는데 이를 수행하는 것이 servlet이다
즉, 어떠한 사용자가 로그인을 하려고 할 때 사용자는 아이디와 비밀번호를 입력하고, 로그인 버튼을 누른다
그때 서버는 클라이언트의 아이디와 비밀번호를 확인하고, 다음 페이지를 띄워주어야 하는데, 이러한 역할을 수행하는 것이 바로 서블릿이다
servlet 애플리케이션을 만들고 있음에도 servlet을 전혀 사용하지 않는다
일반적인 서블릿 형태
// /owner/create
public class OwnerServlet extends HttpServlet {
// GET
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
}
// POST
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
현재 코드 모습
@GetMapping("/owners/new")
@LogExecutionTime
public String initCreationForm(Map<String, Object> model) {
Owner owner = new Owner();
model.put("owner", owner);
return VIEWS_OWNER_CREATE_OR_UPDATE_FORM;
}
@PostMapping("/owners/new")
@LogExecutionTime
public String processCreationForm(@Valid Owner owner, BindingResult result) {
if (result.hasErrors()) {
return VIEWS_OWNER_CREATE_OR_UPDATE_FORM;
}
else {
this.owners.save(owner);
return "redirect:/owners/" + owner.getId();
}
}
@GetMapping, @PostMapping을 이용하여 구현중이다
실제 아래에서는 위의 servlet 형태처럼 작동된다 현재 코드는 추상화를 통해 구현한 모습이다
MVC(Model View Contrller)
스프링이 제공하는 스프링 웹 MVC에서 추상화 계층 알아보기
위 애노테이션을 사용하면 요청을 매핑할수 있는 Contrller역활을 수행하는 클래스가 된다,
따라서 해당 클래스에 @GetMapping, @PostMapping을 이용해서 요청을 매핑을 한다
매핑
@GetMapping("/owners/new")와 같은 형태에서 해당 url요청이 들어왔을때 해당 애노테이션이 달린 메소드가 처리하게끔 매핑을 하는것
요청에 대해 어떤 Controller, 어떤 메소드가 처리할지를 맵핑하기 위한 어노테이션
클라이언트는 URL로 요청을 전송하고, 요청 URL을 어떤 메서드가 처리할지 여부를 결정하는 것
형태
@RequestMapping("/owners/{ownerId}")
A -> B -> C의 순서로 작업이진행 될 때 중간에 하나라도 안된다면 작업이 중단되는 형태를 Transaction이라 한다
즉, 다같이 되거나 하나라도 안되면 중단되는 형태 ex) 인터넷 쇼핑 물건 구매