xpsharp通过本文主要向大家介绍了jsp+ajax实现无刷新上传文件的方法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
本文实例讲述了jsp+ajax实现无刷新上传文件的方法。分享给大家供大家参考,具体如下:
列表页:selectaddress.jsp
js页:ajax_edit.js
jsp处理页:editaddress.jsp
上传工具类:UploadUtil.java

思想:由于安全问题,javascript操纵不了文件, 导致ajax不能动态上传文件,所以选择了iframe,
列表页把form表单提交到一个隐式的iframe里面,设置表单的属性 然后,处理页处理后返回
列表页执行回调函数!
selectaddress.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="com.wap3.navigater.service.*" %>
<%@ page import="com.wap3.navigater.dao.*" %>
<%@ page import="com.wap3.navigater.pojo.*" %>
<%@ page import="com.wap3.navigater.util.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.text.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript" src="../js/ajax_edit.js"></script>
<script type="text/javascript" src="../js/jquery.jclock.js"></script>
<script type="text/javascript" src="../js/common.js"></script>
<script type="text/javascript" src="../js/jquery.form.js"></script>
<script type="text/javascript" src="../js/fileTypeJudge.js"></script>
<script type="text/javascript" src="../js/jquery.datepick.js"></script>
<script type="text/javascript" src="../js/jquery.datepick-zh-CN.js"></script>
<link media=all href="../css/common.css" type=text/css rel=stylesheet>
<title>Insert title here</title>
<style type="text/css">
@import "inc/jquery.datepick.css";
</style>
<script type="text/javascript">
var $imgthis;
$(function(){
var oldValue;
$(".package_list .edit").bind("dblclick",function(){
oldValue = $(this).text();
$(this).ajax_edit("editaddress.jsp",oldValue);
});
$(".package_list .edit_img").bind("dblclick",function(){ //
oldValue = $(this).html();
$imgthis = $(this);
$(this).parents("tr.package_list").siblings(".package_list").find(":input.cancel").trigger("click");
$(this).ajax_edit_img("editaddress.jsp",oldValue);
});
$(".package_list .edit :input[type!=file]:visible").live("blur",function(){
$(this).ajax_handle("editaddress.jsp?action=edit",oldValue);
});
$("#editcategoryName").live("change",function(){
$(this).ajax_handle("editaddress.jsp?action=edit",oldValue);
});
$("#del").click( function () {
if($(":checkbox.urlid:checked").size()>0){
var result = confirm("不可恢复的操作:确定要吗?"+ '\n' +"提示:如果删除大类会删除大类及下面的子类!!!");
if (result) {
var url = location.href;
alert(url);
return ;
$(".main_table").wrap("<form id='selectAddressForm' action='selectaddress.jsp?action=del' method='post'></form>");
$("#selectAddressForm").submit();
}
}else{
alert("请选择要删除的项目!");
return false;
}
});
});
function callback(msg) //处理JSP回调 过来的参数
{
$imgthis.html("<img class='logo' src='"+msg+"' title='"+msg+"' />");
}
</script>
</head>
<body>
<%
String action = ParameterUtil.getStringParameter(request,"action","");
FriendurlDao friendurlDao = new IbatisFriendurlDao();
if("del".equals(action)){
int[] urlids = ParameterUtil.getIntArrayParams(request,"urlid");
for(int urlid : urlids){
friendurlDao.deleteFriendurlByP(urlid);
}
}
String navigaterPage = request.getRequestURL().toString();
if(request.getQueryString()!= null){
navigaterPage += "?"+request.getQueryString();
}
int categoryId = ParameterUtil.getIntParameter(request,"categoryId",0);
if(categoryId == 0){
response.sendRedirect("selectcategory.jsp");
return;
}
int pageSize = ParameterUtil.getIntParameter(request,"pageSize",10);
int pageNo = ParameterUtil.getIntParameter(request,"pageNo",1);
String orderBy = ParameterUtil.getStringParameter(request,"orderBy","sequence");
int ascOrDesc = ParameterUtil.getIntParameter(request,"ascOrDesc",0);
CategoryDao categoryDao = new IbatisCategoryDao();
Category category = categoryDao.selectCategoryByP(categoryId);
String categoryName = category.getCategoryName();
Friendurl friendurl = new Friendurl();
friendurl.setCategoryId(categoryId);
friendurl.addOrderBy(orderBy,ascOrDesc);
List<Friendurl> friendurlList = friendurlDao.selectFriendurlByE(friendurl);
//分页
int totallpage = (int) Math.ceil(((double) friendurlList .size() * 1.0D)/ (double) pageSize);
pageNo =pageNo <= 0 ? 1 : pageNo;
pageNo =pageNo > totallpage ? totallpage : pageNo;
DataPageUtil datePage = new DataPageUtil(friendurlList ,friendurlList .size(),pageSize, pageNo);
boolean hasPrerPage = datePage.hasPrevPage();
boolean hasNextPage= datePage.hasNextPage();
int curpageNo = datePage.getPageNo();
int pageCount = datePage.getPageCount();
friendurlList = DataPageUtil.subList(friendurlList, pageSize, pageNo);
if(friendurlList == null && friendurlList.size()<=0) {
out.println("没有您需要的数据");
}else{
%>
<%@include file="inc/header.jsp" %>
<div id = "mainbox">
<div class = "c1">
<table class="main_table" width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<th align="center" height="20" colspan="13" align="center" bgcolor="#006699">条目列表</th>
</tr>
<tr>
<td width="10%" height="20" align="center" bgcolor="#009999">
<input id="AllORNoall" type="checkbox"><label for="AllORNoall">全选</label>
<input type="button" id="reserse" value="反选" />
</td>
<td width="7%" height="20" align="center" bgcolor="#009999">站点名称</td>
<td width="7%" height="20" align="center" bgcolor="#009999">站点别名</td>
<td width="7%" height="20" align="center" bgcolor="#009999">归类</td>
<td width="7%" height="20" align="center" bgcolor="#009999">公司地址</td>
<td width="7%" height="20" align="center" bgcolor="#009999">文字链接</td>
<td width="7%" height="20" align="center" bgcolor="#009999">图片链接</td>
<td width="7%" height="20" align="center" bgcolor="#009999">描述</td>
<td width="7%" height="20" align="center" bgcolor="#009999">有效开始时间</td>
<td width="7%" height="20" align="center" bgcolor="#009999">有效结束时间</td>
<td width="7%" height="20" align="center" bgcolor="#009999">电话</td>
<td width="7%" height="20" align="center" bgcolor="#009999">位置排序</td>
<td width="7%" height="20" align="center" bgcolor="#009999">推荐序号</td>
</tr>
<%
for

