2010-02-03 90 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配置中配置该页面。看看这个安全例如: