ssm登录页面不跳转

ssm的controller层不跳转
代码里的return"error",如果输错会跳到error页面,但是它没跳转而是直接在页面显示了error

img

img

img

img

img

这个是因为你添加了@ResponseBody注解,你需要去掉它!
如果你加了@ResponseBody注解,代表你向客户端传的数据为一个JSON格式的数据,内部是用ObjectMapper进行处理的;
当你不加它的时候,默认就是去寻找静态资源,这个前缀后缀可以自己配置,默认是请求转发;当然你也可以通过"forward:???.??"这种形式。
还有就是Model存放数据本质就是放在请求域,你既然使用了request.....当然我也不知道你具体操作这个点不好说。

去掉@ ResponseBody注解

@ada;
回答一下

检查一下spring配置类,是否有配置路径后缀

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    首先,需要在配置文件中添加以下配置:

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    

    这样可以告诉Spring MVC框架,在返回视图名时自动添加前后缀,返回的路径即为“/WEB-INF/pages/” + 视图名 + “.jsp”。

    然后,在Controller中设置跳转语句,并且对错误进行处理:

    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public String login(HttpServletRequest request, Model model)
        throws Exception {
        String userName = request.getParameter("userName");
        String password = request.getParameter("password");
        Subject currentUser = SecurityUtils.getSubject();
        if (!currentUser.isAuthenticated()) {
            UsernamePasswordToken token = new UsernamePasswordToken(userName, password);
            try {
                currentUser.login(token);
            } catch (UnknownAccountException uae) {
                model.addAttribute("error", "用户名不存在!");
                return "login";
            } catch (IncorrectCredentialsException ice) {
                model.addAttribute("error", "密码不正确!");
                return "login";
            } catch (LockedAccountException lae) {
                model.addAttribute("error", "账户已锁定!");
                return "login";
            } catch (AuthenticationException ae) {
                model.addAttribute("error", "登录失败!");
                return "login";
            }
        }
        return "redirect:index";
    }
    
    @RequestMapping(value = "/index", method = RequestMethod.GET)
    public String index() throws Exception {
        return "index";
    }
    

    其中,错误信息被添加到Model中,并返回跳转到“login”视图,从而显示错误信息。

    最后,在jsp中需要判断是否有错误信息,并且进行相应的处理。例如:

    <c:if test="${not empty error}">
        <div class="alert alert-danger">${error}</div>
    </c:if>
    

    这样,当有错误信息时,会在页面上显示红色的提示信息。

    如果以上步骤都已经尝试了,但仍然无法跳转,可能需要检查路径是否正确,以及是否有其他错误或异常。

    答案:以上是具体的解决方案,如果还有其他问题或需要更详细的帮助,可以提供更多的信息并与开发团队进行沟通。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^