1

我有这种情况:

我需要将附件上传到服务器。我有一个jsp page和一个servlet处理我的请求。在我上传文件之前,我需要检查重复的文件名,这样我就不会在不通知用户的情况下替换文件。因此,在我的 servlet 中,我正在做适当的检查并将 a 设置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");
}

票证.jsp

<% 
    String isDuplicate = (String)request.getAttribute("duplicate"); 

    if (isDuplicate != null)
    {   %>
        <script type="text/javascript">
            duplicateFilesOption(); // call js function to display dialog
        </script>
<%  }   %>

提前感谢您的帮助:)

4

2 回答 2

0

在ticketform.jsp 的末尾,请删除该属性。

request.removeAttribute("attribute_name");

因此,在最初从请求中获得价值后,它最终会每次都删除。

于 2013-07-25T11:35:11.537 回答
0

您可以将以下内容添加到您的jsp。

这将告诉浏览器重新发送请求而不是重新显示结果。

<head>   
<meta HTTP-EQUIV=Expires CONTENT="0">   
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">  
<head>
于 2013-07-25T09:15:53.713 回答