我正在尝试构建 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”而不是“/ ”。感谢您的帮助。
确保在 src/main/java 中创建包和类,而不是在 src/main/resources 中。 如果 maven 没有创建 src/main/java 文件夹,只需创建该文件夹并将包文件夹/类移动到那里。 这样做解决了我的无映射错误。
希望这些信息对某人有用。
不要忘记使用@RestController注释。 如果你想重定向使用:
@RequestMapping(value = "/", method = RequestMethod.GET)
public void redirect(HttpServletResponse httpResponse) throws Exception {
httpResponse.sendRedirect("/spring-mvc-login");
}
尝试删除“/”
之前
<welcome-file>/spring-mvc-login</welcome-file>
之后
<welcome-file>spring-mvc-login</welcome-file>
将 @Controller 注解放在 Controller 类之上
尝试更改web.xml内容:
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
或者将控制器映射更改为:
@RequestMapping(value={"/", "/spring-mvc-login"})
只需在
spring-servlet.xml
文件中检查一次即可。
<context:component-scan base-package="com.----"></context:component-scan>
特别是基础包名称。
如果您在测试环境中部署后遇到此问题,请交叉检查是否部署了正确的版本而不是旧版本。 我错过了这个,为可能错过同样事情的人发布这个。