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

Spring Boot中JSP表单提交返回404,无法映射Controller方法

问题原因及解决方案

核心问题

当管理员认证失败时,你的Controller方法返回了null,Spring MVC在这种情况下会默认尝试渲染与请求路径同名的视图文件(即loginaction.jsp),但你的项目中并没有这个文件,因此抛出404错误。

具体修复步骤

1. 修改Controller的返回逻辑

将认证失败时的return null改为返回登录页面的视图名称,同时保留错误提示信息:

@Controller
public class AdminController {
    
    @Autowired
    private AdminService adminService;
    
    @RequestMapping(value = "/loginaction", method = RequestMethod.POST)
    public String loginAction(ModelMap map, @RequestParam(value="adminname") String adminName, @RequestParam(value="password") String password) {
        
        Admin admin = adminService.authenticate(adminName, password);
        if(admin == null) {
            map.addAttribute("error", "管理员名称或密码错误");
            // 返回登录页面的视图名,需和你的登录页JSP文件名对应(比如登录页是login.jsp则返回"login")
            return "login";
        }
        return "entry";
        
    }
}

2. 确认JSP文件路径

确保你的登录页面JSP(比如login.jsp)放在/WEB-INF/views/目录下,Spring MVC的默认视图解析器会在此目录下查找视图文件。

3. 可选:规范表单action路径

为避免路径歧义,建议给表单的action加上项目上下文路径前缀:

<form action="${pageContext.request.contextPath}/loginaction" method="post">
    <input type="text" name="adminname">
    <input type="password" name="password">
    <button>Submit</button>
</form>

这样能确保在不同请求路径下,表单都能正确提交到目标Controller方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:10:34