一、文件上传
Struts实现单文件上传、修改、删除(以图片为例) _java        思想:图片是以流的方式进行读取,上传的图片存放在服务器端的某个文件夹中,数据库中保存的是上传的图片的地址。
Struts实现单文件上传、修改、删除(以图片为例) _java
1.ActionForm(userForm)
Struts实现单文件上传、修改、删除(以图片为例) _java    
private FormFile p_w_picpath;//用于封装从jsp页面传过来的文本类型的属性
Struts实现单文件上传、修改、删除(以图片为例) _java
2.pojo(User)
Struts实现单文件上传、修改、删除(以图片为例) _java    
private String path;//用于存放上传图片的地址,数据库中需要添加存放该地址的字段
Struts实现单文件上传、修改、删除(以图片为例) _java
3.jsp
Struts实现单文件上传、修改、删除(以图片为例) _java    
<html:form action=" " enctype="multipart/form-data">//form设置了enctype属性后就是二进制传输数据了
Struts实现单文件上传、修改、删除(以图片为例) _java
    <html:file property="p_w_picpath"></html:file>
Struts实现单文件上传、修改、删除(以图片为例) _java    
</html:form>
Struts实现单文件上传、修改、删除(以图片为例) _java
4.action
Struts实现单文件上传、修改、删除(以图片为例) _java    String basePath
=this.getServlet().getServletContext().getRealPath("/");//获得服务器的基路径
Struts实现单文件上传、修改、删除(以图片为例) _java
    String path="/uploadImage/"+userService.picturePath(userForm.getImage());//上传图片保存的相对路径,图片                                                                                                    名通过userService中的picturePath方法进行处理
Struts实现单文件上传、修改、删除(以图片为例) _java
    String  endString=userForm.getImage().getFileName().substring
Struts实现单文件上传、修改、删除(以图片为例) _java        (userForm.getImage().getFileName().lastIndexOf(
".")+1);//获取图片的后缀名
Struts实现单文件上传、修改、删除(以图片为例) _java
5.service(userService)
Struts实现单文件上传、修改、删除(以图片为例) _java    
if("jpg".equals(endString)||"png".equals(endString)||"gif".equals(endString)||"JPG".equals(endString)||
Struts实现单文件上传、修改、删除(以图片为例) _struts_17        
"PNG".equals(endString)||"GIF".equals(endString)){//限制上传图片的类型
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
       userDAO.saveImage(p_w_picpath,basePath,path);//保存图片
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
       user.setPath(path);//将上传图片的路径(地址)进库
Struts实现单文件上传、修改、删除(以图片为例) _职场_21
    }
else{
Struts实现单文件上传、修改、删除(以图片为例) _职场_19       user.setPath(
" ");//上传的图片不符合要求,在数据库中设置为空
Struts实现单文件上传、修改、删除(以图片为例) _java_24
    }

Struts实现单文件上传、修改、删除(以图片为例) _java
6.dao(userDAO)
Struts实现单文件上传、修改、删除(以图片为例) _java_26    
public String picturePath(FormFile p_w_picpath){//处理上传的图片名,UUIDGenerator详见相关日志
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
       String filename=" ";//初始化变量
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
       UUIDGenerator g=new UUIDGenerator();//创建UUIDGenerator类的一个对象
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
       filename=p_w_picpath.getFileName();//将图片的文件名赋值给变量
Struts实现单文件上传、修改、删除(以图片为例) _struts_31
       if(filename.length()>0){
Struts实现单文件上传、修改、删除(以图片为例) _职场_19          filename
=filename.substring(filename.lastIndexOf("."));//将文件名除了后缀名的部分赋给filename变量
Struts实现单文件上传、修改、删除(以图片为例) _struts_34
        }

Struts实现单文件上传、修改、删除(以图片为例) _职场_19       filename
=(String)g.generate()+filename;//对上传的图片文件名进行处理,以免出现上传的图片名相同
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
       return filename;
Struts实现单文件上传、修改、删除(以图片为例) _java_24    }

