Установка jsp вида по умолчанию с помощью Spring MVC - PullRequest
17 голосов
/ 24 марта 2010

Я хочу установить один из файлов jsp в своей папке jsps в качестве представления по умолчанию для приложения. Есть ли какой-нибудь способ, которым мы можем сказать в <welcome-file-list>, что abc.jsp должен быть значением по умолчанию, и его можно найти в том или ином пути. Кроме того, шаблон URL является html, поэтому есть способ, которым он может быть отображен в Spring MVC.

Например - когда пользователь вводит www.example.com, я хочу, чтобы приложение перенаправляло на страницу abc.jsp, а также когда кто-то печатает www.example.com/something, даже тогда приложение должно перенаправлять на abc.jsp, но шаблон URL не должен скомпрометированы.

Ответы [ 4 ]

34 голосов
/ 25 марта 2010

Добавить

<mvc:view-controller path="/" view-name="abc"/>

в конфигурационный файл. Тогда корень перейдет к представлению abc. Затем добавьте

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

в файл конфигурации. Это разрешит представление в /WEB-INF/view/abc.jsp.

16 голосов
/ 25 марта 2010

Например - когда пользователь вводит www.example.com, я хочу, чтобы приложение перенаправляло на страницу abc.jsp

Настройте его как <welcome-file> в web.xml следующим образом:

<welcome-file-list>
    <welcome-file>/abc.jsp</welcome-file>
</welcome-file-list>

, а также когда кто-то набирает www.example.com/something, даже в этом случае приложение должно указывать на abc.jsp, но шаблон URL не должен подвергаться риску.

Другими словами, вы хотите перенаправить несуществующие ресурсы (что может привести к ошибке HTTP 404 Page Not Found) в тот же файл? Затем определите его как <error-page> в web.xml:

<error-page>
    <error-code>404</error-code>
    <location>/abc.jsp</location>
</error-page>

Но ваш вопрос на самом деле немного двусмысленный. Если вы на самом деле не имели в виду вышесказанное и действительно хотите использовать /abc.jsp в качестве «контроллера страницы», то вам нужно определить его как <servlet> в web.xml вместо:

<servlet>
    <servlet-name>controller</servlet-name>
    <jsp-file>/abc.jsp</jsp-file>
</servlet>
<servlet-mapping>
    <servlet-name>controller</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

<welcome-file>, и <error-page> здесь не нужны)

Это, однако, недостаток в дизайне MVC (использование вида в качестве контроллера). Но если вы на самом деле просите об этом ..

2 голосов
/ 25 марта 2010

Решено -

Файл в списке файлов приветствия должен быть реальным файлом, поэтому abc.htm не работает. Единственный способ сделать это - создать index.jsp и перенаправить его, используя

<jsp:forward page="abc.html" />

также в yourapplication-servlet.xml необходимо указать отображение bean-компонента, например

<bean name="/abc.html" class="package.mypack.someController">  
    <property name="commandClass" value="package.mypack..something"/>
    <property name="formView" value="abc"/>
    <property name="successView" value="abc.htm"/>
</bean>  

Welcome-файл должен быть РЕАЛЬНЫМ файлом в файловой системе, он не работает с отображенными URL-адресами. Вы можете создать index.jsp, который перенаправляет на сопоставленный URL, но это должен быть фактический файл. Ничего общего с пружиной, в спецификации сервлета не указано, что так должно быть, хотя в целом на разных серверах приложений поведение может отличаться.

Я надеюсь, что это поможет кому-то

0 голосов
/ 23 ноября 2014

Это все поведение можно решить, добавив

<mvc:default-servlet-handler>

к твоей весне ../WEB-INF/dispatcher-servlet.xml
Это все тебе устроит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...