上传图片至服务器,写入到数据库Blob字段中,以及从数据库读取Blob信息(iframe父子页面传值)(1)

最近做了个用户维护功能,涉及到照片的操作。

照片是存到数据库oracle中的Blob字段中。

难点有两个:

1,图片的上传;2,Blob字段的读取。

 

先说图片的上传吧,

我使用common-fileupload来实现的

写个servlet,实现上传到服务器。

 

UpPhotoServlet.java

 

[java]  view plain copy
  1. package org.hd.tempuser.serv;  
  2.   
  3. import java.io.*;  
  4. import java.util.ArrayList;  
  5. import java.util.Iterator;  
  6. import java.util.List;  
  7.   
  8. import javax.servlet.RequestDispatcher;  
  9. import javax.servlet.ServletException;  
  10. import javax.servlet.http.HttpServlet;  
  11. import javax.servlet.http.HttpServletRequest;  
  12. import javax.servlet.http.HttpServletResponse;  
  13.   
  14. import org.apache.commons.fileupload.FileItem;  
  15. import org.apache.commons.fileupload.FileItemFactory;  
  16. import org.apache.commons.fileupload.disk.DiskFileItemFactory;  
  17. import org.apache.commons.fileupload.servlet.ServletFileUpload;  
  18. import org.hd.util.BlobUtil;  
  19. import org.hd.util.RamdomUtil;  
  20.   
  21. public class UpPhotoServlet extends HttpServlet {  
  22.   
  23.     public UpPhotoServlet(){  
  24.         super();  
  25.     }  
  26.       
  27.     public void destroy(){  
  28.         super.destroy();  
  29.     }     
  30.   
  31.     /** 
  32.      * Handles GET requests 处理下载请求 
  33.      */  
  34.     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{  
  35.         doPost(request, response);  
  36.     }  
  37.     /** 
  38.      * Handles POST requests 处理上传请求 
  39.      */  
  40.     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{  
  41.         response.setContentType("text/html");  
  42.         response.setHeader("Cache-Control""no-cache");  
  43.         //IntoLineService intoLineService = (IntoLineService)ContainerManager.getComponent(IntoLineService.BEAN_ID);  
  44.         response.setCharacterEncoding("UTF-8");  
  45.         PrintWriter out = response.getWriter();  
  46.         String jobNumber="";  
  47.         if(request.getParameter("jobNumber")!=null){  
  48.             jobNumber=request.getParameter("jobNumber").trim();  
  49.         }  
  50.         ///  
  51.         final long MAX_SIZE = 6 * 1024 * 1024;// 设置上传文件最大为 3M   
  52.         final int TEMP_MAX_SIZE = 6 * 1024 * 1024;// 设置上传文件最大为 3M   
  53.      // 允许上传的文件格式的列表     
  54.           final String[] allowedExt = new String[] { "jpg""jpeg""gif""txt","doc""docx""mp3""wma""m4a" };    
  55.         // 文件上傳部分  
  56.         boolean isMultipart = ServletFileUpload.isMultipartContent(request);  
  57.           
  58.         if (isMultipart == true) {  
  59.             try {  
  60.                 DiskFileItemFactory  factory = new DiskFileItemFactory();  
  61.                 factory.setSizeThreshold(TEMP_MAX_SIZE);  
  62.                 factory.setRepository(new File(request.getSession().getServletContext().getRealPath("/") + "StrutsImagesUploadTemp"));   
  63.                   
  64.                 ServletFileUpload upload = new ServletFileUpload(factory);  
  65.                 upload.setSizeMax(MAX_SIZE);  
  66.                   
  67.                   
  68.                 // 得到所有的表单域,它们目前都被当作FileItem  
  69.                 List<FileItem> fileItems = upload.parseRequest(request);  
  70.                 for(int i=0;i<fileItems.size();i++){  
  71.                     FileItem ff=(FileItem)fileItems.get(i);  
  72.                     if(ff.isFormField()){  
  73.                         // 如果item是正常的表单域  
  74.                         String ffname = ff.getFieldName();  
  75.                         String ffvalue = ff.getString();  
  76.                         if(ffname.trim().equals("gonghao")){  
  77.                             jobNumber=ffvalue;  
  78.                         }  
  79.                         //continue;  
  80.                     }  
  81.                 }  
  82.                 Iterator<FileItem> iter = fileItems.iterator();  
  83.                   
  84.                 if(fileItems==null||fileItems.size()==0){  
  85.                     return;  
  86.                 }  
  87.                 // 依次处理每个表单域  
  88.                 while (iter.hasNext()) {  
  89.                     FileItem item = null;     
  90.                     String path = null;     
  91.                     long size = 0;   
  92.                     item = (FileItem) iter.next();  
  93.                     if(item == null ||item.isFormField()){  
  94.                         // 如果item是正常的表单域  
  95.                         String name = item.getFieldName();  
  96.                         String value = item.getString();  
  97.                         System.out.print("表单域名为:"+name+"表单域值为:"+value);  
  98.                         if(name.trim().equals("gonghao")){  
  99.                             jobNumber=value;  
  100.                         }  
  101.                         //continue;  
  102.                     }else{  
  103.                         // 得到文件的完整路径      
  104.                         // 如果item是文件上传表单域  
  105.                           
  106.                         // 获得文件名及路径  
  107.                         path = item.getName();    
  108.                         size = item.getSize();  
  109.                         if ("".equals(path) || size == 0) {   
  110.                             return;  
  111.                         }  
  112.                         String fileName = item.getName();  
  113.                         System.out.println("item.getName()----"+fileName);  
  114.                         if (fileName != null) {  
  115.                             File fullFile = new File(item.getName());                              
  116.                                                           
  117.                             // 如果文件存在则上传  
  118.                            // if(fullFile.exists()){  
  119. //                                File fileOnServer = new File(BlobUtil.makeDirByParamForOds(jobNumber, BlobUtil.DirTypeTempupload),  
  120. //                                        fullFile.getName());  
  121.                                 String temprepath=BlobUtil.makeDirByParamForOdsRealPath(jobNumber,BlobUtil.DirTypeTempupload)+BlobUtil.getFileSuffix(fileName);  
  122.                                 String temprepathxie=BlobUtil.makeDirByParamForOds(jobNumber,BlobUtil.DirTypeTempupload)+BlobUtil.getFileSuffix(fileName);  
  123.                                   
  124.                                 String serpp=BlobUtil.BASE_PATH+temprepath;  
  125.                                 File fileOnServer = new File(serpp);  
  126.                                   
  127.                                 //删除已经存在的文件  
  128.                                 if(fileOnServer.exists()&&fileOnServer.isFile()){  
  129.                                     fileOnServer.delete();  
  130.                                 }  
  131.                                 item.write(fileOnServer);  
  132.                                   
  133.                                 String forWrite="\\\\tempphoto"+temprepath;  
  134.                                 String forWebShow="/tempphoto"+temprepathxie;  
  135.                                   
  136.                                 request.getSession().setAttribute("tempupload"+jobNumber, "/tempphoto"+temprepathxie);  
  137. //                                out.write(temprepathxie);  
  138.                                 //加参数(随机数)防止浏览器从缓存中读取图片  
  139.                                 String ramStr=RamdomUtil.getRamdomDateStr();  
  140.                                 String contextpp=request.getContextPath()+"/tempphoto"+temprepathxie+"?randomStr="+ramStr;  
  141.                                 String htmlstr=" <img src=\""+contextpp+"\" width=\"75px\" height=\"95px\" id=\"person_img\"/>";  
  142.                                 htmlstr+="<script>";  
  143.                                 htmlstr+="parent.window.rebackUrl('"+forWebShow+"','"+forWrite+"');";  
  144.                                 htmlstr+="";  
  145.                                 htmlstr+="";  
  146.                                 htmlstr+="";  
  147.                                 htmlstr+="</script>";  
  148.                                 out.write(htmlstr);  
  149. /* 
  150.  <img src="<%=path%>/resource/images/preson_img.jpg" width="75px" height="95px" id="person_img"/> 
  151.  */  
  152.                                 System.out.println("文件"+fileOnServer.getName()+"上传成功");  
  153.                            // }  
  154.                         }  
  155.                     }  
  156.                 }                  
  157.             } catch (Exception e) {  
  158.                 e.printStackTrace();  
  159.             }  
  160.         } else {  
  161.             System.out.println("the enctype must be multipart/form-data");  
  162.         }  
  163.           
  164.         // 跳回原頁面  
  165.        // RequestDispatcher dispatcher = request  
  166.        //         .getRequestDispatcher("/web/page/uploadtoserver.jsp");  
  167.        // dispatcher.forward(request, response);  
  168.        // return;  
  169.   
  170.         //  
  171.         //out.write("YES");  
  172.         out.close();  
  173.     }  
  174.       
  175. }  


web.xml配置servlet

[html]  view plain copy
  1.     <servlet>  
  2.     <servlet-name>upphoto</servlet-name>  
  3.     <servlet-class>  
  4.         org.hd.tempuser.serv.UpPhotoServlet  
  5.     </servlet-class>  
  6. </servlet>  
  7. <servlet-mapping>  
  8.     <servlet-name>upphoto</servlet-name>  
  9.     <url-pattern>/upphoto/upphotoServlet</url-pattern>  
  10. </servlet-mapping>  


 

 

 