Struts实现单文件上传、修改、删除(以图片为例) _java
Struts实现单文件上传、修改、删除(以图片为例) _java_39    
public void saveImage(FormFile p_w_picpath,String basePath,String path) throws IOException{//上传图片
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
        FileOutputStream fos=null;//文件输出流
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
        BufferedInputStream in=null;//缓冲的输入流
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
        BufferedOutputStream out=null;//缓冲的输出流
Struts实现单文件上传、修改、删除(以图片为例) _java_44
        try {
Struts实现单文件上传、修改、删除(以图片为例) _职场_19            fos
=new FileOutputStream(basePath+path);//创建一个向指定File对象表示的文件中写入数据的输出流
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
            in=new BufferedInputStream(p_w_picpath.getInputStream());//创建BufferedInputStream并保存其参数,即输入流                                                                                                    in,以便将来使用
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
            out=new BufferedOutputStream(fos);//创建一个新的缓冲输出流,以将数据写入指定的基础输出流
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
            byte[] buf=new byte[8192];//创建一个字节缓冲数组,用于指定每次写入的字节大小(8192=8k)
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
            int readSize;
Struts实现单文件上传、修改、删除(以图片为例) _职场_51            
while((readSize=in.read(buf))!=-1){//判断缓冲数组中是否还有数据
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
                out.write(buf, 0, readSize);//将指定buf数组中从偏移量0开始的readSize个字节写入此缓冲的输出流
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
                out.flush();//关闭缓冲的输出流
Struts实现单文件上传、修改、删除(以图片为例) _struts_34
            }

Struts实现单文件上传、修改、删除(以图片为例) _java_56        }
 catch (FileNotFoundException e) {
Struts实现单文件上传、修改、删除(以图片为例) _职场_19            
// TODO Auto-generated catch block
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
            e.printStackTrace();
Struts实现单文件上传、修改、删除(以图片为例) _struts_60        }
finally{
Struts实现单文件上传、修改、删除(以图片为例) _职场_62            
if(out!=null){
Struts实现单文件上传、修改、删除(以图片为例) _struts_64                
try {
Struts实现单文件上传、修改、删除(以图片为例) _职场_19                    out.close();
Struts实现单文件上传、修改、删除(以图片为例) _java_67                }
 catch (RuntimeException e) {
Struts实现单文件上传、修改、删除(以图片为例) _职场_19                    
// TODO Auto-generated catch block
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
                    e.printStackTrace();
Struts实现单文件上传、修改、删除(以图片为例) _struts_34                }

Struts实现单文件上传、修改、删除(以图片为例) _struts_34            }

Struts实现单文件上传、修改、删除(以图片为例) _职场_73            
if(in!=null){
Struts实现单文件上传、修改、删除(以图片为例) _java_75                
try {
Struts实现单文件上传、修改、删除(以图片为例) _职场_19                    in.close();
Struts实现单文件上传、修改、删除(以图片为例) _java_78                }
 catch (RuntimeException e) {
Struts实现单文件上传、修改、删除(以图片为例) _职场_19                    
// TODO Auto-generated catch block
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
                    e.printStackTrace();
Struts实现单文件上传、修改、删除(以图片为例) _struts_34                }

Struts实现单文件上传、修改、删除(以图片为例) _struts_34            }

Struts实现单文件上传、修改、删除(以图片为例) _休闲_84            
if(fos!=null){
Struts实现单文件上传、修改、删除(以图片为例) _java_86                
try {
Struts实现单文件上传、修改、删除(以图片为例) _职场_19                    fos.close();
Struts实现单文件上传、修改、删除(以图片为例) _休闲_89                }
 catch (RuntimeException e) {
Struts实现单文件上传、修改、删除(以图片为例) _职场_19                    
// TODO Auto-generated catch block
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
                    e.printStackTrace();
Struts实现单文件上传、修改、删除(以图片为例) _struts_34                }

Struts实现单文件上传、修改、删除(以图片为例) _struts_34            }

Struts实现单文件上传、修改、删除(以图片为例) _struts_34        }

Struts实现单文件上传、修改、删除(以图片为例) _java_24    }

