使用spring mvc设置默认的jsp视图

问题描述 投票:17回答:4

我想在我的jsps文件夹中设置一个jsp文件作为应用程序的默认视图。我们有什么方法可以告诉<welcome-file-list> abc.jsp需要默认,它可以在这样的道路上找到。 url模式也是html,所以有一种方法可以在Spring MVC中映射。

例如 - 当用户键入www.example.com时,我希望应用程序指向abc.jsp页面,当有人键入www.example.com/something时,即使然后应用程序应该指向abc.jsp,但url模式不应该被破坏。

java jsp spring-mvc
4个回答
34
投票

<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。


16
投票

例如 - 当用户键入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
投票

解决了 -

欢迎文件列表中的文件必须是真实文件,因此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,但它必须是一个实际的文件。与serv无关,在servlet规范中声明它必须是这种方式,虽然行为可能因应用程序服务器不同而不同,但一般来说它必须是真正的文件。

我希望这有助于某人


0
投票

这一切都可以通过添加来解决

<mvc:default-servlet-handler>

到你的春天../WEB-INF/dispatcher-servlet.xml 这将为您安排一切。

© www.soinside.com 2019 - 2024. All rights reserved.