我有一个JSP(AddDocument.jsp),其格式如下:
<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)。
我希望能够只返回一次来到X.jsp,所以我需要刷新我的JSP而不是重定向,但对请求和响应具有相同的效果(如果我手动刷新页面,则没有新提交)。
我怎么能这样做?
答案 0 :(得分:0)
您想要使用AJAX而不是简单的表单提交。除了不对浏览器历史做出贡献外,还应提供更好的&#34;大多数用户今天所期望的用户体验。