You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring MVC点击提交无法跳转目标JSP页面问题咨询

解决Spring MVC提交按钮无法跳转至目标页面的问题

兄弟,我之前也踩过Spring MVC跳转的坑,结合你描述的情况,咱们一步步来排查和解决:

核心问题分析

你遇到的跳转失败+修改action后出异常,大概率是请求映射不匹配或者路径/配置错误导致的,咱们从最常见的原因开始排查:

1. 检查Controller的请求映射是否匹配

你期望跳转至localhost:8080/input,那对应的Controller方法必须有准确的映射配置:

  • 首先确认Controller类上标注了@Controller注解,然后方法上的请求映射要和目标路径完全一致,同时请求方法要和form的method属性对应。示例代码:
@Controller
public class UserController {
    // 如果form用POST提交,就用@PostMapping;用GET就用@GetMapping
    @PostMapping("/input")
    public String handleLogin(User user, Model model) {
        // 把用户输入的name传到视图
        model.addAttribute("name", user.getName());
        // 返回视图名,对应input.jsp(需配合视图解析器)
        return "input";
    }
}
  • 你提到修改action为「inpu...」时出异常,很大概率是这个路径少打了字符(比如/input写成/inpu),而Controller里没有对应/inpu的映射,直接触发了404或者请求找不到的异常。

2. 检查starts.jsp中form标签的配置

form的action和method是跳转成功的关键,这里容易踩相对路径的坑:

  • 确保method属性和Controller的请求方法一致(比如Controller用@PostMapping,form就要写method="post")
  • action路径要注意绝对/相对路径的区别:
    • 写action="/input"是绝对路径(相对于服务器根目录),会请求localhost:8080/input
    • 写action="input"是相对路径(相对于当前页面路径/webapp/),会请求localhost:8080/webapp/input,如果Controller映射的是/input就会不匹配
  • 正确的form示例:
<form action="/input" method="post">
    <input type="text" name="name" /> <!-- name属性要和User类的name字段一致 -->
    <button type="submit">LOGIN</button>
</form>

3. 检查Spring MVC视图解析器配置

要确保视图解析器能正确找到你的input.jsp文件:

  • 如果是XML配置,需要在Spring配置文件中添加:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/" /> <!-- 你的jsp文件存放路径前缀 -->
    <property name="suffix" value=".jsp" /> <!-- 自动拼接后缀 -->
</bean>
  • 如果是JavaConfig配置:
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/jsp/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
}
  • 配置后,Controller返回"input"时,会自动定位到/WEB-INF/jsp/input.jsp,如果你的jsp放在其他目录,要修改prefix的路径。

4. 检查User模型类的正确性

Spring MVC依赖set/get方法绑定请求参数,确保你的User类写法正确:

public class User {
    private String name;

    // 必须有无参构造方法(Spring MVC默认调用)
    public User() {}

    // 正确的get/set方法,名称要规范(setName、getName)
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

如果set/get方法名称写错,会导致参数绑定失败,可能触发500异常。

5. 查看服务器控制台的异常日志

当修改action后出现异常,一定要看Tomcat(或你使用的服务器)的控制台日志,里面会有具体错误信息:

  • 404:请求路径找不到,说明action或Controller映射写错了
  • 500:服务器内部错误,大概率是参数绑定失败或视图解析器配置错误

6. 直接测试目标路径

可以直接在浏览器地址栏输入localhost:8080/input(如果是GET请求的话),如果能正常显示input.jsp,说明Controller和视图解析器没问题,问题出在form的action配置上;如果不能,就重点排查Controller和视图解析器。

总结

你遇到的问题最可能的原因是:action路径拼写错误(比如你说的「inpu...」)、Controller请求映射不匹配,或者视图解析器配置错误。按照上面的步骤一步步排查,应该能快速解决问题。

内容的提问来源于stack exchange,提问作者j6wj1997

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:36:55