Во-первых я хотел бы сказать, что я довольно плохо знаком с Spring (в особенности платформа MVC), и просто пытающийся понять, как все работает, поэтому отнеситесь ласково ко мне.
Я играю вокруг с фиктивным приложением, которое я создал, и я создал простую форму входа в систему, к которой пользователи могут получить доступ через боб /login.html. Бобовое определение следующие:
<bean name="/login.html" class="test.controller.LoginController">
<property name="successView" value="list_messages.html" />
<property name="commandClass" value="test.domain.Login" />
<property name="commandName" value="login" />
</bean>
( Login
класс является простым объектом, содержащим поле имени пользователя и пароля с соответствующими методами считывания и методами set).
LoginController
класс фактически ничего не делает на данный момент:
public class LoginController extends SimpleFormController
{
@Override
protected ModelAndView onSubmit(Object command, BindException errors) throws Exception
{
return new ModelAndView(new RedirectView(getSuccessView()));
}
}
Теперь у меня есть один сопоставитель представления в моем бобовом файле определения, который идет следующим образом:
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
Для поддержки моего Входа в систему формируются, у меня есть login.jsp файл в моем jsp каталоге.
Мой вопрос следующие: почему доступ к /login.html перенаправляет меня к login.jsp? Я не указал formView свойство для своей формы, поэтому как сопоставитель представления знает для перенаправления меня к login.jsp?
Заранее спасибо за любую справку!
Joseph.
Если вы не укажете имя логического представления, Spring использует DefaultRequestToViewNameTranslator , который установлен по умолчанию . Итак, если ваш запрос выглядит примерно так:
http://127.0.0.1:8080/app/<LOGICAL_NAME_EXTRACTED_BY_VIEW_NAME_TRANSLATOR_GOES_HERE>.html
Вы видели
http://127.0.0.1:8080/app/login.html
, логическое имя, извлеченное ViewNameTranslator, будет логин , которое предоставляется для viewResolver и переведено в
/jsp/login.jsp
Ничего другого