четверг, 26 февраля 2015 г.

Сумбурно про Web MVC framework

Web MVC framework

Этот фремворк построен на DispatcherServlet . По русски это диспетчер. Если при слове диспетчер вы подумали о тетечке в стеклянной будке, которая что-то бубнит в громкоговоритель, то вы не ошиблись именно так и есть. Ей дали бумажку с текстом и она его вам доносит через громкоговоритель. И DispatcherServlet делает то-же самое. Он принимает запрос из браузера и несет его контроллеру. Контроллер это класс который будет решать что дальше делать с запросом. Аннотация @Controller указывает что наш класс будет выполнять функции контроллера. Выглядит это так:
@Controllerpublic class CategoryController {
}
Теперь DispatcherServlet будет знать что именно этот класс занимается обработкой запросов. Чтобы контроллер мог принимать решения о дальнейшей судьбе запроса используется аннотация
@RequestMapping:
@RequestMapping(value = "/")
public String index() {
    
    return "Hello world!";
}
В этой аннотации в скобках указывается "/", то-есть корень нашего сайта. Теперь контроллер точно знает что делать если браузер обращается к корню нашего сайта.
Вот так например: http://localhost:8080/. При таком запросе контроллер выполнит метод index() и мы увидим в браузере заветную надпись Hello World! Так-же сразу хочу добавить что аннотация @RequestMapping достаточно гибкая. В ней так-же можно указывать какой метод мы ожидаем в запросе:
@RequestMapping(value = "/category.html", method = RequestMethod.POST)
public String viewCategory() {
 // TO DO something
}
В этой аннотации указано, что если у нас запрос страницы category.html и метод запроса POST. То контроллер выполнит метод viewCategory(). Причем если мы запросим эту же страницу, но метод запроса будет GET, то мы получим 404. Тут можно еще немного добавить про аннотацию @RequestMapping. Можно например в одной аннотации указывать несколько обслуживаемых адресов:
@RequestMapping(value = {"/category.html","/"})
public String viewCategory() {
 // TO DO something
}
То-есть при обращении к корню нашего сайта: http://localhost:8080/ и при обращении к странице: http://localhost:8080/category.html. Будет выполняться один и тот-же метод. Вот как это выглядит вместе:
@Controllerpublic class CategoryController {

    @RequestMapping("/")
    public String index() {
        return "Hello World!";
    }
}


Комментариев нет:

Отправить комментарий