기록저장 블로그
스프링(Spring) - (3) Spring4 Controller 맵핑하기 본문
스프링에서 거의 사용자가 입력받은 부분들은 Controller 에서 작동한다.
따라서, 컨트롤러에서 맵핑한 주소로 접속하면 메소드에서 선언한 작업이 작동이된다.
지금부터 컨트롤러 주소 맵핑하는법을 알아보겠습니다.
- 다음 코드는 스프링 프로젝트 처음 생성시 기본으로 생성되는 컨트롤러 소스이다.
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
logger.info("Welcome home! The client locale is {}.", locale);
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
model.addAttribute("serverTime", formattedDate );
return "home";
}
}
이 코드를 보면 클래스 앞에 @Controller 어노테이션을 붙여주므로서 스프링에서 컨트롤러 클래스로 인식을 한다.
코드를 차근차근 해석을 해보면
public String home(Locale locale, Model model) {
}
home 이란 home 메소드 이름으로 컨트롤러를 정의해준것이다.
가로 안부분은 자바 메소드와 같이 변수, 클래스등을 정의해 불러와 사용할수 있다.
메소드 안에는 주소 호출시 실행되는 부분이므로, 원하는 것을 자바로 코딩해주면된다.
- 다음은 @RequestMapping 어노테이션은 이 글의 핵심인 주소 맵핑에 필요한 어노테이션이다.
여기서 value 부분에 /test 를 적으면 주소는 http://localhost/test로 된다.
주소 커스텀도 가능하다. ex) /test.go
그리고 @PathVariable 이 어노테이션을 이용하면 파라미터형식의 url 도 맵핑이 가능하다.
예제 소스
@RequestMapping(value = "/board/{param}", method = RequestMethod.GET)
public String board(@PathVariable("param") String param) {
System.out.println("요청 : " + param);
return "board";
}
이런식으로 주소를 맵핑하면 /board/notice 와 같은 주소로 맵핑을 할수가 있다.
어노테이션 앞에 변수를 사용해 데이터베이스에서 요청하거나, 파라미터 요청에 사용할수 있다.
이런식으로 맵핑하면 깔끔한 주소를 만들수 있다.
- 다음은 return 부분을 알아보도록한다.
컨트롤러에서 return 부분은 view 호출 방식으로 사용이 된다.
따라서 return "home" 을 하게되면 view 폴더의 home.jsp 파일을 불러오게 된다.
만약 views 폴더에 /board/list.jsp 파일이 있으면 return "/board/list" 로 입력하면된다.
이방식이 아니라도 스프링 플러그인을 이용해 다양한 뷰를 구현이 가능하다.
'코딩 > 스프링(Spring)' 카테고리의 다른 글
Spring boot properties(프로퍼티) 커스텀 변수값 가져오기 (0) | 2021.02.05 |
---|---|
스프링(Spring) - (2) Spring4 프로젝트 생성하기 (0) | 2016.12.07 |
스프링(Spring) - (1) Spring 개발환경 구축하기 (0) | 2016.12.07 |
Comments