在SpringMVC

时间:2018-11-21 18:28:38

标签: java spring spring-mvc dispatcher

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

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

有趣的是,当我键入“ localhost:8080 / spring-mvc-login”时,它可以正常工作。唯一的问题是将该URL重定向到Welcome-page。

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”而不是“ /”。感谢您的帮助。

5 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

尝试删除“ /”

之前

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

之后

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

答案 2 :(得分:0)

尝试更改web.xml内容:

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

或将控制器映射更改为:

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

答案 3 :(得分:0)

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

希望此信息对某人有用。

答案 4 :(得分:0)

将@Controller注解放在Controller类之上