我正在使用JSP和SERVLET开发WEB PROJECT。
我正在尝试使用AJAX上传文件。 文件已成功上传。 但是,当ajax调用controller(servlet文件)时,请求和响应对象发送到jsp文件。
JSP文件
$(document).ready(function(){
$(':file').change(function(){
var fileObj = this.files[0];
var form = $('#mOBJ');
var fd = new FormData();
fd.append( 'file', fileObj);
$.ajax({
url:form.attr('action'),
type:form.attr('method'),
data:fd,
processData: false,
contentType: false,
async:false,
}).done(function(){
alert('ajax complete');
/////////////////////////////////////////////// ///////////////// 在这里,我得到了旧的要求价值。 在调用ajax之后我想要新的请求和响应对象。
var Check2Bool = <%=context.getAttribute("comeFromUploadTemp")%>;
var check2 = <%=request.getAttribute("comeFromUploadTemp")%>;
alert(Check2Bool + " " + check2);
}).fail(function() {
alert( "error" );
$('#ldiv').hide();
});
});
的Servlet
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext context = getServletContext();
/**
* Display XML file to the user
*/
TemplateVO template = null;
TemplateUtil util = new TemplateUtil();
//Prepare XML file path
String path=(String) context.getAttribute(Constants.USER_DIR);
String strFilePath = null;
//Upload XML file
if(ServletFileUpload.isMultipartContent(request)){
try{
List<FileItem> multiparts = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
for(FileItem item : multiparts){
if(!item.isFormField()){
String name = new File(item.getName()).getName();
request.setAttribute("FileName",name);
String path1 = path + File.separator + "data-in";
strFilePath = FileUtil.createFileOnFileSystem(item,path1,name,"xml");
}
}
}catch(Exception ex){
ex.printStackTrace();
}
}
//set variables into Request Object
template = util.readXML(strFilePath);
context.setAttribute("comeFromUploadTemp", true);
request.setAttribute("comeFromUploadTemp", true);
request.getRequestDispatcher("mappingObject.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
答案 0 :(得分:0)
请求是JSP工作空间,notajax。 你应该通过响应i.o传递数据。请求。 像:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//... your code here
response.getOutputStream().write(data);
}
然后你可以解析响应并获得你想要的数据。
http://www.coderanch.com/t/522069/Servlets/java/Adding-Custom-Data-Response-Headers http://www.w3schools.com/ajax/ajax_xmlhttprequest_response.asp