我有这种情况:
我需要将附件上传到服务器。我有jsp page
和servlet
来处理我的请求。在我上传文件之前,我需要检查重复的文件名,以便在不通知用户的情况下不替换文件。所以在我的servlet中,我正在进行适当的检查并将request attribute
设置为true,这样当我forward the request to the jsp page
并看到该属性设置为true时,我会向用户显示一个对话框(使用时) ()jquery)以便用户选择要采取的操作(保持两者,覆盖,取消)。
我唯一担心的是当页面刷新时,即same request is submitted
,在属性设置为true之后,attribute remains true
因此在刷新时我正在加载对话框。当然,我不希望这种情况发生。
有什么东西可以帮我解决这个问题吗?这是我的代码。
UploadFile.java - 我的Servlet
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
processRequest(request, response);
}
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException
{
request.setAttribute("duplicate", null);
if (!isDuplicate(file)){
// .. handle uploading
}
else
{
// if duplicate
request.setAttribute("duplicate", "true");
ServletContext context = getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher("/ticketsform.jsp");
dispatcher.forward(request, response);
}
response.sendRedirect("ticketform.jsp");
}
ticketform.jsp
<%
String isDuplicate = (String)request.getAttribute("duplicate");
if (isDuplicate != null)
{ %>
<script type="text/javascript">
duplicateFilesOption(); // call js function to display dialog
</script>
<% } %>
感谢您提前提供任何帮助:)
答案 0 :(得分:0)
您可以将以下内容添加到您的jsp中。
这将告诉浏览器重新发送请求,而不是重新显示结果。
<head>
<meta HTTP-EQUIV=Expires CONTENT="0">
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
<head>
答案 1 :(得分:0)
在ticketform.jsp结束时,请删除该属性。
request.removeAttribute("attribute_name");
因此,在首先从请求中获取值之后,它最终会被删除。