2011-05-20 107 views
5

我使用的是Spring 3,我不知道如何在沒有控制器的情況下將somepage.htm映射到somepage.jsp。 即:如果我去somepage.htm,我想讓它顯示我的jsp。但當然沒有重定向。我dontw希望任何人看到 「.JSP」 只 「熱媒」春季3:將page.html映射到page.jsp

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

回答

5

做的方式是使用<mvc:view-controller..>標籤結合視圖解析器。

更多文檔資料請參閱here

<mvc:view-controller..>標籤URL映射到的意見。所以,如果你想將相對URL /login映射到一個視圖名登錄,你會通過添加以下行來你webmvc-context.xml文件做到這一點:

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

當然要得到這個工作,你必須有一個查看解析 - 將邏輯名稱映射到特定視圖的東西 - 在您的上下文中進行設置。在你的情況下,由於使用的是直的JSP爲您查看層你會想這樣的事情添加到您的配置:

<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

對視圖解析器一些更多的信息請參見here

+0

啊,是的,「增加更多的XML」的做法。 ;) – Anonymoose 2011-05-21 01:55:25

+0

是的,春天和xml一起像花生醬和巧克力一樣。 – 2011-05-21 22:09:50

0

你可能會感興趣的UrlRewriteFilter。這是我會推薦的方法。如果您認真對待乾淨的網址,無論如何您都可能需要它。

在另一方面,如果它是一個一次性的,最小的控制可能會更容易:

@Controller 
public class Somepage { 
    @RequestMapping("/somepage") 
    public String handler() { 
     return "somepage.jsp"; 
    } 
}