이번 포스팅은 이전에 작성한 직원 관리 예제를 가지고 설명을 하려고 합니다.
[Java/Spring-framework] - Spring MVC 예제 - 직원 관리 프로그램
위의 포스팅에서는, DB 접근을 제외한 Controller, View, Model, VO, DAO를 작성 해 보았습니다. 아주 기본적이고 간단한 예제라서 작성까지 오래 걸리지 않는 예제였습니다.
이번 포스팅에서는 URL을 컨트롤러에 매핑 해 주는 역할을 한 @RequestMapping 어노테이션을 가지고 설명을 하려고 합니다.
컨트롤러에 @RequestMapping 어노테이션을 통해 URL을 매핑 해 주는데요, 이 매핑을
1) 메서드 수준의 @RequestMapping
2) 클래스 수준의 @RequestMapping
3) HTTP Request Method만 사용하는 @RequestMapping
이렇게 세가지로 나누어서 설명과 예를 들어보려고 합니다.
1) @RequestMapping 메소드 레벨
CRUD 작업을 모두 구현했다고 가정 하였을때, 이전의 코드를 사용해 진행 해 본다면, 아래와같습니다.
@Controller
public class EmployeeController
{
@RequestMapping("/employee-management/employees")
public String getAllEmployees(Model model)
{
//application code
return "employeesList";
}
@RequestMapping("/employee-management/employees/add")
public String addEmployee(EmployeeVO employee)
{
//application code
return "employeesDetail";
}
@RequestMapping("/employee-management/employees/update")
public String updateEmployee(EmployeeVO employee)
{
//application code
return "employeesDetail";
}
@RequestMapping(value={"/employee-management/employees/remove","/employee-management/employees/delete"})
public String removeEmployee(@RequestParam("id") String employeeId)
{
//application code
return "employeesList";
}
}
마지막 removeEmployee 메서드 처럼, 다수개의 URL을 매핑 할 수 있습니다.
value = { "Value 1" , "Value 2"}
로 작성을 해 준다면, URL Value1 로도 접근이 가능하고, URL Value2 로도 접근이 가능합니다.
2) @RequestMapping 클래스 레벨
이제 각 메서드에 적용 했던 어노테이션의 공통적인 부분을 묶어 보도록 하겠습니다.
@Controller
@RequestMapping("/employee-management/employees/*")
public class EmployeeController
{
@RequestMapping
public String getAllEmployees(Model model)
{
//application code
return "employeesList";
}
@RequestMapping("/add")
public String addEmployee(EmployeeVO employee)
{
//application code
return "employeesDetail";
}
@RequestMapping("/update")
public String updateEmployee(EmployeeVO employee)
{
//application code
return "employeesDetail";
}
@RequestMapping(value={"/remove","/delete"})
public String removeEmployee(@RequestParam("id") String employeeId)
{
//application code
return "employeesList";
}
}
공통적인 부분을 클래스 단위로 RequestMapping 해 주고, 각 메서드 마다 Mapping을 한번 더 해준다면 URL은 클래스 - 메서드 순으로 읽혀지게 됩니다.
즉, String updateEmployee 메서드를 예로 들면 URL은 /employee-managemnet/employees/update 가 되는 것 입니다.
3) @RequestMapping HTTP Request Method
이외에도 HTTP 요청 유형 값으로만 매핑(RequestMapping) 할 수 있습니다. 이런 유형의 디자인은 RESTful Web Service에서 일반적으로 등장하는 내용입니다.
@Controller
@RequestMapping("/employee-management/employees")
public class EmployeeController
{
@RequestMapping (method = RequestMethod.GET)
public String getAllEmployees(Model model)
{
//application code
return "employeesList";
}
@RequestMapping (method = RequestMethod.POST)
public String addEmployee(EmployeeVO employee)
{
//application code
return "employeesDetail";
}
@RequestMapping (method = RequestMethod.PUT)
public String updateEmployee(EmployeeVO employee)
{
//application code
return "employeesDetail";
}
@RequestMapping (method = RequestMethod.DELETE)
public String removeEmployee(@RequestParam("id") String employeeId)
{
//application code
return "employeesList";
}
}
위의 예에서는 동일한 URL에 요청 방법(Request Method) 만 다르게 작성한 것입니다. 같은 URL에 각각 다른 요청 방법으로, 유형 별로 컨트롤러를 나누어 들어오게 됩니다.
'Old Branch' 카테고리의 다른 글
스프링 부트(Spring Boot)와 Security, MySQL, React를 사용한 Spring Polling App (2) (2) | 2019.07.18 |
---|---|
스프링 부트(Spring Boot)와 Security, MySQL, React를 사용한 Spring Polling App (1) (1) | 2019.07.17 |
Spring MVC 예제 - 직원 관리 프로그램 (2) | 2019.07.15 |
Spring Project 스프링 프로젝트 시작하기 - Spring Boot JPA (0) | 2019.07.13 |
Spring Project 스프링 프로젝트 시작하기 - JDBC,mysql,mybatis(2) (0) | 2019.07.12 |