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

Spring Controller未返回JSP页面问题求助

问题分析与解决方案

嘿,这问题我太熟啦!你代码里的@ResponseBody就是罪魁祸首~这个注解的作用是直接将方法的返回值作为HTTP响应体返回给客户端,所以Spring不会帮你转发到JSP页面,而是把字符串result原封不动地输出了。

下面给你两种针对性的解决方案,看你需求选:

方案1:验证后跳转JSP页面(传统服务端渲染场景)

直接删掉@ResponseBody注解,让方法返回JSP的逻辑视图名,Spring会通过视图解析器帮你找到对应的JSP页面并跳转。

示例代码:

@RequestMapping(value="/adminvalidate")
public String validateAdmin(@RequestParam(value="userid",required=true) String userid, 
                            @RequestParam(value="password",required=true) String password) {
    String result = loginService.validateAdmin(userid, password); // 假设你有对应的业务逻辑
    
    if ("success".equals(result)) {
        return "adminDashboard"; // 跳转到后台首页的JSP
    } else {
        return "adminLogin"; // 验证失败回到登录页
    }
}

⚠️ 注意:要确保你的视图解析器配置正确,比如如果配置了前缀/WEB-INF/jsp/和后缀.jsp,那返回adminDashboard就会对应/WEB-INF/jsp/adminDashboard.jsp。

方案2:返回JSON结果(前后端分离场景)

如果你的前端是单独的SPA(比如Vue/React),需要后端返回验证状态的JSON,那保留@ResponseBody,但把返回值改成自定义的结果对象(Spring会自动转成JSON),让前端根据结果自行跳转。

示例代码:

@RequestMapping(value="/adminvalidate")
@ResponseBody
public Map<String, Object> validateAdmin(@RequestParam(value="userid",required=true) String userid, 
                                         @RequestParam(value="password",required=true) String password) {
    Map<String, Object> response = new HashMap<>();
    String result = loginService.validateAdmin(userid, password);
    
    if ("success".equals(result)) {
        response.put("status", "success");
        response.put("message", "验证通过");
        response.put("redirectUrl", "/admin/dashboard"); // 告诉前端跳转地址
    } else {
        response.put("status", "error");
        response.put("message", "用户名或密码错误");
    }
    return response;
}

额外小提示

如果验证成功后需要保存用户信息(比如会话),记得在方法里添加HttpSession参数,把用户信息存进去,比如:

public String validateAdmin(..., HttpSession session) {
    // 验证成功后
    session.setAttribute("currentAdmin", userid);
    return "adminDashboard";
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:30:12