如何在Spring MVC中使用<mvc:view-controller />?

4
我将使用Spring MVC构建我的应用程序。当用户在浏览器中运行应用程序时,我想显示一个默认的jsp页面。我不想在web.xml中使用标签。
我猜可以使用以下方法:
 <mvc:view-controller />

我已创建一个文件夹,并将search.jsp添加到其中,路径为WEB-INF/views/search.jsp。
以下是示例spring-servlet.xml文件。
<?xml version="1.0" encoding="UTF-8"?>
  <beans ...>
      <context:component-scan
        base-package="org.lacare.frc.controller" />

      <!--      <bean class="org.lacare.frc.controller.ApplicationsController">
        <property name="formView" value="applications" />
        <property name="successView" value="CustomerSuccess" />
       </bean> -->
       <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
          <property name="prefix" value="/WEB-INF/view/"/>
         <property name="suffix" value=".jsp"/>
         </bean>



<mvc:view-controller path="/search" view-name="search.jsp"/>

我的web.xml文件如下所示

<?xml version="1.0" encoding="UTF-8"?>
<web-app ... version="2.5">
    <display-name>Spring3MVC</display-name>
    <mime-mapping>
        <extension>png</extension>
        <mime-type>image/png</mime-type>
    </mime-mapping>

    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener- class>
    </listener>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
          /WEB-INF/applicationContext.xml
        </param-value>
    </context-param>
</web-app>

我也尝试了以下方法,但是当我尝试运行应用程序时会出现错误。应该把search.jsp显示为默认页面。错误403--被禁止的访问。来自RFC 2068超文本传输协议HTTP/1.1: 10.4.4 403 Forbidden服务器理解请求,但拒绝执行它。
1个回答

7

你应该使用

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

视图名称为“search”,只有在您的配置中使用InternalResourceViewResolver时才能看到该视图。
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
     <property name="prefix" value="/WEB-INF/view/"/>
     <property name="suffix" value=".jsp"/>
 </bean>

通过在前缀中添加/WEB-INF/view/并在后缀中添加.jsp,将其解析为JSP。

在web.xml中更改Servlet映射。

<servlet-name>spring</servlet-name>
   <url-pattern>/</url-pattern>
</servlet-mapping>

我尝试过了。但是当我尝试运行应用程序时,出现了以下错误:search.jsp应该显示为默认页面。错误403--禁止。来自RFC 2068超文本传输协议HTTP / 1.1: 10.4.4 403禁止服务器理解了请求,但拒绝满足它。授权将无济于事,不应重复请求。如果请求方法不是HEAD,并且服务器希望公开为什么未能满足请求,则应在实体中描述拒绝的原因。 - Parag
我的猜测是,在上面没有显示的地方,你可能有一些额外的配置。也许是在 web.xml 中的 Spring 安全性或其他安全性相关的配置。 - Haim Raman
我已经添加了我的web.xml文件。请告诉我是否正确。我正在使用Weblogic服务器11g。search.jsp位于/WEB-INF/view/位置。 - Parag
我在web.xml中有一个<welcome-file-list>,现在我把它移除了。之后,403错误--禁止访问的错误已经消失了。现在我遇到了404错误--未找到的错误,这是一种进展。在浏览器中我输入以下URL - http://localhost:8080/MYApplicationName/ - Parag
为什么你不对文件夹名称视图或视图进行双重检查? - Shahid Pathan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接