Настройка представления jsp по умолчанию с помощью spring mvc

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

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

Ответы

Ответ 1

Добавить

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

в файл конфигурации. Затем ROOT разрешит просмотр 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.

Ответ 2

Например - когда пользователь набирает 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 (с использованием представления в качестве контроллера). Но если вы действительно просите об этом.

Ответ 3

Решено -

Файл в списке приветственных файлов должен быть реальным, поэтому 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>  

Приветственный файл должен быть файлом REAL в файловой системе, который не работает с отображаемыми URL-адресами. Вы можете создать index.jsp, который перенаправляет на отображаемый url, но он должен быть фактическим файлом. Ничего общего с spring в спецификации сервлета указано, что он должен быть таким образом, хотя поведение может отличаться на разных серверах приложений в целом, оно должно быть реальным файлом.

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

Ответ 4

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

<mvc:default-servlet-handler>

на ваш spring ../WEB-INF/dispatcher-servlet.xml
Это все устроит для вас.