Spring 4:如何将RequestMapping URL映射到特定控制器

时间:2015-06-19 12:58:49

标签: java xml jsp spring-mvc spring-4

我编写了一个带有多个控制器的Spring MVC应用程序。

在JSP上,我在表单上有action

 <form id="createTableForm" method="post" name="createTable" action="${pageContext.request.contextPath}/saveTable" >

并将相同的操作映射到Controller中的方法:

@Controller
public class TableController implements TableConstants {

  @RequestMapping(value="/saveTable")
  public String saveTable(HttpServletRequest request,RedirectAttributes redirectAttributes) {
  //...
  }
}

在我的web.xml

  <context-param>
    <description>Context name of the Application</description>
    <param-name>contextName</param-name>
    <param-value>W****</param-value>
</context-param>
<context-param>
    <description>Database used for</description>
    <param-name>databaseName</param-name>
    <param-value>w*****</param-value>
</context-param>

<welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
</welcome-file-list>

<filter>
    <filter-name>FilterChainProxy</filter-name>
    <filter-class>com.abc.w****.configuration.FilterChainProxy
    </filter-class>
</filter>
<filter-mapping>
    <filter-name>FilterChainProxy</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<session-config>
    <session-timeout>1</session-timeout>
</session-config>


<jsp-config>
    <taglib>
        <taglib-uri>http://displaytag.sf.net</taglib-uri>
        <taglib-location>/WEB-INF/tld/displaytag.tld</taglib-location>
    </taglib>
</jsp-config>

我是否需要在web.xml文件或WebAppConfig类中包含该特定控制器的URL映射?

我使用@Configuration,@ ComponentScan和@EnableWebMVC注释了WebAppConfig。它有以下方法:

 public UrlBasedViewResolver setupViewResolver() {
 }
 public MessageSource messageSource() {
 }
 public void addResourceHandlers(ResourceHandlerRegistry registry) {
 }
 public CommonsMultipartResolver multipartResolver() { 
 }

请告知。

2 个答案:

答案 0 :(得分:1)

@RequestMapping注释可以应用于控制器类。在这种情况下,此类中的所有方法都将从类注释派生默认值,并且实现可以覆盖它。

答案 1 :(得分:0)

您需要做几件事

  1. 在web.xml中配置Spring的DispatcherServlet来拦截请求并将其定向到Controllers。例如,将DispatcherServlet映射到root用户请求,添加以下行

    <servlet>
        <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    
  2. 确保在bean定义xml中,您已在包含控制器的程序包上配置了组件扫描,以便Spring容器可以发现它们。