控制器被多次击中 - 弹簧MVC

时间:2014-04-16 15:06:25

标签: java spring spring-mvc

我们正在使用spring3MVC框架开发应用程序。我们有创建,更新和删除reocords的功能,并且对于每个场景,在创建或更新或删除记录时必须将邮件发送给用户。但是有一个问题是当我在内部创建多次击打控制器并且多次向用户发送邮件时。我们怎样才能防止多次击中控制器。当iam调试时,我可以看到控件多次击中控制器。我是否需要修改xml配置文件中的任何内容。 以下是示例代码

@RequestMapping(value = "/createRecord", method = RequestMethod.GET)
public ModelAndView insertRecord(HttpServletRequest request,
    HttpServletResponse response,
        @ModelAttribute("requestDTO") ATRRequestDTO dto,
        BindingResult beException,
        @RequestParam("buttonName") String buttonName,
        @RequestParam("id") String atrID) throws IOException {

    // create session if its not available
    HttpSession session = request.getSession(true);
    ModelAndView mav = new ModelAndView();
    try{
        //code to insert the data if not exists
        if(conditinal check){
            sendMail();//if succesfully inserted record mail will be sent
        }
        mav.setViewName("atrRequest");
        mav.addObject("dataBean", dataBean);
        return mav;
    } catch(Exception e) { }
    return mav;
}   

提前致谢。

1 个答案:

答案 0 :(得分:0)

控制器可以多次被击中的唯一方法是客户端多次调用控制器。

您需要调试调用代码以查看多次调用的原因,可能是用户在发送邮件时刷新浏览器,在上一个请求仍在处理时单击按钮多次。

尝试在尚未收到对ajax请求的响应时禁用用户界面中的操作,并在收到对先前请求的响应后再次重新启用它们。