Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用spring在java中单击submit按钮后才能转到下一页_Java_Spring_Spring Mvc - Fatal编程技术网

如何使用spring在java中单击submit按钮后才能转到下一页

如何使用spring在java中单击submit按钮后才能转到下一页,java,spring,spring-mvc,Java,Spring,Spring Mvc,我只需要在单击提交按钮后重定向到页面,而不是直接在地址栏中键入url。如果直接在地址栏中键入,则应显示主页 Iam使用session.getAttribute执行上述过程。我在想,如果有任何替代方法,因为我需要为每个post方法都这样做 下面的方法用于第一页,我在其中创建了一个会话属性,该属性将在下一页中使用 @RequestMapping(value = "/payment", method = RequestMethod.POST) public String submitForPayme

我只需要在单击提交按钮后重定向到页面,而不是直接在地址栏中键入url。如果直接在地址栏中键入,则应显示主页

Iam使用session.getAttribute执行上述过程。我在想,如果有任何替代方法,因为我需要为每个post方法都这样做

下面的方法用于第一页,我在其中创建了一个会话属性,该属性将在下一页中使用

 @RequestMapping(value = "/payment", method = RequestMethod.POST)
public String submitForPayment(@ModelAttribute("deposit") Deposit deposit, ModelMap model, HttpServletRequest request) throws IOException 
{
            try {
                HttpSession sessionForNextPage = request.getSession(true);
                sessionForNextPage.setAttribute("vNumber",
                        deposit.getValidityNumber());

                    return "redirect:success";

            } catch (NullPointerException exception) {
                return "redirect:payment";
            }
        }
下面的方法用于使用上面声明的会话的下一页

@RequestMapping(value = "/success", method = RequestMethod.GET)
public String showSuccess(ModelMap model, HttpServletRequest request) 
          {
        try {

            view = "success";
            HttpSession session = request.getSession(false);
            int vNumber = (int) session.getAttribute("vNumber");
            System.out.println(vNumber);
            if (vNumber != 0) {
                request.getSession(false).removeAttribute("vNumber");
                return view;
            }

            else
                return "pay";
        } catch (Exception e) {

            return "redirect:pay";
        }
    }

有没有其他方法可以做到这一点,因为我必须对所有的方法都这样做…

每当我必须做post提交时,我总是使用一个中间页面来捕获POST数据,并将数据存储在数据库中,将记录键存储在会话中,并将其重定向到显示页面,在该页面中,我检查记录id(如果有),然后从DB检索数据,如果没有显示错误消息,则显示数据

因此,即使有人直接访问您的显示页面(键入url),它也会显示一条错误消息,在大多数情况下,人们不会看到中间页面url,但即使他们看到了,您也可以对html表单使用随机标记,并存储在会话中,并在中间页面上验证它


希望这将对您有所帮助。

使用拦截器并在拦截器方法中确定引用者url。 为需要拦截的每个操作或某些操作调用拦截器

public class AppInterceptor extends HandlerInterceptorAdapter{

    //before the actual handler will be executed
    public boolean preHandle(HttpServletRequest request, 
    HttpServletResponse response, Object handler) throws Exception {
        return true;
    }

//after the handler is executed
    public void postHandle(HttpServletRequest request, HttpServletResponse response, 
    Object handler, ModelAndView modelAndView) throws Exception {
        String referrer = request.getHeader("referer");
        // if the referrer string is null, it means the url is invoked by typing into address bad and then you can decide of redirecting user to home page.
    }
}
这会奏效的