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
相关产品推荐
相关产品推荐