Struts实现单文件上传、修改、删除(以图片为例) _java
Struts实现单文件上传、修改、删除(以图片为例) _java二、文件删除
Struts实现单文件上传、修改、删除(以图片为例) _java    思路:上传的文件存放在某个文件夹中,该图片的地址存放在数据库中,因此,在删除图片的时候,不仅要删除它在数据库中的地址,而且还要删除在文件夹中的文件,删除图片之前要获取该图片的绝对路径。
Struts实现单文件上传、修改、删除(以图片为例) _java
1.action(userAction)
Struts实现单文件上传、修改、删除(以图片为例) _java    String basepath
=this.getServlet().getServletContext().getRealPath("/");//获得服务器基路径
Struts实现单文件上传、修改、删除(以图片为例) _java
2.service(userService)
Struts实现单文件上传、修改、删除(以图片为例) _java    userDAO.deleteImage(uId,basepath);
//删除图片
Struts实现单文件上传、修改、删除(以图片为例) _java
    userDAO.deleteUser(uId);//删除图片在数据库中的路径
Struts实现单文件上传、修改、删除(以图片为例) _java
3.dao(userDAO)
Struts实现单文件上传、修改、删除(以图片为例) _struts_106    
public void deleteImage(Integer uId,String basepath){
Struts实现单文件上传、修改、删除(以图片为例) _职场_19       User user
=this.getUserById(uId);//取出某个用户对象(获得图片的相对路径)
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
       String path=user.getPath();//将图片的相对路径赋值
Struts实现单文件上传、修改、删除(以图片为例) _休闲_110
       if(path!=null){
Struts实现单文件上传、修改、删除(以图片为例) _职场_19          File file
=new File(basepath+path);//根据绝对路径创建一个文件对象
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
          file.delete();//删除文件
Struts实现单文件上传、修改、删除(以图片为例) _struts_34
        }

Struts实现单文件上传、修改、删除(以图片为例) _java_24    }

Struts实现单文件上传、修改、删除(以图片为例) _java
Struts实现单文件上传、修改、删除(以图片为例) _java三、修改文件
Struts实现单文件上传、修改、删除(以图片为例) _java    思路:先将原来的图片删除,然后重新上传一张图片
Struts实现单文件上传、修改、删除(以图片为例) _java
1.jsp(edit.jsp)
Struts实现单文件上传、修改、删除(以图片为例) _java    
<html:hidden property="path"/>//获得原来图片的路径放在隐藏域中(尤其要注意)
Struts实现单文件上传、修改、删除(以图片为例) _java
    <html:file property="p_w_picpath"/>
Struts实现单文件上传、修改、删除(以图片为例) _java
2.action(userAction)
Struts实现单文件上传、修改、删除(以图片为例) _java    String basepath
=this.getServlet().getServletCotext().getRealPath("/");//获得服务器基路径
Struts实现单文件上传、修改、删除(以图片为例) _java
    String path=null;
Struts实现单文件上传、修改、删除(以图片为例) _java_125    
if(userForm.getImage().getFileSize()>0){//判断是否需要修改图片
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
       path="/uploadImage/"+userForm.getImage();
Struts实现单文件上传、修改、删除(以图片为例) _java_24    }

Struts实现单文件上传、修改、删除(以图片为例) _java    userService.modify(basepath,path,userForm.getImage());
//调用修改的方法
Struts实现单文件上传、修改、删除(以图片为例) _java
3.service(userService)
Struts实现单文件上传、修改、删除(以图片为例) _struts_131    
if(user.getPath()!=null&&path!=null){//需要修改图片的情况
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
       userDAO.deleteImage(basepath+path);//根据绝对路径删除图片
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
       userDAO.saveImage(p_w_picpath,basepath,path);//根据相对路径重新上传一张图片
Struts实现单文件上传、修改、删除(以图片为例) _职场_19
       user.setPath(path);//将新路径保存到user对象中
Struts实现单文件上传、修改、删除(以图片为例) _java_24
    }

Struts实现单文件上传、修改、删除(以图片为例) _java    userDAO.modify(id,user);
Struts实现单文件上传、修改、删除(以图片为例) _java
4.dao(userDAO)方法同上