Spring 3: отобразить page.html на page.jsp - PullRequest
5 голосов
/ 20 мая 2011

Я использую Spring 3, и я не знаю, как отобразить somepage.htm на somepage.jsp без контроллера. То есть: если я иду на somepage.htm, я хочу, чтобы он показал мне JSP. Но, конечно, без перенаправления. Я не хочу, чтобы кто-либо видел только ".jsp" .htm "

 <servlet>
    <servlet-name>Training01</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
 </servlet>

 <servlet-mapping>
    <servlet-name>Training01</servlet-name>
    <url-pattern>*.htm</url-pattern>
</servlet-mapping>

<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
    <value>/jsp/</value>
</property>
<property name="suffix">
    <value>.jsp</value>
</property>

Ответы [ 2 ]

5 голосов
/ 20 мая 2011

Способ сделать это - использовать тег <mvc:view-controller..> в сочетании с распознавателем представления.

См. здесь для получения дополнительной документации:

Тег <mvc:view-controller..> отображает URL для просмотра. Поэтому, если вы хотите сопоставить относительный URL /login с именем входа для просмотра, вы должны сделать это, добавив в файл webmvc-context.xml следующую строку:

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

Конечно, чтобы это работало, вам нужно иметь разрешение представлений - то, что сопоставляет логические имена с конкретными представлениями - в вашем контексте. В вашем случае, так как вы используете прямой jsps для слоя просмотра, вы захотите добавить что-то подобное в свою конфигурацию:

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

Таким образом, с этой настройкой, если у вас есть jsp login.jsp, расположенный в вашей директории /WEB-INF/jsp, вы сможете напрямую ссылаться на этот jsp из URL www.myapp.com/mycontenxtroot/login

См. здесь для получения дополнительной информации о преобразователях представления:

0 голосов
/ 20 мая 2011

Вас может заинтересовать UrlRewriteFilter . Это подход, который я бы рекомендовал. Если вы серьезно относитесь к чистым URL-адресам, то, скорее всего, вам это понадобится в какой-то момент.

С другой стороны, если он одноразовый, минимальный контроллер может быть проще:

@Controller
public class Somepage {
    @RequestMapping("/somepage")
    public String handler() {
        return "somepage.jsp";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...