2012-01-01 78 views
0

我有一個JSP(AddDocument.jsp)有以下形式:刷新JSP和Servlet後提交

<form action=" ${pageContext.request.contextPath}/project?to=submitAdd&idProject=${param.idProject}" method="post" name="form"> 
    <div>Name:</div> 
    <input type="text" name="name" /><br /> <br /> 
    <input type="submit" value="Add document" /> 
</form> 

當它提交調用servlet(ProjectManager),它具有以下功能:

private void addDocumento(HttpServletRequest request, HttpServletResponse response) { 
    HttpSession session=request.getSession(); 
    // elaborating... 
    session.setAttribute("addingResult", "Document added"); 
    // or error if an exception is caught 
    redirect(request.getContextPath()+"/project?to=add&idProject="+idProject,request,response); 
} 

設置會話的屬性後,即重定向到同一頁面,該屬性將由JSP讀取並顯示給用戶。
我的問題是,這種方式瀏覽器認爲它將進入一個新的頁面,並且其歷史記錄增加(例如,如果我從X.jsp中添加AddingDocument.jsp,在表單中插入10次無效名稱並重定向到同一個頁面出現錯誤,我將不得不返回10次才能到達X.jsp)。
我想只能返回1次才能到達X.jsp,所以我需要刷新一下JSP而不是重定向,但是對請求和響應的效果相同(即使手動刷新也不會有新的提交這一頁)。 我該怎麼做?

回答

0

你會想要使用AJAX而不是普通的表單提交。除了對瀏覽器歷史沒有貢獻外,它還應提供大多數用戶今天所期望的「更好」的用戶體驗。