Javascript 使用Jquery的Submit和$post时,程序的行为不同
我正在经历一个混乱的情况,当点击按钮时,pdf应该被下载。我的设计和要求如下:Javascript 使用Jquery的Submit和$post时,程序的行为不同,javascript,java,jquery,jsp,servlets,Javascript,Java,Jquery,Jsp,Servlets,我正在经历一个混乱的情况,当点击按钮时,pdf应该被下载。我的设计和要求如下: 点击按钮 显示带有两个按钮的确认框保存和打开 如果选择“保存”,则pdf应保存在本地计算机上 第三点是我面临的问题,因为没有确认框。在这里,当使用提交按钮提交表单时(无确认框),将下载文件。代码如下: <button type="submit" id="Export">xxx_tutorial</button> Servlet: package com.testcase.testing;
保存
和打开
提交按钮提交表单时(无确认框),将下载文件。代码如下:
<button type="submit" id="Export">xxx_tutorial</button>
Servlet:
package com.testcase.testing;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class button
*/
@WebServlet("/button")
public class button extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public button() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append(request.getParameter("param"));
performTask(request,response);
}
private void performTask(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
String pdfFileName="";
if(request.getParameter("param")==null){
}
else if(request.getParameter("param").matches("sap_webi_tutorial")){
System.out.println("in create pdf file name part");
pdfFileName = "/"+request.getParameter("param")+".pdf";
}
else{
}
String contextPath = getServletContext().getRealPath(File.separator);
File pdfFile = new File(contextPath + "/xxx_tutorial.pdf");
response.setContentType("application/pdf");
response.addHeader("Content-Disposition", "attachment; filename=" + "/xxx_tutorial.pdf");
response.setContentLength((int) pdfFile.length());
FileInputStream fileInputStream = new FileInputStream(pdfFile);
PrintWriter responseOutputStream = response.getWriter();
int bytes;
while ((bytes = fileInputStream.read()) != -1) {
responseOutputStream.write(bytes);
}
fileInputStream.close();
responseOutputStream.flush();
responseOutputStream.close();
}
}
如果您submit
表单,浏览器中显示的页面将收到该操作的结果-这就像单击一个链接
调用$.post()
将在后台发送数据,并将结果数据返回到回调函数(在您发布的代码中为空)。所以你必须在这个函数中处理结果
有关背景信息,请参阅
也许您可以执行您的逻辑,然后不再调用$.post()
,而只需从JavaScript代码中重新提交表单
选中此选项可直接提交表单:
先生,谢谢您的回答。。。实际上,我的下载代码是在servlet中的,所以我刚刚将数据传递给servlet,但是我如何在jsp中捕获下载文件呢?有什么方法可以做到这一点,因为我尝试使用javascript,但我的要求是我需要有一个自定义的确认框,这只能通过Jquery实现
package com.testcase.testing;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class button
*/
@WebServlet("/button")
public class button extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public button() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append(request.getParameter("param"));
performTask(request,response);
}
private void performTask(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
String pdfFileName="";
if(request.getParameter("param")==null){
}
else if(request.getParameter("param").matches("sap_webi_tutorial")){
System.out.println("in create pdf file name part");
pdfFileName = "/"+request.getParameter("param")+".pdf";
}
else{
}
String contextPath = getServletContext().getRealPath(File.separator);
File pdfFile = new File(contextPath + "/xxx_tutorial.pdf");
response.setContentType("application/pdf");
response.addHeader("Content-Disposition", "attachment; filename=" + "/xxx_tutorial.pdf");
response.setContentLength((int) pdfFile.length());
FileInputStream fileInputStream = new FileInputStream(pdfFile);
PrintWriter responseOutputStream = response.getWriter();
int bytes;
while ((bytes = fileInputStream.read()) != -1) {
responseOutputStream.write(bytes);
}
fileInputStream.close();
responseOutputStream.flush();
responseOutputStream.close();
}
}