要说的有以下几点:

common-fileupload已经帮你读文件了,你做的只是确定要写的文件。

这个你只要获取工程的实际路径并创建相应的目录,对应好文件名即可。

说白了就是你要提供要写的文件的path。

还有一点,文件上传后,使用PrintWriter输出html代码

(response.setContentType("text/html");)

这个html代码就是你上传完后在页面看到的效果,

我加了一段js,可以调用父页面的方法。

注意:照片只是一个字段,为了不让返回的页面整个变化,我使用了iframe。

就是照片的页面在一个iframe中。

所以这就涉及到iframe父子页面传值的问题(怎么传,我的代码已经有例子了。)

另外,上传图片成功后我会把图片的一个url返回给页面以便在页面显示你上传的图片,

这是url后面需要加一个随即参数,不加的话,如果第二次再显示修改后的照片,你会发现

图片的url是正确的(鼠标右键查看),但显示的却是原先的图片!

原因就是浏览器缓存!只要url没有变,浏览器就从缓存中读取图片,所以你加一个随即的参数

让url每次都不一样就可以了,浏览器每次都不从缓存中读。

 

随机参数随便写,不一样就可以,例如RamdomUtil.java

[html]  view plain copy
  1. package org.hd.util;  
  2.   
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Date;  
  5. import java.util.Random;  
  6.   
  7. public class RamdomUtil {  
  8.       
  9.     public static String getRamdomIntStr(){  
  10.         String res="";  
  11.         Random random1 = new Random();  
  12.         res=String.valueOf(random1.nextInt()).trim();  
  13.         return res;  
  14.     }  
  15.       
  16.     public static String getRamdomDateStr(){  
  17.         String res="";  
  18.         Date dd=new Date();  
  19.         SimpleDateFormat  sdf=new SimpleDateFormat("yyyyMMddHHmmss");  
  20.         res=sdf.format(dd);  
  21.         return res;  
  22.     }  
  23.       
  24.     public static void main(String[]dsf){  
  25.         RamdomUtil.getRamdomIntStr();  
  26.         System.out.println(RamdomUtil.getRamdomDateStr());  
  27.     }  
  28.   
  29. }  


 

 

 

新增用户页面add_user.jsp

[html]  view plain copy
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>  
  2. <%@ taglib uri="/struts-tags" prefix="s"%>  
  3. <%@ page import="org.hd.tempuser.model.TempUser" %>  
  4. <%  
  5.     String path = request.getContextPath();  
  6. %>  
  7. <%  
  8.     String addSuccess = "";  
  9.    if(request.getAttribute("addSuccess")!=null){  
  10.        addSuccess=(String)request.getAttribute("addSuccess");  
  11.    }  
  12. %>  
  13. <html lang="en" xmlns="http://www.w3.org/1999/xhtml">  
  14. <head>  
  15.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  16.     <link href="<%=path%>/resource/css/style.css" rel="stylesheet" type="text/css" />  
  17.     <script src="<%=path%>/script/jquery-1.7.1.js" type="text/javascript"></script>  
  18.     <script src="<%=path%>/script/queryHeader.js" type="text/javascript"></script>  
  19.     <script src="<%=path%>/script/main.js" type="text/javascript"></script>  
  20.     <script src="<%=path%>/script/plugin/plugin_core.js" type="text/javascript"></script>  
  21.     <script src="<%=path%>/script/plugin/calendar/calendar_util.js" type="text/javascript"></script>  
  22.     <script src="<%=path%>/script/plugin/calendar/calendar.js" type="text/javascript"></script>  
  23.     <script src="<%=path%>/script/hd/validate.js" type="text/javascript"></script>  
  24.   
  25. </head>  
  26.     <body style="background:#828282">  
  27.     <input type="hidden" id="path" value="<%=path%>" />  
  28.     <input type="hidden" id="addSuccess" value="<%=addSuccess%>" />  
  29.     <div style="overflow-y:scroll">  
  30.   
  31.         <form id="formadd" method="post" action="<%=path%>/tempUser/addTempUser.action">  
  32.           
  33.         <input type="hidden" id="localPhotoUrl" name="localPhotoUrl" value="" />  
  34.         <input type="hidden" id="sex"  name="addTempUser.sex" value="" />  
  35.         <input type="hidden" id="job_level"  name="addTempUser.job_level" value="" />  
  36.         <input type="hidden" id="remark" name="addTempUser.remark"  value="" />  
  37.                
  38.               
  39.             <table width="100%" height="30" border="0" cellspacing="0" cellpadding="0" id="box_title">  
  40.               <tr>  
  41.                 <td class="left" width="6"></td>  
  42.                 <td class="title">新增坐席</td>  
  43.               </tr>  
  44.             </table>  
  45.               
  46.             <table width="100%" height="160px" border="0" cellspacing="0" cellpadding="0" class="nbox11" style="padding-left:6px">  
  47.                 <tr>  
  48.                     <td>  
  49.                         <div class="contentBody">  
  50.                             <table class="nbox14 blackn12" border="0" cellspacing="0" cellpadding="0" width="800px">  
  51.                                 <tr >  
  52.                                     <td class="td1">账号:</td><td class="td2"><input type="text"  name="addTempUser.uname" class="inputbox1" id="uname" style="width:175px;" value=""/></td>  
  53.                                     <td class="td1">性别:</td><td class="td2"><select style="width: 178px; height: 21px" id="fakesex" class="blackn12" name="addTempUser.fakesex"><option value=''>...请选择</option><option value='男'></option><option value='女'></option></select></td>  
  54.                                 </tr>  
  55.                                 <tr>  
  56.                                     <td class="td1">密码:</td><td class="td2"><input type="text"  name="addTempUser.upass" class="inputbox1" id="upass" style="width:175px;" value=""/></td>  
  57.                                   
  58.                                     <td class="td1">姓名:</td><td class="td2"><input type="text"  name="addTempUser.realname" class="inputbox1" id="realname" style="width:175px;" value=""/></td>  
  59.                                 </tr>               
  60.                                 <tr>  
  61.                                     <td class="td1">邮件地址:</td><td class="td2"><input type="text"  name="addTempUser.email" class="inputbox1" id="email" style="width:175px;" value=""/></td>  
  62.                                     <td class="td1">手机号码:</td><td class="td2"><input type="text"  name="addTempUser.cellphone" class="inputbox1" id="cellphone" style="width:175px;" value=""/></td>  
  63.                                 </tr>  
  64.                                 <tr >  
  65.                                       
  66.                                     <td class="td1">分机:</td><td class="td2"><input type="text"  name="addTempUser.ext" class="inputbox1" id="ext" style="width:175px;" value=""/></td>  
  67.                                     <td class="td1">电话:</td><td class="td2"><input type="text"  name="addTempUser.phone" class="inputbox1" id="phone" style="width:175px;" value=""/></td>  
  68.                                       
  69.                                 </tr>  
  70.                                 
  71.                                 <tr>  
  72.                                     <td class="td1">职级:</td><td class="td2"><select style="width: 178px; height: 21px" id="fakejob_level" class="blackn12" name="addTempUser.fakejob_level"><option value=''>...请选择</option><option value='坐席'>坐席</option><option value='坐席班长'>坐席班长</option></select></td>  
  73.                                 <td class="td1"></td>  
  74.                                 <td class="td2">  
  75.                                 </td>  
  76.                                   
  77.               
  78.                                   
  79.                                 </tr>  
  80.                                   
  81.                             </table>  
  82.                         </div>  
  83.                     </td>  
  84.                 </tr>  
  85.             </table>  
  86.               
  87.                <div style="background:#f3f3f3">  
  88.             <table width="100%" height="50px" border="0" cellpadding="0" cellspacing="0" id="box_foot">  
  89.                 
  90.                                 <tr>  
  91.                                 <td style="height:50px;width:160px;text-align:right;padding-right:12px;font-size:12px; color:#333; ">备注:</td>  
  92.                                 <td style="height:50px;width:50px;text-align:left;">  
  93.                                                     <textarea rows="3" cols="26"  name="addTempUser.fakeremark" id="fakeremark" >  
  94.   
  95. </textarea>  
  96.                                 </td>  
  97.                                 <td style="height:50px;width:80px;text-align:right;padding-right:12px;font-size:12px; color:#333; ">照片:</td>  
  98.                                 <td style="height:50px;text-align:left;">  
  99. <iframe src="<%=path%>/jsp/hd/home/usermanage/photo.jsp" name="photoframe" width="300px" height="100px" scrolling="auto">  
  100.                                 
  101.                             </iframe>  
  102.                                 </td>  
  103.                                 </tr>  
  104.             </table>  
  105.             </div>  
  106.           
  107.               
  108.             <div style="background:#ffffff;padding-top:20px;">  
  109.                <table width="100%" height="30px" border="0" cellspacing="0" cellpadding="0" class="nbox11" style="padding-left:6px">  
  110.                <tr>  
  111.                     <td style="width:20%;text-align:right;padding-right:12px;">  
  112.                     </td>  
  113.                     <td style="width:20%;text-align:right;padding-right:20px;">  
  114.                       <input type="button"  value="提交" onclick="tijiao()" />  
  115.                                       
  116.                     </td>  
  117.                     <td style="width:30%;text-align:left;padding-left:35px;">  
  118.                       <input type="button"  value="取消" onclick="cancelBack()" />  
  119.                     </td>  
  120.                     <td style="width:30%;text-align:left;padding-left:12px;">  
  121.                                       
  122.                     </td>  
  123.                 </tr>  
  124.             </table>  
  125.             </div>  
  126.                   
  127.               
  128.               
  129.             <table width="100%" height="50px" border="0" cellspacing="0" cellpadding="0" class="nbox11" style="padding-left:6px">  
  130.                 <tr>  
  131.                     <td>  
  132.                         <div class="contentBody"><table class="nbox14 blackn12" border="0" cellspacing="0" cellpadding="0" width="800px">  
  133.                                 <tr >  
  134.                                     <td class="td2"></td>  
  135.                                     <td class="td2">  
  136.                                     </td>  
  137.                                 </tr>  
  138.                             </table>  
  139.                         </div>  
  140.                     </td>  
  141.                 </tr>  
  142.             </table>  
  143.               
  144.             <table width="100%" height="10" border="0" cellpadding="0" cellspacing="0" id="box_foot">  
  145.               <tr>  
  146.                 <td class="left" width="7"></td>  
  147.                 <td class="mid"> </td>  
  148.                 <td class="right" width="7"></td>  
  149.               </tr>  
  150.             </table>  
  151.               
  152.               
  153.         </form>  
  154.   
  155.  </div>  
  156.     </body>  
  157. </html>  
  158.   
  159. <script>  
  160. var path=document.getElementById("path").value;  
  161. var addSuccess=document.getElementById("addSuccess").value;  
  162.   
  163. if($.trim(addSuccess)=="addSuccess"){  
  164.     //alert("addSuccess");  
  165.     var urlpath=path+"/tempUser/listTempUser.action";  
  166.     window.location.href=urlpath;  
  167. }  
  168.   
  169. function cancelBack(){  
  170.     var urlpath=path+"/tempUser/listTempUser.action";  
  171.     window.location.href=urlpath;  
  172. }  
  173. function testformsubmit(){  
  174.     var testform=document.getElementById("testform");  
  175.     testform.submit();  
  176. }  
  177.       
  178. function getUploadPhotoUrl(){  
  179. $.ajax({  
  180.        type: "POST",  
  181.        url: "some.php",  
  182.        data: "name=John&location=Boston",  
  183.        success: function(msg){  
  184.          alert( "Data Saved: " + msg );  
  185.        }  
  186.     });  
  187. }  
  188. function  addTempUser(){  
  189.     var urlpath=path+"/tempUser/addTempUser.action";  
  190.       
  191.     $.ajax({  
  192.            type: "POST",  
  193.            url: "some.php",  
  194.            data: "name=John&location=Boston",  
  195.            success: function(msg){  
  196.              alert( "Data Saved: " + msg );  
  197.            }  
  198.         });  
  199. }  
  200.   
  201. function tijiao(){  
  202.     $("#sex").val($("#fakesex").val());  
  203.     $("#job_level").val($("#fakejob_level").val());  
  204.     $("#remark").val($("#fakeremark").val());  
  205.     //alert($("#sex").val()+$("#job_level").val()+$("#remark").val());  
  206.     if (validateAddTempUser()) {  
  207.         $('#formadd').submit();  
  208.     }  
  209.       
  210. }  
  211.   
  212. function validateAddTempUser(){  
  213.     var flag=true;//成功为true  
  214.     var alertStr="";  
  215.     var uname=$('#uname').val();  
  216.     var upass=$('#upass').val();  
  217.     var realname=$('#realname').val();  
  218.     var email=$('#email').val();  
  219.     var cellphone=$('#cellphone').val();  
  220.     var ext=$('#ext').val();  
  221.     var phone=$('#phone').val();  
  222.     var job_level=$('#fakejob_level').val();  
  223.     var remark=$('#remark').val();  
  224.     var sex=$("#fakesex").val();  
  225.     var localPhotoUrl=$("#localPhotoUrl").val();  
  226.       
  227.     if(ValidateUtil.isNull(uname)){  
  228.         flag=false;  
  229.         alertStr+="账号不可为空!\r\n";  
  230.     }  
  231.     if(ValidateUtil.isNull(sex)){  
  232.         flag=false;  
  233.         alertStr+="请选择性别!\r\n";  
  234.     }  
  235.     if(ValidateUtil.isNull(job_level)){  
  236.         flag=false;  
  237.         alertStr+="请选择职级!\r\n";  
  238.     }  
  239.     if(ValidateUtil.isNull(localPhotoUrl)){  
  240.         flag=false;  
  241.         alertStr+="请上传照片!\r\n";  
  242.     }  
  243.       
  244.       
  245.     if(!flag){  
  246.         alert(alertStr);  
  247.     }  
  248.       
  249.     return flag;  
  250. }  
  251. /*  
  252. var isRightUploadPhotoFalg=false;  
  253. function shangchuan(){  
  254.     isRightUploadPhotoFalg=false;  
  255.     var photoUrl = document.getElementById("uploadPhoto").value;  
  256.     var jobNumber=$('#uname').val();  
  257.     var urlpath=path+"/tempUser/uploadPhotoToTempDir.action?photoUrl="+photoUrl+"&jobNumber="+jobNumber;  
  258.     var tempUrl="";  
  259.     $.ajax({  
  260.            type: "POST",  
  261.            url: urlpath,  
  262.            success: function(msg){  
  263.              var mm=$.trim(msg);  
  264.              if(msg=="NO"){  
  265.              }else{  
  266.                  tempUrl=path+mm;  
  267.                  //js换图片  
  268.                  var hhtt="<img src=\""+tempUrl+"\" id=\"tempPhotoFileUrl\"/>";  
  269.                  $("#uploadPhotoView").html(hhtt);  
  270.                  //uploadPhotoViewParent    
  271.                  $("#uploadPhotoViewParent").html("");  
  272.                  $("#uploadPhotoViewParent").hide();  
  273.                  isRightUploadPhotoFalg=true;  
  274.                  alert(mm);  
  275.                  document.getElementById("localPhotoUrl").value=mm;  
  276.                    
  277.              }  
  278.            }  
  279.         });  
  280.       
  281. }  
  282.   
  283.   
  284. function strutsUpload(){  
  285.       
  286.     alert("strutsUpload");  
  287.     var strutsFormPhoto=document.getElementById("strutsFormPhoto");  
  288.     strutsFormPhoto.submit();  
  289. }  
  290. */  
  291. $("#uname").blur( function () {   
  292.     //给子页面赋值  
  293.     var jobnum=document.getElementById("uname").value;  
  294.     window.frames[0].window.receivJobNum(jobnum);  
  295. } );  
  296. function tt(){  
  297.     alert("tt");  
  298. }  
  299. //上传成功后,需要页面显示图片的web路径和在服务器上的路径  
  300. function rebackUrl(showurl,writeurl){  
  301.     //alert(showurl+"--"+writeurl);  
  302.     document.getElementById("localPhotoUrl").value=writeurl;  
  303.       
  304. }  
  305. </script>  


 

里面嵌套的照片页面photo.jsp

[html]  view plain copy
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>  
  2. <%@ taglib uri="/struts-tags" prefix="s"%>  
  3. <%@ page import="org.hd.tempuser.model.TempUser" %>  
  4. <%  
  5.     String path = request.getContextPath();  
  6. %>  
  7. <%  
  8.     String addSuccess = "";  
  9.    if(request.getAttribute("addSuccess")!=null){  
  10.        addSuccess=(String)request.getAttribute("addSuccess");  
  11.    }  
  12. %>  
  13. <html lang="en" xmlns="http://www.w3.org/1999/xhtml">  
  14. <head>  
  15.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  16.     <link href="<%=path%>/resource/css/style.css" rel="stylesheet" type="text/css" />  
  17.     <script src="<%=path%>/script/jquery-1.7.1.js" type="text/javascript"></script>  
  18.   
  19. </head>  
  20.     <body style="background:#f3f3f3">  
  21.     <input type="hidden" id="path" value="<%=path%>" />  
  22.     请上传图片  
  23.          <form id="testform" action="<%=path%>/upphoto/upphotoServlet" method="post" enctype="multipart/form-data">  
  24.                                      <input type="file"  id="testfile" name="uploadPhoto" class="inputbox1" style="width:175px;" value=""/>  
  25.                                      <input type="hidden"  id="gonghao" name="gonghao" value=""/>  
  26.                                      <input type="hidden"  id="jobNumberTest" name="jobNumberTest" value="gh.value"/>  
  27.                                       <input type="button"  value="上传" onclick="testformsubmit()" />  
  28.                                    
  29.                                  </form>  
  30.     </body>  
  31. </html>  
  32.   
  33. <script>  
  34. var path=document.getElementById("path").value;  
  35.   
  36.   
  37. function testformsubmit(){  
  38.     var testform=document.getElementById("testform");  
  39.     var gonghao=document.getElementById("gonghao").value;  
  40.     if(gonghao==null||gonghao==""||gonghao=="null"){  
  41.         alert("请先输入账号!");  
  42.     }else{  
  43.         testform.submit();  
  44.     }  
  45.       
  46. }  
  47.       
  48. function gg(){  
  49.     //调用父页面方法  
  50.     parent.window.tt();  
  51. }  
  52.   
  53.   
  54. function receivJobNum(jobnum){  
  55.     document.getElementById("gonghao").value=jobnum;  
  56. }  
  57. </script>  


 

编辑用户的时候也需要编辑照片,但这个逻辑稍稍不一样,还是一个编辑页面,iframe中嵌套一个照片页面。

user_edit.jsp

 

[html]  view plain copy
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>  
  2. <%@ taglib uri="/struts-tags" prefix="s"%>  
  3. <%@ page import="org.hd.tempuser.model.TempUser" %>  
  4. <%  
  5.     String path = request.getContextPath();  
  6. %>  
  7. <%  
  8.    String tempuserid="";  
  9.    if(request.getParameter("tempuserid")!=null){  
  10.        tempuserid=(String)request.getParameter("tempuserid");  
  11.    }  
  12.      
  13.     String editSuccess = "";  
  14.        if(request.getAttribute("editSuccess")!=null){  
  15.            editSuccess=(String)request.getAttribute("editSuccess");  
  16.        }  
  17. %>  
  18. <html lang="en" xmlns="http://www.w3.org/1999/xhtml">  
  19. <head>  
  20.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  21.     <link href="<%=path%>/resource/css/style.css" rel="stylesheet" type="text/css" />  
  22.     <script src="<%=path%>/script/jquery-1.7.1.js" type="text/javascript"></script>  
  23.     <script src="<%=path%>/script/queryHeader.js" type="text/javascript"></script>  
  24.     <script src="<%=path%>/script/main.js" type="text/javascript"></script>  
  25.     <script src="<%=path%>/script/plugin/plugin_core.js" type="text/javascript"></script>  
  26.     <script src="<%=path%>/script/plugin/calendar/calendar_util.js" type="text/javascript"></script>  
  27.     <script src="<%=path%>/script/plugin/calendar/calendar.js" type="text/javascript"></script>  
  28.     <script src="<%=path%>/script/hd/validate.js" type="text/javascript"></script>  
  29. </head>  
  30.     <body style="background:#828282">  
  31. <input type="hidden" id="path" value="<%=path%>" />  
  32. <input type="hidden" id="tempuserid" value="<%=tempuserid%>" />  
  33. <input type="hidden" id="editSuccess" value="<%=editSuccess%>" />  
  34.   
  35.           
  36.         <form id="formedit" method="post" action="<%=path%>/tempUser/submitEditTempUser.action">  
  37.             <input type="hidden" id="ischangePhoto" name="ischangePhoto" value="NO" />  
  38.             <input type="hidden" id="localPhotoUrl" name="localPhotoUrl" value="" />  
  39.             <input type="hidden" id="oldlocalPhotoUrl" name="oldlocalPhotoUrl" value="<s:property value='#request.editTempUser.tempUrl.trim()'/>  " />  
  40.             <input type="hidden" id="hduid" name="editTempUser.hduid" value="<s:property value='#request.editTempUser.hduid.trim()'/>  " />  
  41.               
  42.               
  43.         <input type="hidden" id="sex"  name="editTempUser.sex" value="" />  
  44.         <input type="hidden" id="job_level"  name="editTempUser.job_level" value="" />  
  45.         <input type="hidden" id="remark" name="editTempUser.remark"  value="" />  
  46.                
  47.         <!-- 临时转换值 -->  
  48.         <input type="hidden" id="tempsex"   value="<s:property value='#request.editTempUser.sex'/>" />  
  49.         <input type="hidden" id="tempjob_level"  value="<s:property value='#request.editTempUser.job_level'/>" />  
  50.           
  51.             <table width="100%" height="30" border="0" cellspacing="0" cellpadding="0" id="box_title">  
  52.               <tr>  
  53.                 <td class="left" width="6"></td>  
  54.                 <td class="title">编辑坐席信息</td>  
  55.               </tr>  
  56.             </table>  
  57.               
  58.             <table width="100%" height="160px" border="0" cellspacing="0" cellpadding="0" class="nbox11" style="padding-left:6px">  
  59.                 <tr>  
  60.                     <td>  
  61.                         <div class="contentBody">  
  62.                             <table class="nbox14 blackn12" border="0" cellspacing="0" cellpadding="0" width="800px">  
  63.                                 <tr >  
  64.                                     <td class="td1">账号:</td><td class="td2"><input type="text" value="<s:property value='#request.editTempUser.uname'/>  " name="editTempUser.uname" class="inputbox1" id="uname" style="width:175px;" </td>  
  65.                                     <td class="td1">性别:</td><td class="td2"><select style="width: 178px; height: 21px" id="fakesex" class="blackn12" name="editTempUser.fake"><option value=''>...请选择</option><option value='男'></option><option value='女'></option></select></td>  
  66.                                 </tr>  
  67.                                 <tr>  
  68.                                     <td class="td1">密码:</td><td class="td2"><input type="text" value="<s:property value='#request.editTempUser.upass'/>"  name="editTempUser.upass" class="inputbox1" id="upass" style="width:175px;" </td>  
  69.                                   
  70.                                     <td class="td1">姓名:</td><td class="td2"><input type="text"  value="<s:property value='#request.editTempUser.realname'/>"  name="editTempUser.realname" class="inputbox1" id="realname" style="width:175px;" </td>  
  71.                                 </tr>               
  72.                                 <tr>  
  73.                                     <td class="td1">邮件地址:</td><td class="td2"><input type="text"  value="<s:property value='#request.editTempUser.email'/>"  name="editTempUser.email" class="inputbox1" id="email" style="width:175px;" </td>  
  74.                                     <td class="td1">手机号码:</td><td class="td2"><input type="text"  value="<s:property value='#request.editTempUser.cellphone'/>"   name="editTempUser.cellphone" class="inputbox1" id="cellphone" style="width:175px;" </td>  
  75.                                 </tr>  
  76.                                 <tr >  
  77.                                       
  78.                                     <td class="td1">分机:</td><td class="td2"><input type="text"  value="<s:property value='#request.editTempUser.ext'/>"  name="editTempUser.ext" class="inputbox1" id="ext" style="width:175px;" </td>  
  79.                                     <td class="td1">电话:</td><td class="td2"><input type="text"  value="<s:property value='#request.editTempUser.phone'/>" name="editTempUser.phone" class="inputbox1" id="phone" style="width:175px;" </td>  
  80.                                       
  81.                                 </tr>  
  82.                                 
  83.                                 <tr>  
  84.                                     <td class="td1">职级:</td><td class="td2"><select style="width: 178px; height: 21px" id="fakejob_level" class="blackn12" name="editTempUser.fake"><option value=''>...请选择</option><option value='坐席'>坐席</option><option value='坐席班长'>坐席班长</option></select></td>  
  85.                                   
  86.                                     <td class="td1"></td><td class="td2"></td>  
  87.                                 </tr>  
  88.                             </table>  
  89.                         </div>  
  90.                     </td>  
  91.                 </tr>  
  92.             </table>  
  93.   
  94.   
  95.                <div style="background:#f3f3f3">  
  96.             <table width="100%" height="50px" border="0" cellpadding="0" cellspacing="0" id="box_foot">  
  97.                 
  98.                                 <tr>  
  99.                                 <td style="height:50px;width:160px;text-align:right;padding-right:12px;font-size:12px; color:#333; ">备注:</td>  
  100.                                 <td style="height:50px;width:50px;text-align:left;">  
  101. <textarea rows="3" cols="26"  name="editTempUser.fakeremark" id="fakeremark" >  
  102.      <s:property value='#request.editTempUser.remark'/>    
  103. </textarea>  
  104.                                 </td>  
  105.                                 <td style="height:50px;width:80px;text-align:right;padding-right:12px;font-size:12px; color:#333; ">照片:</td>  
  106.                                 <td style="height:50px;text-align:left;">  
  107.                                   
  108.                                 <div id="photoshow" >  
  109.                                 <img src="<%=path%><s:property value='#request.editTempUser.tempUrl'/>" width="75px" height="95px" id="person_img"/>  
  110.                                 <input type="button"  onclick="editPhotoFunc()" value="编辑照片" />  
  111.           
  112.                                 </div>  
  113.                                                <div id="photoiframe" style="background:#f3f3f3;display:none">  
  114.                                              <iframe src="<%=path%>/jsp/hd/home/usermanage/editphoto.jsp" name="photoframe" width="300px" height="100px" scrolling="auto">  
  115.                                             </iframe>  
  116.                                                </div>  
  117.   
  118.                                 </td>  
  119.                                 </tr>  
  120.             </table>  
  121.             </div>  
  122.           
  123.                           
  124.             <div style="background:#ffffff;padding-top:20px;">  
  125.                <table width="100%" height="30px" border="0" cellspacing="0" cellpadding="0" class="nbox11" style="padding-left:6px">  
  126.                <tr>  
  127.                     <td style="width:20%;text-align:right;padding-right:12px;">  
  128.                     </td>  
  129.                     <td style="width:20%;text-align:right;padding-right:20px;">  
  130.                                     <input type="button"  value="提交" onclick="tijiao()" />  
  131.                                   
  132.                     </td>  
  133.                     <td style="width:30%;text-align:left;padding-left:35px;">  
  134.                       <input type="button"  value="返回" onclick="javascript:history.back(-1);" />  
  135.                     </td>  
  136.                     <td style="width:30%;text-align:left;padding-left:12px;">  
  137.                                       
  138.                     </td>  
  139.                 </tr>  
  140.             </table>  
  141.             </div>  
  142.                   
  143.               
  144.               
  145.             <table width="100%" height="50px" border="0" cellspacing="0" cellpadding="0" class="nbox11" style="padding-left:6px">  
  146.                 <tr>  
  147.                     <td>  
  148.                         <div class="contentBody"><table class="nbox14 blackn12" border="0" cellspacing="0" cellpadding="0" width="800px">  
  149.                                 <tr >  
  150.                                     <td class="td2"></td>  
  151.                                     <td class="td2">  
  152.                                     </td>  
  153.                                 </tr>  
  154.                             </table>  
  155.                         </div>  
  156.                     </td>  
  157.                 </tr>  
  158.             </table>  
  159.               
  160.             <table width="100%" height="10" border="0" cellpadding="0" cellspacing="0" id="box_foot">  
  161.               <tr>  
  162.                 <td class="left" width="7"></td>  
  163.                 <td class="mid"> </td>  
  164.                 <td class="right" width="7"></td>  
  165.               </tr>  
  166.             </table>  
  167.               
  168.               
  169.         </form>  
  170.     </body>  
  171. </html>  
  172.   
  173. <script>  
  174. var path=document.getElementById("path").value;  
  175. var editSuccess=document.getElementById("editSuccess").value;  
  176.   
  177. if($.trim(editSuccess)=="editSuccess"){  
  178.     //alert("editSuccess");  
  179.     var urlpath=path+"/tempUser/listTempUser.action";  
  180.     window.location.href=urlpath;  
  181. }  
  182. //下拉框赋值  
  183.     var sexone=$.trim($("#tempsex").val());  
  184.     setSelectValue('fakesex',sexone);  
  185.     var jobone=$.trim($("#tempjob_level").val());  
  186.     setSelectValue('fakejob_level',jobone);  
  187.       
  188. function setSelectValue(sid,va){  
  189.     var strva=$.trim(va);  
  190.     var opt = document.getElementById(sid);  
  191.      for (var i = 0; i < opt.length; i++) {  
  192.          if($.trim(opt[i].innerText)==strva){  
  193.              opt.options[i].selected=true;  
  194.          }  
  195.     }  
  196. }  
  197.   
  198. function editPhotoFunc(){  
  199.     $("#photoiframe").show();  
  200.     $("#photoshow").hide();  
  201. }  
  202.   
  203. function cancelEditPhotoFunc(){  
  204.     $("#photoshow").show();  
  205.     $("#photoiframe").hide();  
  206.       
  207. }  
  208.   
  209. function testformsubmit(){  
  210.     var testform=document.getElementById("testform");  
  211.     testform.submit();  
  212. }  
  213.       
  214.   
  215. function tijiao(){  
  216.     var ssxx=$.trim($("#fakesex").val());  
  217.     $("#sex").val(ssxx);  
  218.     var jobll=$.trim($("#fakejob_level").val());  
  219.     $("#job_level").val(jobll);  
  220.     var fakrem=$.trim($("#fakeremark").val());  
  221.     $("#remark").val(fakrem);  
  222.     //alert($("#sex").val()+$("#job_level").val()+$("#remark").val());  
  223.     if (validateAddTempUser()) {  
  224.         $('#formedit').submit();  
  225.     }  
  226.       
  227. }  
  228.   
  229. function validateAddTempUser(){  
  230.     var flag=true;//成功为true  
  231.     var alertStr="";  
  232.     var uname=$('#uname').val();  
  233.     var upass=$('#upass').val();  
  234.     var realname=$('#realname').val();  
  235.     var email=$('#email').val();  
  236.     var cellphone=$('#cellphone').val();  
  237.     var ext=$('#ext').val();  
  238.     var phone=$('#phone').val();  
  239.     var job_level=$('#fakejob_level').val();  
  240.     var remark=$('#remark').val();  
  241.     var sex=$("#fakesex").val();  
  242.     var localPhotoUrl=$("#localPhotoUrl").val();  
  243.     var ischangePhoto=$.trim($("#ischangePhoto").val());  
  244.       
  245.     if(ValidateUtil.isNull(uname)){  
  246.         flag=false;  
  247.         alertStr+="账号不可为空!\r\n";  
  248.     }  
  249.     if(ValidateUtil.isNull(sex)){  
  250.         flag=false;  
  251.         alertStr+="请选择性别!\r\n";  
  252.     }  
  253.     if(ValidateUtil.isNull(job_level)){  
  254.         flag=false;  
  255.         alertStr+="请选择职级!\r\n";  
  256.     }  
  257.     if(ischangePhoto=="YES"){  
  258.         var local=$.trim($("#localPhotoUrl").val());  
  259.         if(local==""){  
  260.             alertStr+="请上传照片!\r\n";  
  261.         }  
  262.     }else{  
  263.         document.getElementById("localPhotoUrl").value=document.getElementById("oldlocalPhotoUrl").value;  
  264.     }  
  265.       
  266.       
  267.     if(!flag){  
  268.         alert(alertStr);  
  269.     }  
  270.       
  271.     return flag;  
  272. }  
  273. $("#uname").blur( function () {   
  274.     //给子页面赋值  
  275.     var jobnum=document.getElementById("uname").value;  
  276.     window.frames[0].window.receivJobNum(jobnum);  
  277. } );  
  278. //给子页面赋值,这个是为了子页面调用   
  279. function geivUnameToChild(){  
  280.     var jobnum=document.getElementById("uname").value;  
  281.     window.frames[0].window.receivJobNum(jobnum);  
  282. }  
  283. function tt(){  
  284.     alert("tt");  
  285. }  
  286. //上传成功后,需要页面显示图片的web路径和在服务器上的路径  
  287. function rebackUrl(showurl,writeurl){  
  288.     //alert(showurl+"--"+writeurl);  
  289.     $("#ischangePhoto").val("YES");  
  290.     document.getElementById("localPhotoUrl").value=writeurl;  
  291.     //刷新子页面  
  292. }  
  293. </script>  


 

editphoto.jsp

[html]  view plain copy
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>  
  2. <%@ taglib uri="/struts-tags" prefix="s"%>  
  3. <%@ page import="org.hd.tempuser.model.TempUser" %>  
  4. <%  
  5.     String path = request.getContextPath();  
  6. %>  
  7. <%  
  8.     String addSuccess = "";  
  9.    if(request.getAttribute("addSuccess")!=null){  
  10.        addSuccess=(String)request.getAttribute("addSuccess");  
  11.    }  
  12. %>  
  13. <html lang="en" xmlns="http://www.w3.org/1999/xhtml">  
  14. <head>  
  15.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  16.     <link href="<%=path%>/resource/css/style.css" rel="stylesheet" type="text/css" />  
  17.     <script src="<%=path%>/script/jquery-1.7.1.js" type="text/javascript"></script>  
  18.   
  19. </head>  
  20.     <body style="background:#f3f3f3">  
  21.     <input type="hidden" id="path" value="<%=path%>" />  
  22.     请上传图片  
  23.          <form id="testform" action="<%=path%>/upphoto/upphotoServlet" method="post" enctype="multipart/form-data">  
  24.                                      <input type="file"  id="testfile" name="uploadPhoto" class="inputbox1" style="width:175px;" value=""/>  
  25.                                      <input type="hidden"  id="gonghao" name="gonghao" value=""/>  
  26.                                      <input type="hidden"  id="jobNumberTest" name="jobNumberTest" value="gh.value"/>  
  27.                                       <input type="button"  value="上传" onclick="testformsubmit()" />  
  28.                                  <input type="button"  value="取消" onclick="cancelPhoto()" />  
  29.                                    
  30.                                  </form>  
  31.     </body>  
  32. </html>  
  33.   
  34. <script>  
  35. var path=document.getElementById("path").value;  
  36.   
  37. //获取工号  
  38. parent.window.geivUnameToChild();  
  39.   
  40. function testformsubmit(){  
  41.     var testform=document.getElementById("testform");  
  42.     var gonghao=document.getElementById("gonghao").value;  
  43.     if(gonghao==null||gonghao==""||gonghao=="null"){  
  44.         alert("请先输入账号!");  
  45.     }else{  
  46.         testform.submit();  
  47.     }  
  48.       
  49. }  
  50.       
  51. function gg(){  
  52.     //调用父页面方法  
  53.     parent.window.tt();  
  54. }  
  55.   
  56.   
  57. function receivJobNum(jobnum){  
  58.     document.getElementById("gonghao").value=jobnum;  
  59. }  
  60.   
  61. function cancelPhoto(){  
  62.     parent.window.cancelEditPhotoFunc();  
  63. }  
  64. </script>  


user_view.jsp

[html]  view plain copy
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>  
  2. <%@ taglib uri="/struts-tags" prefix="s"%>  
  3. <%@ page import="org.hd.tempuser.model.TempUser" %>  
  4. <%  
  5.     String path = request.getContextPath();  
  6. %>  
  7. <%  
  8.    String tempuserid="";  
  9.    if(request.getParameter("tempuserid")!=null){  
  10.        tempuserid=(String)request.getParameter("tempuserid");  
  11.    }  
  12. %>  
  13. <html lang="en" xmlns="http://www.w3.org/1999/xhtml">  
  14. <head>  
  15.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  16.     <link href="<%=path%>/resource/css/style.css" rel="stylesheet" type="text/css" />  
  17.     <script src="<%=path%>/script/jquery-1.7.1.js" type="text/javascript"></script>  
  18.     <script src="<%=path%>/script/queryHeader.js" type="text/javascript"></script>  
  19.     <script src="<%=path%>/script/main.js" type="text/javascript"></script>  
  20.     <script src="<%=path%>/script/plugin/plugin_core.js" type="text/javascript"></script>  
  21.     <script src="<%=path%>/script/plugin/calendar/calendar_util.js" type="text/javascript"></script>  
  22.     <script src="<%=path%>/script/plugin/calendar/calendar.js" type="text/javascript"></script>  
  23.   
  24. </head>  
  25.     <body style="background:#828282">  
  26. <input type="hidden" id="path" value="<%=path%>" />  
  27. <input type="hidden" id="tempuserid" value="<%=tempuserid%>" />  
  28.           
  29.         <form id="formadd" method="post" action="<%=path%>/tempUser/viewTempUser.action">  
  30.             <input type="hidden" id="localPhotoUrl" name="localPhotoUrl" value="" />  
  31.             <table width="100%" height="30" border="0" cellspacing="0" cellpadding="0" id="box_title">  
  32.               <tr>  
  33.                 <td class="left" width="6"></td>  
  34.                 <td class="title">详细信息</td>  
  35.               </tr>  
  36.             </table>  
  37.               
  38.             <table width="100%" height="160px" border="0" cellspacing="0" cellpadding="0" class="nbox11" style="padding-left:6px">  
  39.                 <tr>  
  40.                     <td>  
  41.                         <div class="contentBody">  
  42.                             <table class="nbox14 blackn12" border="0" cellspacing="0" cellpadding="0" width="800px">  
  43.                                 <tr >  
  44.                                     <td class="td1">账号:</td><td class="td2"><input type="text" disabled readonly value="<s:property value='#request.viewTempUser.uname'/>  " name="viewTempUser.uname" class="inputbox1" id="uname" style="width:175px;" /></td>  
  45.                                     <td class="td1">性别:</td><td class="td2">  
  46.                                     <input type="text"  disabled readonly value="<s:property value='#request.viewTempUser.sex'/>  " name="viewTempUser.sex" class="inputbox1" id="sex" style="width:175px;" />  
  47.                                     </td>  
  48.                                 </tr>  
  49.                                 <tr>  
  50.                                     <td class="td1">密码:</td><td class="td2"><input type="text"  disabled  readonly value="<s:property value='#request.viewTempUser.upass'/>"  name="viewTempUser.upass" class="inputbox1" id="upass" style="width:175px;" /></td>  
  51.                                   
  52.                                     <td class="td1">姓名:</td><td class="td2"><input type="text"   disabled  readonly value="<s:property value='#request.viewTempUser.realname'/>"  name="viewTempUser.realname" class="inputbox1" id="realname" style="width:175px;" /></td>  
  53.                                 </tr>               
  54.                                 <tr>  
  55.                                     <td class="td1">邮件地址:</td><td class="td2"><input type="text"   disabled readonly  value="<s:property value='#request.viewTempUser.email'/>"  name="viewTempUser.email" class="inputbox1" id="email" style="width:175px;" /></td>  
  56.                                     <td class="td1">手机号码:</td><td class="td2"><input type="text"   disabled readonly  value="<s:property value='#request.viewTempUser.cellphone'/>"   name="viewTempUser.cellphone" class="inputbox1" id="cellphone" style="width:175px;"/> </td>  
  57.                                 </tr>  
  58.                                 <tr >  
  59.                                       
  60.                                     <td class="td1">分机:</td><td class="td2"><input type="text"  disabled  readonly  value="<s:property value='#request.viewTempUser.ext'/>"  name="viewTempUser.ext" class="inputbox1" id="ext" style="width:175px;" /></td>  
  61.                                     <td class="td1">电话:</td><td class="td2"><input type="text"  disabled  readonly  value="<s:property value='#request.viewTempUser.phone'/>" name="viewTempUser.phone" class="inputbox1" id="phone" style="width:175px;" /></td>  
  62.                                       
  63.                                 </tr>  
  64.                                 
  65.                                 <tr>  
  66.                                     <td class="td1">职级:</td><td class="td2">  
  67.                                     <input type="text"  disabled readonly value="<s:property value='#request.viewTempUser.job_level'/>  " name="viewTempUser.job_level" class="inputbox1" id="job_level" style="width:175px;" />  
  68.                                     </td>  
  69.                                   
  70.                                     <td class="td1"></td><td class="td2"></td>  
  71.                                 </tr>  
  72.                             </table>  
  73.                         </div>  
  74.                     </td>  
  75.                 </tr>  
  76.             </table>  
  77.   
  78.   
  79.                <div style="background:#f3f3f3">  
  80.             <table width="100%" height="50px" border="0" cellpadding="0" cellspacing="0" id="box_foot">  
  81.                 
  82.                                 <tr>  
  83.                                 <td style="height:50px;width:160px;text-align:right;padding-right:12px;font-size:12px; color:#333; ">备注:</td>  
  84.                                 <td style="height:50px;width:50px;text-align:left;">  
  85. <textarea  disabled readonly rows="3" cols="26"  name="addTempUser.fakeremark" id="fakeremark" >  
  86.   <s:property value='#request.viewTempUser.remark'/>    
  87. </textarea>  
  88.                                 </td>  
  89.                                 <td style="height:50px;width:80px;text-align:right;padding-right:12px;font-size:12px; color:#333; ">照片:</td>  
  90.                                 <td style="height:50px;text-align:left;">  
  91. <img src="<%=path%><s:property value='#request.viewTempUser.tempUrl'/>" width="75px" height="95px" id="person_img"/>  
  92.                                 </td>  
  93.                                 </tr>  
  94.             </table>  
  95.             </div>  
  96.           
  97.                           
  98.             <div style="background:#ffffff;padding-top:20px;">  
  99.                <table width="100%" height="30px" border="0" cellspacing="0" cellpadding="0" class="nbox11" style="padding-left:6px">  
  100.                <tr>  
  101.                     <td style="width:20%;text-align:right;padding-right:12px;">  
  102.                     </td>  
  103.                     <td style="width:20%;text-align:right;padding-right:20px;">  
  104.                                       
  105.                     </td>  
  106.                     <td style="width:30%;text-align:left;padding-left:35px;">  
  107.                       <input type="button"  value="返回" onclick="javascript:history.back(-1);" />  
  108.                     </td>  
  109.                     <td style="width:30%;text-align:left;padding-left:12px;">  
  110.                                       
  111.                     </td>  
  112.                 </tr>  
  113.             </table>  
  114.             </div>  
  115.                   
  116.               
  117.               
  118.             <table width="100%" height="50px" border="0" cellspacing="0" cellpadding="0" class="nbox11" style="padding-left:6px">  
  119.                 <tr>  
  120.                     <td>  
  121.                         <div class="contentBody"><table class="nbox14 blackn12" border="0" cellspacing="0" cellpadding="0" width="800px">  
  122.                                 <tr >  
  123.                                     <td class="td2"></td>  
  124.                                     <td class="td2">  
  125.                                     </td>  
  126.                                 </tr>  
  127.                             </table>  
  128.                         </div>  
  129.                     </td>  
  130.                 </tr>  
  131.             </table>  
  132.               
  133.             <table width="100%" height="10" border="0" cellpadding="0" cellspacing="0" id="box_foot">  
  134.               <tr>  
  135.                 <td class="left" width="7"></td>  
  136.                 <td class="mid"> </td>  
  137.                 <td class="right" width="7"></td>  
  138.               </tr>  
  139.             </table>  
  140.               
  141.               
  142.         </form>  
  143.     </body>  
  144. </html>  
  145.   
  146. <script>  
  147. var path=document.getElementById("path").value;  
  148.   
  149. </script>  


 

 

 

要说的有几点,编辑用户可能修改照片,可能不修改。

我分了这两种情况。用一个参数来区别。

下面是所有action

AddTempUserAction.java

[html]  view plain copy
  1. package org.hd.tempuser.action;  
  2.   
  3. import java.io.PrintWriter;  
  4. import java.sql.Blob;  
  5.   
  6. import javax.servlet.http.HttpServletRequest;  
  7. import javax.servlet.http.HttpServletResponse;  
  8.   
  9. import oracle.sql.BLOB;  
  10.   
  11. import org.apache.struts2.ServletActionContext;  
  12. import org.hd.tempuser.model.TempUser;  
  13. import org.hd.tempuser.service.TempUserService;  
  14. import org.hd.util.BlobUtil;  
  15. import org.hibernate.SessionFactory;  
  16. import org.rd.framework.common.container.ContainerManager;  
  17. import org.rd.framework.hibernate.ConfigurableSessionFactoryBean;  
  18. import org.rd.framework.query.sort.SortCriterion;  
  19. import org.rd.framework.struts.action.CommonAction;  
  20.   
  21. import org.hibernate.impl.SessionFactoryImpl;  
  22.   
  23. import com.opensymphony.xwork2.ActionContext;  
  24.   
  25. public class AddTempUserAction extends CommonAction{  
  26.     private TempUserService tempUserService = (TempUserService)ContainerManager.getComponent(TempUserService.BEAN_ID);  
  27.       
  28.     private TempUser addTempUser;  
  29.     private String localPhotoUrl="";  
  30.     public String addTempUser() throws Exception{  
  31.           
  32.         ActionContext ctx = ActionContext.getContext();  
  33.         HttpServletResponse response = (HttpServletResponse) ctx.get(ServletActionContext.HTTP_RESPONSE);   
  34.         HttpServletRequest request  = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);   
  35.         response.setCharacterEncoding("UTF-8");  
  36.         PrintWriter out = response.getWriter();  
  37.           
  38.           
  39.         if(getAddTempUser()!=null){  
  40.             if(getLocalPhotoUrl()==null||getLocalPhotoUrl().trim().equals("")){  
  41.                   
  42.             }else{  
  43.                 System.out.println("临时上传路径:"+getLocalPhotoUrl());  
  44.                 String loginUserJobNum=this.getLoginUserJobNumber();  
  45.                 tempUserService.addTempUserWriteBlob(getAddTempUser(),getLocalPhotoUrl(),loginUserJobNum);  
  46.             }  
  47.         }  
  48.         out.println("YES");  
  49.         request.setAttribute("addSuccess", "addSuccess");  
  50.         return SUCCESS;  
  51.     }  
  52.       
  53.     public String execute() throws Exception{  
  54.         return SUCCESS;  
  55.     }  
  56.   
  57.     public TempUser getAddTempUser() {  
  58.         return addTempUser;  
  59.     }  
  60.   
  61.     public void setAddTempUser(TempUser addTempUser) {  
  62.         this.addTempUser = addTempUser;  
  63.     }  
  64.   
  65.     public String getLocalPhotoUrl() {  
  66.         return localPhotoUrl;  
  67.     }  
  68.   
  69.     public void setLocalPhotoUrl(String localPhotoUrl) {  
  70.         this.localPhotoUrl = localPhotoUrl;  
  71.     }  
  72. }  


DelTempUserAction.java

 

[html]  view plain copy
  1. package org.hd.tempuser.action;  
  2.   
  3. import java.io.PrintWriter;  
  4.   
  5. import javax.servlet.http.HttpServletRequest;  
  6. import javax.servlet.http.HttpServletResponse;  
  7.   
  8. import org.apache.struts2.ServletActionContext;  
  9. import org.hd.tempuser.model.TempUser;  
  10. import org.hd.tempuser.service.TempUserService;  
  11. import org.rd.framework.common.container.ContainerManager;  
  12. import org.rd.framework.query.interceptor.QueryParameterAware;  
  13. import org.rd.framework.query.sort.SortCriterion;  
  14. import org.rd.framework.struts.action.BodyListAction;  
  15. import org.rd.framework.util.DateUtils;  
  16.   
  17. import com.opensymphony.xwork2.ActionContext;  
  18.   
  19. public class DelTempUserAction extends BodyListAction implements QueryParameterAware{  
  20.     private TempUserService tempUserService = (TempUserService)ContainerManager.getComponent(TempUserService.BEAN_ID);  
  21.     private String tempuserid="";  
  22.     private TempUser delTempUser=null;  
  23.       
  24.     public String delTempUser() throws Exception{  
  25.         ActionContext ctx = ActionContext.getContext();  
  26.         HttpServletResponse response = (HttpServletResponse) ctx.get(ServletActionContext.HTTP_RESPONSE);   
  27.         HttpServletRequest request  = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);   
  28.         response.setCharacterEncoding("UTF-8");  
  29.         PrintWriter out = response.getWriter();  
  30.           
  31. //      setTempuserid(request.getParameter("tempuserid"));  
  32.         if(request.getParameter("tempuserid")!=null&&!request.getParameter("tempuserid").trim().equals("")){  
  33.             tempUserService.delTempUserById(request.getParameter("tempuserid"));  
  34.             out.println("YES");  
  35.         }else{  
  36.             out.println("NO");  
  37.         }  
  38.           
  39.         return NONE;  
  40.     }  
  41.       
  42.     public String execute() throws Exception{  
  43.         return SUCCESS;  
  44.     }  
  45.   
  46.     public String getTempuserid() {  
  47.         return tempuserid;  
  48.     }  
  49.   
  50.     public void setTempuserid(String tempuserid) {  
  51.         this.tempuserid = tempuserid;  
  52.     }  
  53.   
  54.     public TempUser getDelTempUser() {  
  55.         return delTempUser;  
  56.     }  
  57.   
  58.     public void setDelTempUser(TempUser delTempUser) {  
  59.         this.delTempUser = delTempUser;  
  60.     }  
  61.   
  62.   
  63. }  


EditTempUserAction.java

[html]  view plain copy
  1. package org.hd.tempuser.action;  
  2.   
  3. import java.io.PrintWriter;  
  4. import java.sql.Blob;  
  5.   
  6. import javax.servlet.http.HttpServletRequest;  
  7. import javax.servlet.http.HttpServletResponse;  
  8.   
  9. import oracle.sql.BLOB;  
  10.   
  11. import org.apache.struts2.ServletActionContext;  
  12. import org.hd.login.service.LoginService;  
  13. import org.hd.tempuser.model.TempUser;  
  14. import org.hd.tempuser.service.TempUserService;  
  15. import org.hd.util.BlobUtil;  
  16. import org.hd.util.RamdomUtil;  
  17. import org.hibernate.SessionFactory;  
  18. import org.rd.framework.common.container.ContainerManager;  
  19. import org.rd.framework.hibernate.ConfigurableSessionFactoryBean;  
  20. import org.rd.framework.query.sort.SortCriterion;  
  21. import org.rd.framework.struts.action.CommonAction;  
  22.   
  23. import org.hibernate.impl.SessionFactoryImpl;  
  24.   
  25. import com.opensymphony.xwork2.ActionContext;  
  26.   
  27. public class EditTempUserAction extends CommonAction{  
  28.     private TempUserService tempUserService = (TempUserService)ContainerManager.getComponent(TempUserService.BEAN_ID);  
  29.     private LoginService hdLoginService = (LoginService)ContainerManager.getComponent(LoginService.BEAN_ID);  
  30.       
  31.     private TempUser editTempUser;  
  32.     private String localPhotoUrl="";  
  33.     private String ischangePhoto="";  
  34.       
  35.     public String editTempUser() throws Exception{  
  36.         //先取数据展现  
  37.         ActionContext ctx = ActionContext.getContext();  
  38.         HttpServletResponse response = (HttpServletResponse) ctx.get(ServletActionContext.HTTP_RESPONSE);   
  39.         HttpServletRequest request  = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);   
  40.         response.setCharacterEncoding("UTF-8");  
  41.         PrintWriter out = response.getWriter();  
  42.           
  43.         if(request.getParameter("tempuserid")!=null&&!request.getParameter("tempuserid").trim().equals("")){  
  44.             TempUser tt=tempUserService.getTempUserById(request.getParameter("tempuserid"));  
  45.             String photoPath=hdLoginService.getTempPhoto(tt);  
  46.             photoPath+="?randomStr="+RamdomUtil.getRamdomDateStr();//加随机参数  
  47.             tt.setTempUrl(photoPath);  
  48.             setEditTempUser(tt);  
  49.         }else{  
  50.         }  
  51.         return SUCCESS;  
  52.     }  
  53.     public String submitEditTempUser() throws Exception{  
  54.         //提交数据  
  55.         ActionContext ctx = ActionContext.getContext();  
  56.         HttpServletResponse response = (HttpServletResponse) ctx.get(ServletActionContext.HTTP_RESPONSE);   
  57.         HttpServletRequest request  = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);   
  58.         response.setCharacterEncoding("UTF-8");  
  59.         PrintWriter out = response.getWriter();  
  60.           
  61.         if(getEditTempUser()!=null){  
  62.             String hduid=getEditTempUser().getHduid().trim();  
  63.             getEditTempUser().setHduid(hduid);  
  64.             String loginUserJobNum=this.getLoginUserJobNumber();  
  65.               
  66.             if(getIschangePhoto()!=null&&getIschangePhoto().trim().equals("YES")){  
  67.                 //修改照片  
  68.                 if(getLocalPhotoUrl()==null||getLocalPhotoUrl().trim().equals("")){  
  69.                       
  70.                 } else {  
  71.                     System.out.println("临时上传路径:" + getLocalPhotoUrl());  
  72.                     tempUserService.clearPhotoBlob(getEditTempUser());  
  73.                     tempUserService.editTempUserWriteBlob(getEditTempUser(),  
  74.                             getLocalPhotoUrl(), loginUserJobNum);  
  75.                 }  
  76.             }else{  
  77.                 //不修改照片  
  78.                 tempUserService.editTempUserWithoutBlob(getEditTempUser(), loginUserJobNum);  
  79.             }  
  80.             request.setAttribute("editSuccess", "editSuccess");  
  81.               
  82.   
  83.               
  84.         }  
  85.         return SUCCESS;  
  86.     }  
  87.     public String execute() throws Exception{  
  88.         return SUCCESS;  
  89.     }  
  90.   
  91.     public String getLocalPhotoUrl() {  
  92.         return localPhotoUrl;  
  93.     }  
  94.   
  95.     public void setLocalPhotoUrl(String localPhotoUrl) {  
  96.         this.localPhotoUrl = localPhotoUrl;  
  97.     }  
  98.   
  99.     public TempUser getEditTempUser() {  
  100.         return editTempUser;  
  101.     }  
  102.   
  103.     public void setEditTempUser(TempUser editTempUser) {  
  104.         this.editTempUser = editTempUser;  
  105.     }  
  106.     public String getIschangePhoto() {  
  107.         return ischangePhoto;  
  108.     }  
  109.     public void setIschangePhoto(String ischangePhoto) {  
  110.         this.ischangePhoto = ischangePhoto;  
  111.     }  
  112. }  


ListTempUserAction.java

[html]  view plain copy
  1. package org.hd.tempuser.action;  
  2.   
  3. import org.hd.tempuser.service.TempUserService;  
  4. import org.rd.framework.common.container.ContainerManager;  
  5. import org.rd.framework.query.interceptor.QueryParameterAware;  
  6. import org.rd.framework.query.sort.SortCriterion;  
  7. import org.rd.framework.struts.action.BodyListAction;  
  8. import org.rd.framework.util.DateUtils;  
  9.   
  10. public class ListTempUserAction extends BodyListAction implements QueryParameterAware{  
  11.     private TempUserService tempUserService = (TempUserService)ContainerManager.getComponent(TempUserService.BEAN_ID);  
  12.     public String listTempUser() throws Exception{  
  13.         if (firstSorter == null && null == paginationSupport.getSorter()) {  
  14.             firstSorter = new SortCriterion();  
  15.             firstSorter.setField("queryby.hduid");    
  16.             firstSorter.setOrder(SortCriterion.DESCENDING);        
  17.         }else if(firstSorter == null && paginationSupport.getSorter() != null){  
  18.             firstSorter = paginationSupport.getSorter();  
  19.         }  
  20.         paginationSupport.setSorter(firstSorter);  
  21.         bodyList = tempUserService.getTempUserList(queryParams, paginationSupport);  
  22.         return SUCCESS;  
  23.     }  
  24.       
  25.     public String execute() throws Exception{  
  26.         return SUCCESS;  
  27.     }  
  28.       
  29.     public String getTableid() {  
  30.         return "HD_USER_000";  
  31.     }  
  32. }  


ViewTempUserAction.java

[html]  view plain copy
  1. package org.hd.tempuser.action;  
  2.   
  3. import java.io.PrintWriter;  
  4.   
  5. import javax.servlet.http.HttpServletRequest;  
  6. import javax.servlet.http.HttpServletResponse;  
  7.   
  8. import org.apache.struts2.ServletActionContext;  
  9. import org.hd.login.service.LoginService;  
  10. import org.hd.tempuser.model.TempUser;  
  11. import org.hd.tempuser.service.TempUserService;  
  12. import org.hd.util.RamdomUtil;  
  13. import org.rd.framework.common.container.ContainerManager;  
  14. import org.rd.framework.query.interceptor.QueryParameterAware;  
  15. import org.rd.framework.query.sort.SortCriterion;  
  16. import org.rd.framework.struts.action.BodyListAction;  
  17. import org.rd.framework.util.DateUtils;  
  18.   
  19. import com.opensymphony.xwork2.ActionContext;  
  20.   
  21. public class ViewTempUserAction extends BodyListAction implements QueryParameterAware{  
  22.     private TempUserService tempUserService = (TempUserService)ContainerManager.getComponent(TempUserService.BEAN_ID);  
  23.     private LoginService hdLoginService = (LoginService)ContainerManager.getComponent(LoginService.BEAN_ID);  
  24.       
  25.     private TempUser viewTempUser=null;  
  26.     private String command="";  
  27.       
  28.     public String viewTempUser() throws Exception{  
  29.         ActionContext ctx = ActionContext.getContext();  
  30.         HttpServletResponse response = (HttpServletResponse) ctx.get(ServletActionContext.HTTP_RESPONSE);   
  31.         HttpServletRequest request  = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);   
  32.         response.setCharacterEncoding("UTF-8");  
  33.         PrintWriter out = response.getWriter();  
  34.           
  35.         if(request.getParameter("tempuserid")!=null&&!request.getParameter("tempuserid").trim().equals("")){  
  36.             TempUser tt=tempUserService.getTempUserById(request.getParameter("tempuserid"));  
  37.             String photoPath=hdLoginService.getTempPhoto(tt);  
  38.             photoPath+="?randomStr="+RamdomUtil.getRamdomDateStr();//加随机参数  
  39.             tt.setTempUrl(photoPath);  
  40.             setViewTempUser(tt);  
  41.         }else{  
  42.         }  
  43.         return SUCCESS;  
  44.     }  
  45.       
  46.     public String execute() throws Exception{  
  47.         return SUCCESS;  
  48.     }  
  49.   
  50.     public TempUser getViewTempUser() {  
  51.         return viewTempUser;  
  52.     }  
  53.   
  54.     public void setViewTempUser(TempUser viewTempUser) {  
  55.         this.viewTempUser = viewTempUser;  
  56.     }  
  57.   
  58.     public String getCommand() {  
  59.         return command;  
  60.     }  
  61.   
  62.     public void setCommand(String command) {  
  63.         this.command = command;  
  64.     }  
  65.       
  66. }  

 struts_tempuser.xml

[java]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4. "http://struts.apache.org/dtds/struts-2.0.dtd">  
  5. <struts>  
  6.     <package name="tempUser" extends="cx-struts-default" namespace="/tempUser">  
  7.         <action name="listTempUser" class="org.hd.tempuser.action.ListTempUserAction" method="listTempUser">  
  8.              <result name="success">/jsp/hd/home/usermanage/uesrs.jsp</result>  
  9.         </action>  
  10.         <action name="delTempUser" class="org.hd.tempuser.action.DelTempUserAction" method="delTempUser">  
  11.         </action>  
  12.         <action name="addTempUser" class="org.hd.tempuser.action.AddTempUserAction" method="addTempUser">  
  13.              <result name="success">/jsp/hd/home/usermanage/add_user.jsp</result>  
  14.         </action>  
  15.         <action name="viewTempUser" class="org.hd.tempuser.action.ViewTempUserAction" method="viewTempUser">  
  16.              <result name="success">/jsp/hd/home/usermanage/user_view.jsp</result>  
  17.         </action>  
  18.         <action name="editTempUser" class="org.hd.tempuser.action.EditTempUserAction" method="editTempUser">  
  19.              <result name="success">/jsp/hd/home/usermanage/user_edit.jsp</result>  
  20.         </action>  
  21.         <action name="submitEditTempUser" class="org.hd.tempuser.action.EditTempUserAction" method="submitEditTempUser">  
  22.              <result name="success">/jsp/hd/home/usermanage/user_edit.jsp</result>  
  23.         </action>  
  24.         <action name="uploadPhotoToTempDir" class="org.hd.tempuser.action.UploadPhotoAction" method="uploadPhotoToTempDir">  
  25.         </action>  
  26.           
  27.         <action name="uploadWithStruts" class="org.hd.tempuser.action.UploadWithStrutsAction" method="uploadWithStruts">  
  28.             <!-- 限制图片的格式和图片的大小 -->  
  29.             <interceptor-ref name="fileUpload">  
  30.                 <param name="allowedTypes">  
  31.                     image/bmp,image/png,image/gif,image/jpeg,image/jpg  
  32.                 </param>  
  33.                 <param name="maximumSize">102400</param>  
  34.             </interceptor-ref>  
  35.             <!-- 默认的拦截器,必须要写 -->  
  36.             <interceptor-ref name="defaultStack" />  
  37.             <result name="success">/jsp/hd/home/usermanage/add_user.jsp</result>  
  38.         </action>  
  39.           
  40.         <action name="goPageuploadWithStruts" class="org.hd.tempuser.action.UploadWithStrutsAction">  
  41.            <result name="success">/jsp/hd/home/usermanage/add_user.jsp</result>  
  42.         </action>  
  43.           
  44.     </package>  
  45. </struts>  


 

 

 

至于读取blob,看第二篇文章吧

(二)上传图片至服务器,写入到数据库Blob字段中,以及从数据库读取Blob信息(iframe父子页面传值)


 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值