java - 如何在一个请求中发送文件和重定向?

标签 java jakarta-ee servlets glassfish

我有一个将文件发送到客户端的 servlet。 是否可以添加重定向以开始下载并将用户重定向到另一个 html 页面? 这是我的代码:

  protected void processRequest(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            try {
                System.out.println("debut transfert fichier a " + request.getRemoteUser() + "/" + request.getRemoteAddr());

                response.setContentType("text/plain");
                response.setHeader("Content-Disposition",
"attachment;filename=my_file.pdf");
                // ServletContext ctx = getServletContext();
                File jnlp = new File(PATH);
                InputStream is = new FileInputStream(jnlp);

                int read = 0;
                byte[] bytes = new byte[BYTES_DOWNLOAD];
                OutputStream os = response.getOutputStream();

                while ((read = is.read(bytes)) != -1) {
                    os.write(bytes, 0, read);
                }
                 // not workinggetServletContext().getRequestDispatcher("/merci.html").forward(request, response);
                os.flush();

                os.close();
                is.close();
                HttpSession session = request.getSession();
                //    


            } catch (Exception ex) {
                System.out.println("Erreur inconnu lors transfert :" + ex);
            }

谢谢。

最佳答案

更好的方法是将用户发送到摘​​要/感谢页面(向其传递一个下载 URL),并将浏览器“重定向”到实际的下载 URL。

用户应该停留在第二页,因为浏览器会识别出“重定向”是下载而不是新页面。

关于java - 如何在一个请求中发送文件和重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11528503/

相关文章:

javascript - 使用 Spark-java 的独立应用程序

java - 在 Android 中构建一个简单的数组

Java 11 GC 时间戳

transactions - EJB3 事务传播

mysql - hibernate sql join查询错误: javax. servlet.ServletException:对于输入字符串

java - 使用 jdk 1.6 部署 war alltough 时获取 "Unsupported major.minor version 51.0"

java - Beanshell 不允许我将 jar 添加到 "default"JRE 类加载器?

eclipse - 如何将 Java EE 类导入 Eclipse?

java - 将大量 double 值从 Servlet 发送到 JSP

java - 未在 servlet 上调用 POST 方法 - GWT 项目