2010-02-03 130 views
1

我有一個基本的Java EE Spring(MVC)應用程序設置,它顯示帶有動態內容的主頁。我對Spring完全陌生,並且很困惑如何在這一點上繼續併爲我的應用程序添加更多頁面。我是否需要爲我的網站上的每個網址創建一個新的控制器?現在,我有以下映射在我的..-servlet.xml文件:Spring MVC配置問題

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="mappings"> 
    <value> 
     /index.html=homeController 
    </value> 
    </property> 
</bean> 

所以,如果我現在有一個新的一頁/登錄,我想補充一個映射/login/index.html?我更加困惑,因爲我試圖集成Spring-security來處理登錄頁面...

回答

0

如果您使用的是spring安全性,則不需要控制器來顯示登錄表單。您可以爲此目的使用任何jsp頁面,並且在spring將其發佈到j_spring_secutity_check時,您不需要控制器來處理它。檢查spring文檔如何在控制器中添加多個方法,您可能需要使用beanNmaeMapping類型的配置。另外現在更好的辦法是使用基於註解的配置,它可以幫助您配置任何POJO作爲控制器註解@Controller

0

您可以使用類似:

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

<bean id="handlerMapping" 
    class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 

    <property name="mappings"> 
     <props> 
      <prop key="/vehicleSearch">vehicleSearchController</prop> 
     </props> 
    </property> 
</bean> 

如果有一個文件/ WEB-INF/jsp/vehicleSearch.jsp它將被映射到vehicleSearchController。在這種情況下,JSP文件正在用於視圖,但您可以將其調整爲您的視圖技術。

通過這種方式進行配置,您仍然需要爲每個文件編寫一個映射。一種更好的方法(如Teja建議的)可能會在控制器中註釋映射並廢除XML配置。

例如

@Controller 
@RequestMapping("/vehicleSearch") 
public class VehicleSearchController { 
2

我會看看註釋控制器:

例子:

@Controller 
public class TestController { 

    @RequestMapping(value="/login/index.html") 
    public String login() { 
     return "login"; 
    } 

    @RequestMapping(value="/somethingelse/index.html") 
    public String login() { 
     return "somethingelse"; 
    } 
} 

當集合U p你的視圖解析器,返回的字符串將對應於一個文字頁面,也就是說somethingelse可以被定向到/jsp/somethingelse.jsp,如果你在你的Spring配置文件中設置瞭解析器。提示...您需要掃描註釋才能自動連線。 Spring-Security的處理方式有點類似,但與Spring MVC無關。如果正確完成,您需要爲配置安全性提供的唯一資源是簡單的登錄頁面,您可以在您的Spring配置中配置該頁面。看看這個安全例如: