文件上传依赖:
<!-- 文件上传组件 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>${commons-fileupload.version}</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> </dependency>
在springmvc配置文件中增加解析器:
<! - SpringMvc文件上传时、需要配置MultipartResolver处理器- >
<豆ID = "multipartResolver" クラス = "org.springframework.web.multipart.commons.CommonsMultipartResolver">
<プロパティ名= "defaultEncoding"値=」 UTF-8 "> </ property>の
<プロパティ名=" maxUploadSize」値= "10485760"> </ property>の
</豆>
----導入JS jquery.form.js
<!--最基础jQuery.js都是基于这个 --> <script type="text/javascript" src="${pageContext.request.contextPath}/resouces/jquery-1.11.3.min.js"></script> <!-- 异步转换参数js --> <script type="text/javascript" src="${pageContext.request.contextPath}/resouces/jqueryExt.js"></script> <!-- 上传文件js --> <script type="text/javascript" src="${pageContext.request.contextPath}/resouces/jquery.form.js"></script>
页面表单设置:
<! -フォーム提交表单- > <フォームのクラス = "フォーム水平" idが= "Form1の"のenctype = "マルチパート/フォームデータ"> <DIV クラス = "行clearfix"> <DIV クラス = "フォーム-グループ"> <ラベル クラス =" COL-SM-1コントロールラベル">编号:</ label>は <divのクラス =" COL-MD-2列"> <! -编号- > の<input type ="隠された」ID = 『Staff_ID』クラス = 『フォームコントロール』NAME = "Staff_ID"プレースホルダ= "请输入"> の<input type = "テキスト" ID = "Staff_No" class="form-control" readonly name="Staff_No" placeholder=""> </div> <label class="col-sm-1 control-label">工号:</label> <div class="col-md-2 column"> <input type="text" id="Staff_Code" onblur="setStaffId()" class="form-control" name="Staff_Code" placeholder="请输入工号"> </div> <label class="col-sm-1 control-label">姓名:</label> <div class="col-md-2 column"> <input type="text" id="Staff_Name" class="form-control" name="Staff_Name" placeholder="请输入姓名" > <span class="required" id="sp1">*</span> </div> </div> </div> <div class="row clearfix"> <div class="form-group"> <label class="col-sm-1 control-label">用户名:</label> <div class="col-md-2 column"> <input type="text" id="Staff_LoginName" class="form-control" name="Staff_LoginName" placeholder="请输入用户名"> <span class="required" id="sp3">*</span> </div> <label class="col-sm-1 control-label">密码:</label> <div class="col-md-2 column"> <input type="password" id="Staff_Pass" class="form-control" name="Staff_Pass" placeholder="请输入密码"> </div> <label class="col-sm-1 control-label">职称:</label> <div class="col-md-2 column"> <input type="text" id="Staff_Title" class="form-control" name="Staff_Title" placeholder="请输入职称"> <span class="required" id="sp2">*</span> </div> </div> </div> <div class="row clearfix"> <div class="form-group"> <label class="col-sm-1 control-label">级别:</label> <div class="col-md-2 column"> <input type="text" id="Staff_Level" class="form-control" name="Staff_Level" placeholder="请输入级别"> </div> <label class="col-sm-1 control-label">图片:</label> <div class="col-md-3 column"> <input type="file" name="goodsImage"/> </div> <label class="col-sm-1 control-label">状态:</label> <div class="col-md-2 column"> <select class="form-control" name="Staff_Enable"> <option value="1">启用</option> <option value="0">注销</option> </select> </div> </div> </div> <input type="button" id="saveUploadOrUpdate" data-toggle='modal' data-target='#myModal' class="btn btn-primary" value="保存"> </form>
/* 上传文本图片和修改 */ $(document).on("click","#saveUploadOrUpdate",function(){ $("#form1").ajaxSubmit({ url:"userss/saveUploadOrUpdate", type:"post", contentType:"application/x-www-form-urlencoded; charset=utf-8", dataType:"text", success:function(data){ alert(data); queryUsers(1); } }); });
控制器中实现文件上传:
/*添加内容上传图片和修改*/ @RequestMapping("/saveUploadOrUpdate") public void saveTbGoods(@RequestParam("goodsImage") MultipartFile file,StaffInfo tb,HttpServletRequest request,HttpServletResponse response) throws IOException{ System.out.println("文件:"+file+"参数:"+tb); response.setContentType("text/html;charset=utf-8"); PrintWriter out=response.getWriter(); String pathName=transfer(file, request);//调用上传文件transfer方法得到文件路径 tb.setStaff_Pic(pathName);//添加set文件路径到数据库 int i=userServices.saveOrUpdateStaffInfo(tb); if(i>0){ out.print("添加成功!");//往前台打印text文本格式 }else{ out.print("添加失败!"); } } /*上传文件*/ private String transfer(MultipartFile file,HttpServletRequest request){ //获取目标文件要存放的目录的绝对路径 String path=request.getServletContext().getRealPath("/resouces/upload"); String fileName=file.getOriginalFilename();//获取原始的文件名 File tranFile=new File(path,fileName);//创建目标文件对象 if(!tranFile.exists()){//如果目录不存在 tranFile.mkdirs();//创建目录 } try { file.transferTo(tranFile);//文件上传 } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } 戻る request.getContextPath()+ "/ resouces /アップロード/" + ファイル名; }
どのように表示するには:
TR + = "<TD> <IMGスタイル= '幅:90PX;高さ:60PX;' SRC = ' "+ obj.Staff_Pic +"' /> </ TD> ";
JSPコード:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8" isELIgnored="false"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <!-- 使用模态窗口引入bootstrap --> <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/resouces/js/bootstrap/css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/resouces/js/bootstrap/css/bootstrap-theme.min.css"> <script src="${pageContext.request.contextPath}/resouces/js/jquery.min.js"></script> <script src="${pageContext.request.contextPath}/resouces/js/bootstrap/js/bootstrap.min.js"></script> <!--最基础jQuery.js都是基于这个 --> <script type="text/javascript" src="${pageContext.request.contextPath}/resouces/jquery-1.11.3.min.js"></script> <!-- 异步转换参数js --> <script type="text/javascript" src="${pageContext.request.contextPath}/resouces/jqueryExt.js"></script> <!-- 上传文件js --> <script type="text/javascript" src="${pageContext.request.contextPath}/resouces/jquery.form.js"></script> </head> <body> <table class="table table-hover"> <thead > <tr class="success"> <th>员工序号</th> <th>员工编号</th> <番目>スタッフなし</ TH> <目>従業員名</ TH> <目>ユーザー名</ TH> <th>员工密码</th> <th>员工职称</th> <目>従業員のレベル</ TH> <目>スタッフの写真</ TH> <目>なかったですか有効</ TH> <TH COLSPAN = "3"> クエリ <タイプの入力= "テキスト"のonblur = "queryUsers()"サイズ= "7" クラス = "goodsName"は、上記のid = "goodsNamesは、"プレースホルダ= "あなたの名前を入力してください"を述べました=名"goodsName"> <% -の<input type = "text"のonblur = "queryTbGoods()"サイズ= "6" クラス = "goodsName" ID = "型名"プレースホルダ= "を入力してくださいタイプ" NAME ="型名「> - %> <INPUT TYPE = "ボタン"データトグル= "モーダル"データターゲット= "#myModal" クラス = "emptys BTN BTNデフォルト"値= "添加"> </番目> </ TR> </ THEAD> <tbody id="tbody"> </tbody> </table> <!-- 模态框弹出录入内容 --> <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="modalTitle1" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content" style="width:760px;"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true"> × <!-- 关闭按钮 --> </button> <h4 class="modal-title" id="modalTitle1">录入员工</h4> </div> <div class="modal-body"> <!--form提交表单 --> <form class="form-horizontal" id="form1" enctype="multipart/form-data"> <div class="row clearfix"> <div class="form-group"> <label class="col-sm-1 control-label">编号:</label> <div class="col-md-2 column"> <!--编号 --> <input type="hidden" id="Staff_ID" class="form-control" name="Staff_ID" placeholder="请输入"> <input type="text" id="Staff_No" class="form-control" readonly name="Staff_No" placeholder=""> </div> <label class="col-sm-1 control-label">工号:</label> <div class="col-md-2 column"> <input type="text" id="Staff_Code" onblur="setStaffId()" class="form-control" name="Staff_Code" placeholder="请输入工号"> </div> <label class="col-sm-1 control-label">姓名:</label> <div class="col-md-2 column"> <input type="text" id="Staff_Name" class="form-control" name="Staff_Name" placeholder="请输入姓名" > <span class="required" id="sp1">*</span> </div> </div> </div> <div class="row clearfix"> <div class="form-group"> <label class="col-sm-1 control-label">用户名:</label> <div class="col-md-2 column"> <input type="text" id="Staff_LoginName" class="form-control" name="Staff_LoginName" placeholder="请输入用户名"> <span class="required" id="sp3">*</span> </div> <label class="col-sm-1 control-label">密码:</label> <div class="col-md-2 column"> <input type="password" id="Staff_Pass" class="form-control" name="Staff_Pass" placeholder="请输入密码"> </div> <label class="col-sm-1 control-label">职称:</label> <div class="col-md-2 column"> <input type="text" id="Staff_Title" class="form-control" name="Staff_Title" placeholder="请输入职称"> <span class="required" id="sp2">*</span> </div> </div> </div> <div class="row clearfix"> <div class="form-group"> <label class= "COL-SM-1コントロールラベル">级别</ label>は <DIV クラス = "COL-MD-2カラム"> の<input type = "テキスト" ID = "Staff_Level" クラス = "フォームコントロール" = "Staff_Level"プレースホルダ= "请输入级别">名前 </ div> <ラベル クラス = "COL-SM-1コントロールラベル">图片</ label>は <DIV クラス = "COL-MD-3カラム" > の<input type = "ファイル"名= "goodsImage" /> </ div> <ラベル クラス = "COL-SM-1コントロールラベル">状态:</ label>は <div class="col-md-2 column"> <select class="form-control" name="Staff_Enable"> <option value="1">启用</option> <option value="0">注销</option> </select> </div> </div> </div> <input type="button" id="saveUploadOrUpdate" data-toggle='modal' data-target='#myModal' class="btn btn-primary" value="保存"> </form> </div> <div class="modal-footer"> <button type="button" class="up btn btn-default" data-dismiss="modal">关闭 </button> </div> </div> <!-- /.modal-content --> </div> <!-- /.modal --> </div> <ul class="pager" > <li> 当前页:<span id="curPage"></span>总页数:<span id="totalPages"></span>总共:<span id="totals"></span>条记录 </li> <li><a id="first" onclick="changePage(this)">首页</a></li> <li><a id="prev" onclick="changePage(this)">上一页</a></li> <li><a id="next" onclick="changePage(this)">下一页</a></li> <li><a id="last" onclick="changePage(this)">尾页</a></li> <li><input type="number" id="txtCurPage" min="1" max="10"></input><input type="button" class="btn btn-default" value="go" onclick="gotoPage()"/></li> </ul> </body> </html> <script> $(function(){ queryUsers(1); queryTbGoodsType(); }); /* 查询商品表 */ function queryUsers(page){ var name=$("#goodsNames").val(); // alert(name+":参数:"); $.ajax({ url:"userss/queueUsers", type:"post", data:{"staffName":名、 "PAGENUM"ページ、 "pageSizeを":3 }、 データ型: "JSON" 、 成功:関数(データ){ // 警告(data.pages)。 $( "#のTBODY" ).empty(); $ .each(data.list、機能(キー、OBJ){ // 警告(obj.Staff_Pic); VAR TR = "<TR>" ; TR + = "<TD>" + obj.Staff_ID + "</ TD> " ; TR + =" <TD> "+ obj.Staff_No +" </ TD> " ; TR + = "<TD>" + obj.Staff_Code +" </ TD> tr+="<td>"+obj.Staff_LoginName+"</td>"; tr+="<td>"+obj.Staff_Pass+"</td>"; tr+="<td>"+obj.Staff_Title+"</td>"; tr+="<td>"+obj.Staff_Level+"</td>"; tr+="<td><img style=' width:90px; height:60px;' src='"+obj.Staff_Pic+"'/></td>"; if(obj.Staff_Enable=='1'){ tr+="<td>启用</td>"; }else{ tr+="<td>"+obj.Staff_Enable+"</td>"; } tr+="<td><input type='button' id="+obj.Staff_ID+" data-toggle='modal' data-target='#myModal' title="+obj.Staff_ID+" class='findById btn btn-default' value='修改'></td>"; tr+="<td><input type='button' id="+obj.Staff_ID+" class='delete btn btn-default' value='删除'></td>"; tr+="</tr>"; $("#tbody").append(tr); //重新初始化分页链接 $("#curPage").html(data.pageNum);//当前页 $("#totalPages").html(data.pages);//总页数 $("#totals").html(data.total);//总条数 $("#first").attr("data",1);//首页 $("#prev").attr("data",data.prePage);//上一页 $("#next").attr("data",data.nextPage);//下一页 $("#last").attr("data",data.pages);//尾页 $("#txtCurPage").val(data.pageNum).attr("max",data.pages); }); } }); } //改变页面 function changePage(obj){ var page=$(obj).attr("data");//データを削除value属性 queryUsers(ページ); } // 指定されたページへのジャンプ 機能gotoPage(ページ){ VARページ = $( "#txtCurPage" ).val(); queryUsers(ページ); } / * クエリ製品タイプ * / 関数queryTbGoodsType(){ $アヤックス({ URL: "製品/ queryTbGoodsType" 、 種類: "POST" 、 データ: "" 、 データ型: "JSON" 、 成功:機能(データ){ のために(VARのI = 0;私はdata.lengthを<;I ++ ){ VARのOBJ= データ[I]; $( ".sele ")追加("<オプション値= ' "+ obj.typeId +"'> "+ obj.typeName +"</オプション>" ); } } })。 } / * 添加修改之前清空形成表单* / $(文書).on( "クリック" "emptys。" 、関数(){ $( "#Staff_ID")のval( "" ); $(「#Staff_No ").val("」); $( "#Staff_Code")のval( ""。); $( "")のval( "#Staff_Name" ); $( "#Staff_LoginName")のval( ""。); $( "#Staff_Pass")。valを( ""); $( "#Staff_Title")のval( "" ); $( "#Staff_Level")のval( ""。); $( "#Staff_Pic")のval( "" ); $( "#Staff_Enable")のval( ""。); }); / * 添加修改 * / / * $(文書).on( "クリック"、 "#1 saveUploadOrUpdate"、機能(){ //警告($( "#1をForm1")(シリアライズ)); $アヤックス({ URL: "ユーザー/ saveUploadOrUpdate"、 種類: "ポスト"、 データ:$( "#1をForm1")シリアライズ()、 データ型: "テキスト"、 queryUsers(); } }); });*/ /* 上传文本图片和修改 */ $(document).on("click","#saveUploadOrUpdate",function(){ $("#form1").ajaxSubmit({ url:"userss/saveUploadOrUpdate", type:"post", contentType:"application/x-www-form-urlencoded; charset=utf-8", dataType:"text", success:function(data){ alert(data); queryUsers(1); } }); }); /*修改前查询 */ $(document).on("click",".findById",function(){ var id=this.id; $.ajax({ url:"userss/queueById", type:"post", data:{"staffId":id}, dataType:"json", success:function(data){ $("#Staff_ID").val(data.Staff_ID); $("#Staff_No").val(data.Staff_No); $("#Staff_Code").val(data.Staff_Code); $("#Staff_Name").val(data.Staff_Name); $("#Staff_LoginName").val(data.Staff_LoginName); $("#Staff_Pass").val(data.Staff_Pass); $("#Staff_Title").val(data.Staff_Title); $("#Staff_Level").val(data.Staff_Level); $("#Staff_Pic").val(data.Staff_Pic); $("#Staff_Enable").val(data.Staff_Enable); } }); }); $(document).on("click",".delete",function(){ var id=this.id; if (confirm("您确定要删除此信息吗?")){ $.ajax({ url:"userss/deleteGoods", type:"post", data:{"goodsId":id}, dataType:"text", success:function(data){ alert(data); queryUsers(); } }); }else{ return false; } }); /*失去焦点*/ function setStaffId(){ var Id=$("#Staff_Code").val(); $("#Staff_No").val(Id); } </script>