如何将此URL映射到Spring控制器方法?

如何将此URL映射到Spring控制器方法?,spring,controller,httpwebrequest,mapping,Spring,Controller,Httpwebrequest,Mapping,我使用的是Spring3.1.1.RELEASE。我正在将URL映射到控制器方法。我想将URL“/my context path/organizations/add”映射到下面的控制器方法。在我的控制器中,我有 @Controller @RequestMapping("/organizations") public class OrganizationController { … @RequestMapping(value = "/add", method = RequestM

我使用的是Spring3.1.1.RELEASE。我正在将URL映射到控制器方法。我想将URL“/my context path/organizations/add”映射到下面的控制器方法。在我的控制器中,我有

@Controller
@RequestMapping("/organizations")
public class OrganizationController
{

    …
    @RequestMapping(value = "/add", method = RequestMethod.GET)
    public ModelAndView doGetadd()
    {
        … do some stuff …
        return new ModelAndView("organizations/add");
    }   // doGetadd 
在我的web.xml中,我有

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
                                http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">

    <display-name>SB Admin</display-name>

    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/organizations/*</url-pattern>
    </servlet-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
    </context-param>
...
<!-- Enable annotation driven controllers, validation etc... -->
<mvc:annotation-driven />

<context:component-scan base-package="org.myco.subco" />

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

某人行政
调度员
org.springframework.web.servlet.DispatcherServlet
2.
调度员
/组织机构/*
org.springframework.web.context.ContextLoaderListener
上下文配置位置
/WEB-INF/dispatcher-servlet.xml
在dispathcer-servlet.xml中

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
                                http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">

    <display-name>SB Admin</display-name>

    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/organizations/*</url-pattern>
    </servlet-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
    </context-param>
...
<!-- Enable annotation driven controllers, validation etc... -->
<mvc:annotation-driven />

<context:component-scan base-package="org.myco.subco" />

    <bean id="viewResolver"
            class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix">
                    <value>/WEB-INF/views/</value>
            </property>
            <property name="suffix">
                    <value>.jsp</value>
            </property>
    </bean>
。。。
/WEB-INF/views/
.jsp
但对所需上下文路径的请求会导致“在DispatcherServlet中找不到URI为[/myproject-1.0-SNAPSHOT/organizations/add]的HTTP请求的映射,名称为“dispatcher”错误(使用JBoss 7)。我如何正确地映射这件事?请注意,我的控制器中有多个方法,我希望在“/organizations”空间中创建不同的URL。

根据模型和视图构造函数参数,该参数是视图文件的名称

因此该文件可以是
addView.jsp

以及您(据我所知)实际将其映射到/Application Name/organizations/organizations/add的事实,原因是:

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/organizations/</url-pattern>
</servlet-mapping>
我建议将requestmapping从控制器更改为

@Controller
@RequestMapping("/")
public class OrganizationController
/organizations/
基本上定义了可访问站点的“虚拟路径”。 您在控制器上执行的所有映射将附加到它,使其成为/organizations/whateverpagecomesher.jsp

并确保视图文件存在

根据定义,ModelAndView构造函数参数是视图文件的名称

因此该文件可以是
addView.jsp

以及您(据我所知)实际将其映射到/Application Name/organizations/organizations/add的事实,原因是:

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/organizations/</url-pattern>
</servlet-mapping>
我建议将requestmapping从控制器更改为

@Controller
@RequestMapping("/")
public class OrganizationController
/organizations/
基本上定义了可访问站点的“虚拟路径”。 您在控制器上执行的所有映射将附加到它,使其成为/organizations/whateverpagecomesher.jsp

并确保视图文件存在

试试这个

将dispatcher servlet映射更改为:

    <servlet-mapping>
      <servlet-name>dispatcher</servlet-name>
      <url-pattern>/</url-pattern>
    </servlet-mapping>
对于ContractsController,映射将是

    @Controller
    @RequestMapping("/contracts")
    public class OrganizationController
试试这个

将dispatcher servlet映射更改为:

    <servlet-mapping>
      <servlet-name>dispatcher</servlet-name>
      <url-pattern>/</url-pattern>
    </servlet-mapping>
对于ContractsController,映射将是

    @Controller
    @RequestMapping("/contracts")
    public class OrganizationController

我想确定我对你的理解是正确的。对于所有控制器,您建议我将“@RequestMapping(“/”)放在“@Controller”注释之前?我还有一个ContractsController,我想将其URL映射到“/contracts/add”、“/contracts/update”等等。您的建议对多个控制器有效吗?@Dave作为旁注,请在邮件中注明地址,这样我会收到您的回复:-)这与Usha给出的答案正好相反。我选择将您的上下文设置为/organizations/whateverpagecomesher.derp,这样,通过将
@RequestMapping
分配给“/”您实际上将访问/organizations/。。在控制器中没有它。这意味着对于第二个问题,您将访问/organizations/contracts/add.extension。在servlet映射中看到url模式的值了吗?我想确保我正确地理解了您。对于所有控制器,您建议我将“@RequestMapping(“/”)放在“@Controller”注释之前?我还有一个ContractsController,我想将其URL映射到“/contracts/add”、“/contracts/update”等等。您的建议对多个控制器有效吗?@Dave作为旁注,请在邮件中注明地址,这样我会收到您的回复:-)这与Usha给出的答案正好相反。我选择将您的上下文设置为/organizations/whateverpagecomesher.derp,这样,通过将
@RequestMapping
分配给“/”您实际上将访问/organizations/。。在控制器中没有它。这意味着对于第二个问题,您将访问/organizations/contracts/add.extension。在servlet映射中看到url模式的值了吗?请理解后再试。你提到的mycontext路径是什么…你的一些话让我感到困惑…无论如何,一个答案可以帮助你很多,因为删除url中的*,原因是如果你放*它还包括选择分派器的include意思是循环..理解后再试试..你提到的mycontext路径是什么…你的一些话让我很困惑…无论如何,一个答案可以帮你很多,因为删除url中的*,原因是如果你把*放进去,它还包括选择调度程序的包含,这意味着循环..神圣的上帝,成功了!很简单,但我一直在寻找。我今天投票给你当总统。很高兴它成功了!如果你还没有投票给总统:)神圣的上帝,你成功了!很简单,但我一直在寻找。我今天投票给你当总统。很高兴它成功了!如果你还没有投票给总统:)