用户刷新时如何处理Spring Boot控制器中的非jsp方法

我几天前刚刚开始研究 java spring boot,目前我正在研究 Spring Boot Web 应用程序。到现在为止我已经Signup,Singin并且Dashboard(Home Page)。当用户注册成功时,我将用户重定向到登录页面,当用户成功登录时,我将用户重定向到仪表板。

问题是当注册页面加载时,我正在调用register()方法@RequestMapping,完整的方法如下。

注意:全部大写字母的单词是静态字符串。


@RequestMapping(REGISTER)

public String register() {

    System.out.println("Register Working!!!!");


    return REGISTER;

}

在上面的方法中,网址变为http://localhost:8080/register 但在注册/注册页面上,当用户单击“注册”按钮时,我正在调用另一个名为“registerUser(Users user)完整方法”的方法,如下所示


@PostMapping("registerUser")

public ModelAndView registerUser(Users user) {

    ModelAndView mv = new ModelAndView();

    user.setIpAddress(AppUtils.getCurrentIp());


    if (isUserByUsernamePresent(user.getUsername()) || isUserByEmailPresent(user.getEmail())) {

        mv.setViewName(REGISTER);

        mv.addObject(MESSAGE_TYPE_ST, MESSAGE_TYPE_DANGER);

        mv.addObject(MESSAGE_Body_ST, "This username or email alreary exit!");

    } else {

        repo.save(user);

        Users tempUser = getUserDetail(user, "RegisterUser");

        if (user.getUsername().equals(tempUser.getUsername())) {

            mv.setViewName(INDEX);

            mv.addObject(MESSAGE_TYPE_ST, MESSAGE_TYPE_SUCCESS);

            mv.addObject(MESSAGE_Body_ST, "You have successfully created an account! check your email to confirm your registration");

        } else {

            mv.setViewName(REGISTER);

            mv.addObject(MESSAGE_TYPE_ST, MESSAGE_TYPE_DANGER);

            mv.addObject(MESSAGE_Body_ST, "Something went wrong, please try again or contact us!");

        }

    }

所以这里registerUser不是一个jsp页面,而是注册新用户的方法。现在 url 变为http://localhost:8080/registerUser。此时如果用户刷新页面,用户会收到一堆错误代码,因为registerUser不是jsp页面,因此用户无法直接调用它。


这是我的问题,在这种情况下如何处理http://localhost:8080/registerUser如果它不是 jsp 页面。我想到的一种解决方案是我应该只有一种方法register,或者registerUser检查用户对象是否为空,然后考虑调用来自加载页面,或者如果用户对象不为空,则调用来自注册按钮,所以我应该这样做保存用户的东西。


如果有更好的方法请告诉我。任何努力都会受到赞赏。如果需要公开更多代码,请告诉我。


编辑: @PostMapping("registerUser")如果注册成功,我将索引设置为视图名称,如果注册不成功,我将设置索引作为视图名称。那么url不应该分别是index或者register吗?


烙印99
浏览 45回答 1
1回答

慕雪6442864

您可以通过这种方式来解决刷新错误。完成处理后,从 registerUser 方法调用 GET 方法(重定向到控制器其他 GET 方法)以重定向到所需页面,因此,如果刷新页面,调用将针对该 get 方法而不是 post(registerUser)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java