首页 > 解决方案 > 没有为预期的 URL 调用 Spring Controller

问题描述

我正在尝试构建一个 SpringMVC 应用程序并尝试调用一个控制器。它给了我一个 java.io.FileNotFound 异常的错误。应用程序使用 RootContext 值“springmvc”构建并安装在 Websphere 9 上

调用 URL 以命中控制器 -

http://localhost:9080/springmvc/logon

并且此 URL 为“/logon”提供了一个 filenotFound。但是,同时http://localhost:9080/springmvc/ 与 Controller 绑定并将输出作为“Hello World”。我不确定为什么 /logon 未被识别。

我尝试将 web.xml 中的 URL 模式保留为 /springmvc/ 或 /springmvc/* 但它们都不起作用。我也试过在控制器中给出完整的路径。

控制器 '''

 ` @Controller
public class AdminController{

@RequestMapping(value="/logon" , method = RequestMethod.GET)
@ResponseBody
public String config(){
system.out.println("Inside Config Method");
return "Hello World!";
} ` 

'''

Web.xml

`

<servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/todo-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/springmvc/*</url-pattern>
</servlet-mapping> ` 

todo-servlet.xml -

` <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="springmvc.com.controller" />

    <mvc:annotation-driven />

</beans>` 

我希望http://localhost:9080/springmvc/logon从 AdminController 类返回响应。请建议我缺少什么或我应该尝试什么 url 模式?

标签: javaspringspring-mvc-test

解决方案


假设 AdminController 在 springmvc.com.controller 包上。我看到的问题是 url 模式,在这种情况下,登录应该在路径上: http://localhost:9080/springmvc/springmvc/logon

第一个(springmvc)是应用程序的上下文,所有的点都从它开始。第二个在您的应用程序内部。

您需要定义 / 以获得预期的结果。


推荐阅读