2015-01-01 4 views
0

Я пытаюсь понять, как весна mvc создает разметку. Например, рассмотрим простой контроллер:Понимание разрешения изображения весной mvc

@Controller 
public class HelloController{ 

    @RequestMapping("/hello") 
    public String hello(){ 
     return "hello"; 
    } 
} 

и сказать, что мы применяем UrlBasedViewResolver, определенный в dispatcher-servlet.xml следующим образом:

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="prefix" value="/WEB-INF/views/"> 
    <property name="suffix" value="jsp"> 
</bean> 

Что the javadoc резольвера делает, говорит, что у нас есть три методы, возвращающие экземпляр интерфейса View. Первый

protected AbstractUrlBasedView buildView(String viewName),

второй

protected View createView(String viewName, Locale locale)

и третий

protected View loadView(String viewName, Locale locale).

До тех пор, пока интерфейс View имеет метод render(Map<String,?> model, HttpServletRequest request, HttpServletResponse response) Я бы предположил, что после создания экземпляра представления мы вызываем этот метод для рендеринга разметки для клиента. Но я не уверен, работает ли это на самом деле.

В общем, мой вопрос заключается в том, какой метод принимает jsp -страницу и возвращает экземпляр View для визуализации клиенту.

ответ

1

В общем, мой вопрос заключается в том, какой метод принимает jsp-страницу и возвращает экземпляр представления, который будет отображаться клиенту.

В случае UrlBasedViewResolver, который был бы createView метод, который для JSP будет возвращать InternalResourceView.

Насколько рамки разрешения зрения касается, интерфейса ViewResolver является точкой входа, и имеет метод resolveViewName который принимает имя вида («привет» в вашем примере ") и возвращает View объекта, а затем вызывает render на что.

методы buildView, createView и loadView все внутренние специфичны для UrlBasedViewResolver реализации ViewResolver.

Смежные вопросы