我会通过在当按钮被点击PDF文件应该得到下载非常混乱的局面,我的设计和要求是一样的东西如下:
- 点击有两个按钮
save
和按钮 - 显示确认框
open
- 如果保存被选中,那么PDF应该被保存在本地计算机上。
第三点是我所面临的问题,因为在没有确认框 以下形式使用submit button
(没有确认框)时提交文件,然后是越来越下载。下面是代码:
<button type="submit" id="Export">xxx_tutorial</button>
但是,当只有一个button
与onclick
事件确认框写在Jquery
,我已经使用$Post
提交数据的servlet在数据传递到servlet中,但文件没有得到下载。现在
我的问题是:
是通过
$post
传递数据不等同于submit
与传递数据一起Servlet时点击提交按钮会发生什么。当数据被传递给servlet时,为什么文件没有被下载到相同的代码正在使用提交按钮时没有确认框。
真的我迷路了,无法理解确切的。请专家帮忙,我很乐意提供建议。
下面是代码:
JSP:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.11.2/themes/redmond/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.11.2.js"></script>
<script src="https://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<!-- User Defined Js file -->
<script type="text/javascript">
$(document).ready(function(){
$('#Export').click(function(event) {
event.preventDefault();
var currentForm = $(this).closest('form');
var dynamicDialog = $('<div id="conformBox">'+
'<span style="float:left; margin:0 7px 20px 0;">'+
'</span>Open or save the document</div>');
dynamicDialog.dialog({
title : "Open/Save Dialog",
closeOnEscape: true,
modal : true,
buttons :
[{
text : "Export",
click : function() {
$(this).dialog("close");
var data = "xxx_tutorial";
$.post('button', {param: data}, function(param){
});
}
},
{
text : "Open",
click : function() {
$(this).dialog("close");
}
}]
});
return false;
});
});
</script>
</head>
<body>
<button type="button" id="Export">xxx_tutorial</button>
</body>
</html>
的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();
}
}
感谢您的回答爵士...其实我下载的代码是在servlet的,所以我刚才通过数据的servlet,但我怎么捉下载文件回到jsp有没有办法做到这一点,因为我尝试使用JavaScript,但我的要求是我需要有一个自定义确认框,这是只可能通过JQuery – Siva