SpringMVC 中没有 GET / 的映射

问题描述 投票:0回答:7

我正在尝试构建 Spring MVC Web 应用程序。 问题出在我的欢迎页面(localhost:8080 /)。在我的输出日志中我看到: 没有 GET /

的映射

我将欢迎页面设置为 URL: "/spring-mvc-login" 但每次我重新启动应用程序时,它都会尝试查找不在我的控制器中提供的 URL "/"。我想要 将欢迎页面重定向到 URL “/spring-mvc-login”,但它不起作用。

有趣的是,当我输入“localhost:8080/spring-mvc-login”时,它工作正常。唯一的问题是将此 URL 重定向到欢迎页面。

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>/</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>/spring-mvc-login</welcome-file>
    </welcome-file-list>

todo-servlet.xml

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

控制器

public class LoginController {

    @RequestMapping(value = "/spring-mvc-login", method= RequestMethod.GET)
    public String sayHello(){
        return "login";
    }

    @RequestMapping(value = "/spring-mvc-login", method = RequestMethod.POST)
        public String handleLoginRequest(@RequestParam String name, @RequestParam String password,
                                         ModelMap modelMap){
        modelMap.put("name",name);
        modelMap.put("password", password);
        return "welcome";

        }

}

Controller中,当我将@RequestMapping从“/spring-mvc-login”更改为“/”时,它当然工作正常,但我想将我的欢迎页面重定向到“/spring-mvc-login”而不是“/ ”。感谢您的帮助。

java spring spring-mvc dispatcher
7个回答
4
投票

确保在 src/main/java 中创建包和类,而不是在 src/main/resources 中。 如果 maven 没有创建 src/main/java 文件夹,只需创建该文件夹并将包文件夹/类移动到那里。 这样做解决了我的无映射错误。

希望这些信息对某人有用。


1
投票

不要忘记使用@RestController注释。 如果你想重定向使用:

@RequestMapping(value = "/", method = RequestMethod.GET)
public void redirect(HttpServletResponse httpResponse) throws Exception {

     httpResponse.sendRedirect("/spring-mvc-login");
}

1
投票

尝试删除“/”

之前

<welcome-file>/spring-mvc-login</welcome-file>

之后

<welcome-file>spring-mvc-login</welcome-file>

1
投票

将 @Controller 注解放在 Controller 类之上


0
投票

尝试更改web.xml内容:

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

或者将控制器映射更改为:

@RequestMapping(value={"/", "/spring-mvc-login"})

0
投票

只需在

spring-servlet.xml
文件中检查一次即可。

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

特别是基础包名称。


0
投票

如果您在测试环境中部署后遇到此问题,请交叉检查是否部署了正确的版本而不是旧版本。 我错过了这个,为可能错过同样事情的人发布这个。

© www.soinside.com 2019 - 2024. All rights reserved.