【问题标题】:Spring 4 : How to map RequestMapping URLs to particular controllerSpring 4:如何将 RequestMapping URL 映射到特定控制器
【发布时间】:2015-09-05 11:25:18
【问题描述】:

我编写了一个带有多个控制器的 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 映射?

我有WebAppConfig 用@Configuration、@ComponentScan 和@EnableWebMVC 注释。它有以下几种方法:

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

请指教。

【问题讨论】:

  • 所以你想实现那个特定的控制器也有自己的 URL 映射?
  • 我想知道正确的方法,到目前为止,我的 Controller 类只是用 @Controller 注释进行了注释。那么我们是否应该提供到 Controller 类的 URL 映射并将该映射附加到 JSP 中的操作以及 RequestMapping URL
  • 发布您的 servlet-config.xml
  • 向控制器添加RequestMapping注解。
  • 不清楚你在问什么。您是否希望您的控制器有一个 URL,以便您的请求 URL /saveTable 改为 /foo/saveTable?

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    你需要做几件事

    1. 在 web.xml 中配置 Spring 的 DispatcherServlet 以拦截请求并将其定向到 Controller。例如,将 DispatcherServlet 映射到根目录下的请求,添加以下行

      <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 容器可以发现它们。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-25
    • 2012-10-25
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 2020-01-16
    • 1970-01-01
    相关资源
    最近更新 更多