[Spring/기초] ControllerSpring/Spring 기초2024. 1. 18. 22:24
Table of Contents
728x90
반응형
Spring 서버를 실행하고 localhost로 들어갈때 가장 처음 하는 것이 Controller이다.
그렇다면 이는 뭐고 왜 사용될까?
Controller란?
@'Controller'는 Spring 프레임 워크에서 웹 어플리 케이션의 요청을 처리하는데 사용되는 애노테이션이다.
그렇다면 사용하는 이유는 뭘까?
1. Http 요청 처리
@Controller는 HTTP 요청을 처리하고 클라이언트로부터의 요청을 적절한 메서드로 매핑해서 처리한다. 이는 사용자가 웹 애플리케이션과 상호작용 할때 발생하는 요청을 처리하는데 사용된다.
@Controller
@RequestMapping("/example")
public class ExampleController {
@GetMapping("/hello")
public String hello() {
return "hello"; // 뷰의 이름, 실제 뷰는 ViewResolver에 의해 렌더링됨
}
@PostMapping("/submit")
public String submitForm(@ModelAttribute FormData formData) {
// 폼 데이터 처리 로직
return "result"; // 결과를 나타내는 뷰로 이동
}
}
2. 비지니스 로직 분리
사용자 인터페이스와 비지니스 로직을 분리하기 위해서 사용된다. 웹은 사용자 상호작용 처리하고 실제 비지니스 로직들을 서비스 계층으로 분리해 실행한다.
@Service
public class ExampleService {
public String processBusinessLogic(String input) {
// 비즈니스 로직 수행
return "Processed: " + input;
}
}
@Controller
@RequestMapping("/example")
public class ExampleController {
@Autowired
private ExampleService exampleService;
@GetMapping("/process/{input}")
@ResponseBody
public String processInput(@PathVariable String input) {
return exampleService.processBusinessLogic(input);
}
}
3. View 렌더링
View를 렌더링해서 클라이언트에게 전달하는 역할을 한다. 사용자에게 보여질 화면은 주로 뷰와 템플릿 엔진을 통해 생성되며 이를 관리한다.
@Controller
public class ViewController {
@GetMapping("/hello")
public ModelAndView helloView() {
ModelAndView modelAndView = new ModelAndView("hello"); // 뷰 이름 설정
modelAndView.addObject("message", "Hello, World!"); // 모델 데이터 설정
return modelAndView;
}
}
4. URL 매핑
@Contorlller는 틍정 URL 패턴에 대한 매핑을 담당한다. 클라이언트의 요청이 특정 URL로 들어오면 해당 URL를 처리할 수 있는 Controller의 메서드로 라우팅된다.
@Controller
@RequestMapping("/api")
public class ApiController {
@GetMapping("/data")
@ResponseBody
public String getData() {
return "API data response";
}
}
5. 웹 application 구조
웹계층의 구조를 담당한다. 이를 통해서 유지보수를 쉽게 할 수 있다.
@Controller
@RequestMapping("/app")
public class AppController {
@GetMapping("/home")
public String home() {
return "home";
}
}
728x90
반응형
'Spring > Spring 기초' 카테고리의 다른 글
[Spring/기초] spring MVC (0) | 2024.01.21 |
---|---|
[Spring/기초] Entity 만들기 (0) | 2024.01.20 |
[Spring/기초] Spring boot Mysql 연결 (0) | 2024.01.20 |
[Spring/기초] Spring boot 기본 폴더 구조 설명 (0) | 2024.01.19 |
[Spring/기초] Controller Vs RestController (0) | 2024.01.19 |
@코딩하는 자연대생 :: 자연대생도 코딩을 하고 싶어
Coding, Software, Computer Science 내가 공부한 것들 잘 이해했는지, 설명할 수 있는지 적는 공간