相册管理系统

前端之家收集整理的这篇文章主要介绍了相册管理系统前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

功能文件上传,下载和管理
技术:1.用xml当做数据库存储信息(dom4j,xpath)
2.Java表单的文件上传和下载
3.文件目录的打散 ( Hash目录是一种优化文件存储性能方法

需要的jar包:
commons-fileupload-1.2.2.jar、commons-io-2.1.jar、dom4j-1.6.1.jar和jaxen-1.1-beta-6.jar


先写index.jsp

<%@ page language="java"@H_404_16@ import="java.util.*"@H_404_16@ pageEncoding="utf-8"@H_404_16@%>@H_404_16@

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">@H_404_16@
<html@H_404_16@>@H_404_16@
  <head@H_404_16@>@H_404_16@

    <title@H_404_16@>@H_404_16@相册管理系统</title@H_404_16@>@H_404_16@
  </head@H_404_16@>@H_404_16@

  <body@H_404_16@>@H_404_16@
        <h1@H_404_16@>@H_404_16@我的小相册</h1@H_404_16@>@H_404_16@
        <a@H_404_16@ href@H_404_16@="jsps/upload.jsp"@H_404_16@>@H_404_16@上传相册</a@H_404_16@>@H_404_16@
        <a@H_404_16@ href@H_404_16@="servlets/ShowServlet"@H_404_16@>@H_404_16@浏览相册</a@H_404_16@>@H_404_16@
  </body@H_404_16@>@H_404_16@
</html@H_404_16@>@H_404_16@

upload.jsp是下载页面放在jsps目录下

<%@ page language="java"@H_404_16@ import="java.util.*"@H_404_16@ pageEncoding="UTF-8"@H_404_16@%>@H_404_16@

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">@H_404_16@
<html@H_404_16@>@H_404_16@
  <head@H_404_16@>@H_404_16@
  </head@H_404_16@>@H_404_16@

  <body@H_404_16@>@H_404_16@
    <h1@H_404_16@>@H_404_16@相处上传</h1@H_404_16@>@H_404_16@
    <form@H_404_16@ action@H_404_16@="<%=request.getContextPath()%>/servlets/UploadServlet"@H_404_16@ method@H_404_16@="post"@H_404_16@ enctype@H_404_16@="multipart/form-data"@H_404_16@>@H_404_16@
               文件:<input@H_404_16@ type@H_404_16@="file"@H_404_16@ name@H_404_16@="file1"@H_404_16@/>@H_404_16@<br@H_404_16@/>@H_404_16@
               说明:<input@H_404_16@ type@H_404_16@="text"@H_404_16@ name@H_404_16@="desc"@H_404_16@ />@H_404_16@<br@H_404_16@/>@H_404_16@
       <input@H_404_16@ type@H_404_16@="submit"@H_404_16@ value@H_404_16@="上传"@H_404_16@ />@H_404_16@
    </form@H_404_16@>@H_404_16@
  </body@H_404_16@>@H_404_16@

</html@H_404_16@>@H_404_16@

photos.xml放在src目录下

<?xml version="1.0" encoding="UTF-8"?>@H_404_16@
<photos@H_404_16@>@H_404_16@
</photos@H_404_16@>@H_404_16@

在写值对象PhotoModel

package@H_404_16@ cn.hncu.demain;

public@H_404_16@ class@H_404_16@ PhotoModel@H_404_16@ {@H_404_16@
    private@H_404_16@ String id;
    private@H_404_16@ String realName;
    private@H_404_16@ String ext;
    private@H_404_16@ String dir;
    private@H_404_16@ String dateTime;
    private@H_404_16@ String ip;
    private@H_404_16@ String desc;
    public@H_404_16@ String getId@H_404_16@() {
        return@H_404_16@ id;
    }
    public@H_404_16@ void@H_404_16@ setId@H_404_16@(String id) {
        this@H_404_16@.id = id;
    }
    public@H_404_16@ String getRealName@H_404_16@() {
        return@H_404_16@ realName;
    }
    public@H_404_16@ void@H_404_16@ setRealName@H_404_16@(String realName) {
        this@H_404_16@.realName = realName;
    }
    public@H_404_16@ String getExt@H_404_16@() {
        return@H_404_16@ ext;
    }
    public@H_404_16@ void@H_404_16@ setExt@H_404_16@(String ext) {
        this@H_404_16@.ext = ext;
    }
    public@H_404_16@ String getDir@H_404_16@() {
        return@H_404_16@ dir;
    }
    public@H_404_16@ void@H_404_16@ setDir@H_404_16@(String dir) {
        this@H_404_16@.dir = dir;
    }
    public@H_404_16@ String getDateTime@H_404_16@() {
        return@H_404_16@ dateTime;
    }
    public@H_404_16@ void@H_404_16@ setDateTime@H_404_16@(String dateTime) {
        this@H_404_16@.dateTime = dateTime;
    }
    public@H_404_16@ String getIp@H_404_16@() {
        return@H_404_16@ ip;
    }
    public@H_404_16@ void@H_404_16@ setIp@H_404_16@(String ip) {
        this@H_404_16@.ip = ip;
    }
    public@H_404_16@ String getDesc@H_404_16@() {
        return@H_404_16@ desc;
    }
    public@H_404_16@ void@H_404_16@ setDesc@H_404_16@(String desc) {
        this@H_404_16@.desc = desc;
    }
    @Override@H_404_16@
    public@H_404_16@ String toString@H_404_16@() {
        return@H_404_16@ "PhotoModel [id="@H_404_16@ + id + ",realName="@H_404_16@ + realName + ",ext="@H_404_16@
                + ext + ",dir="@H_404_16@ + dir + ",dateTime="@H_404_16@ + dateTime + ",ip="@H_404_16@
                + ip + ",desc="@H_404_16@ + desc + "]"@H_404_16@;
    }

}

写工具类两个:
MyUtil(日期格式化,目录打散代码随机id代码)

package@H_404_16@ cn.hncu.utils;

import@H_404_16@ java.text.SimpleDateFormat;
import@H_404_16@ java.util.Date;
import@H_404_16@ java.util.UUID;

public@H_404_16@ class@H_404_16@ MyUtils@H_404_16@ {@H_404_16@
    private@H_404_16@  MyUtils@H_404_16@() {
    }
    private@H_404_16@ static@H_404_16@ SimpleDateFormat format=new@H_404_16@ SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss"@H_404_16@);
    public@H_404_16@ static@H_404_16@ String getCurrentDateTime@H_404_16@(){
        return@H_404_16@ format.format(new@H_404_16@ Date());
    }
    public@H_404_16@ static@H_404_16@ String getUUid@H_404_16@(){
        UUID uuid=UUID.randomUUID();
        String id=uuid.toString().replaceAll("-"@H_404_16@,""@H_404_16@);
        return@H_404_16@ id;
    }
    public@H_404_16@ static@H_404_16@ String getDir@H_404_16@(String uuid){
        String dir1=Integer.toHexString(uuid.hashCode() & 0xf@H_404_16@);
        String dir2=Integer.toHexString((uuid.hashCode() & 0xf0@H_404_16@)>>4@H_404_16@);
        return@H_404_16@ dir1+"/"@H_404_16@+dir2;
    }
}

Dom4jFactory(dom4j的相关操作,获取document对象,保存操作)

package@H_404_16@ cn.hncu.utils;

import@H_404_16@ java.io.File;
import@H_404_16@ java.io.FileInputStream;
import@H_404_16@ java.io.FileNotFoundException;
import@H_404_16@ java.io.FileOutputStream;
import@H_404_16@ java.io.UnsupportedEncodingException;

import@H_404_16@ org.dom4j.Document;
import@H_404_16@ org.dom4j.DocumentException;
import@H_404_16@ org.dom4j.io.OutputFormat;
import@H_404_16@ org.dom4j.io.SAXReader;
import@H_404_16@ org.dom4j.io.XMLWriter;

public@H_404_16@ class@H_404_16@ Dom4jFactory@H_404_16@ {@H_404_16@
    private@H_404_16@ static@H_404_16@ Document dom = null@H_404_16@;
    private@H_404_16@ static@H_404_16@ String path;
    static@H_404_16@ {
        try@H_404_16@ {
            SAXReader sax = new@H_404_16@ SAXReader();
            // 学习一下服务器下的资源路径加载方式(因为我们的资源已经从MyEclipse中发布到Tomcat服务器中了,所以跟原来纯Java项目不一样了)@H_404_16@
            // 利用当前类找到它的类加载器,然后通过该类加载器再去获得资源路径@H_404_16@
            path = Dom4jFactory.class.getClassLoader().getResource("photos.xml"@H_404_16@)
                    .getPath();
            dom = sax.read(new@H_404_16@ FileInputStream(path));
        } catch@H_404_16@ (Exception e) {
            throw@H_404_16@ new@H_404_16@ RuntimeException(e.getMessage(),e);
        }
    }
    public@H_404_16@ static@H_404_16@ Document getDom@H_404_16@(){
        return@H_404_16@ dom;
    }
    public@H_404_16@ static@H_404_16@ boolean@H_404_16@ save@H_404_16@(){
        try@H_404_16@ {
            OutputFormat format=new@H_404_16@ OutputFormat();
            format.setEncoding("utf-8"@H_404_16@);
            XMLWriter w = new@H_404_16@ XMLWriter( new@H_404_16@ FileOutputStream(new@H_404_16@ File(path)),format);
            w.write(dom);
            w.close();
            return@H_404_16@ true@H_404_16@;
        } catch@H_404_16@ (Exception e) {
            return@H_404_16@ false@H_404_16@;
        }
    }
}

从底层写PhotoDao

package cn.hncu@H_404_16@.dao@H_404_16@;@H_404_16@



import java.util@H_404_16@.ArrayList@H_404_16@;@H_404_16@
import java.util@H_404_16@.Iterator@H_404_16@;@H_404_16@
import java.util@H_404_16@.List@H_404_16@;@H_404_16@

import org.dom@H_404_16@4j.Document@H_404_16@;@H_404_16@
import org.dom@H_404_16@4j.Element@H_404_16@;@H_404_16@

import cn.hncu@H_404_16@.demain@H_404_16@.PhotoModel@H_404_16@;@H_404_16@
import cn.hncu@H_404_16@.utils@H_404_16@.Dom@H_404_16@4jFactory;@H_404_16@


public class PhotoDao {
    //添加
    public boolean add@H_404_16@(PhotoModel photo){
        Document dom=Dom4jFactory.getDom@H_404_16@();@H_404_16@
        Element root=dom.getRootElement@H_404_16@();@H_404_16@
        Element ePhoto=root.addElement@H_404_16@("photo"@H_404_16@);@H_404_16@
        ePhoto.addAttribute@H_404_16@("id"@H_404_16@,photo.getId@H_404_16@());@H_404_16@
        ePhoto.addAttribute@H_404_16@("realName"@H_404_16@,photo.getRealName@H_404_16@());@H_404_16@
        ePhoto.addAttribute@H_404_16@("dir"@H_404_16@,photo.getDir@H_404_16@());@H_404_16@
        ePhoto.addAttribute@H_404_16@("ip"@H_404_16@,photo.getIp@H_404_16@());@H_404_16@
        ePhoto.addAttribute@H_404_16@("dateTime"@H_404_16@,photo.getDateTime@H_404_16@());@H_404_16@
        ePhoto.addAttribute@H_404_16@("ext"@H_404_16@,photo.getExt@H_404_16@());@H_404_16@
        ePhoto.addElement@H_404_16@("desc"@H_404_16@).setText@H_404_16@(photo.getDesc@H_404_16@());@H_404_16@

        boolean boo=Dom4jFactory.save@H_404_16@();@H_404_16@
        return boo;@H_404_16@
    }

    //浏览
    public List<PhotoModel>  getAll(){
        Document dom=Dom4jFactory.getDom@H_404_16@();@H_404_16@
        List<PhotoModel> list=new ArrayList<PhotoModel>();@H_404_16@
        Element root=dom.getRootElement@H_404_16@();@H_404_16@
        Iterator<Element> it=root.elementIterator@H_404_16@();@H_404_16@
        while(it.hasNext@H_404_16@()){
            PhotoModel photo=new PhotoModel();@H_404_16@
            Element e=it.next@H_404_16@();@H_404_16@
            photo.setId@H_404_16@(e.attributeValue@H_404_16@("id"@H_404_16@));@H_404_16@
            photo.setDateTime@H_404_16@(e.attributeValue@H_404_16@("dateTime"@H_404_16@));@H_404_16@
            photo.setDir@H_404_16@(e.attributeValue@H_404_16@("dir"@H_404_16@));@H_404_16@
            photo.setExt@H_404_16@(e.attributeValue@H_404_16@("ext"@H_404_16@));@H_404_16@
            photo.setIp@H_404_16@(e.attributeValue@H_404_16@("ip"@H_404_16@));@H_404_16@
            photo.setRealName@H_404_16@(e.attributeValue@H_404_16@("realName"@H_404_16@));@H_404_16@
            photo.setDesc@H_404_16@(e.elementText@H_404_16@("desc"@H_404_16@));@H_404_16@
            list.add@H_404_16@(photo);@H_404_16@
        }
        return list;@H_404_16@
    }

    public PhotoModel getSingleById(String id) {
        Document dom=Dom4jFactory.getDom@H_404_16@();@H_404_16@
        List<PhotoModel> list=getAll();@H_404_16@
        for(PhotoModel photo:list){
            if(photo.getId@H_404_16@().equals@H_404_16@(id)){
                return photo;@H_404_16@
            }
        }
        return null;@H_404_16@
    }
    public boolean del(String id) {
        Document dom=Dom4jFactory.getDom@H_404_16@();@H_404_16@
        Element e=(Element) dom.selectSingleNode@H_404_16@("//photo[@id='"@H_404_16@+id.trim@H_404_16@()+"']"@H_404_16@);@H_404_16@
        return e.getParent@H_404_16@().remove@H_404_16@(e);@H_404_16@

    }
}

最后写四个servlet
UploadServlet 上传Servlet代码

package cn.hncu@H_404_16@.servlets@H_404_16@;@H_404_16@

import java.io@H_404_16@.File@H_404_16@;@H_404_16@
import java.io@H_404_16@.IOException@H_404_16@;@H_404_16@
import java.io@H_404_16@.InputStream@H_404_16@;@H_404_16@
import java.io@H_404_16@.PrintWriter@H_404_16@;@H_404_16@
import java.util@H_404_16@.List@H_404_16@;@H_404_16@

import javax.servlet@H_404_16@.ServletException@H_404_16@;@H_404_16@
import javax.servlet@H_404_16@.http@H_404_16@.HttpServlet@H_404_16@;@H_404_16@
import javax.servlet@H_404_16@.http@H_404_16@.HttpServletRequest@H_404_16@;@H_404_16@
import javax.servlet@H_404_16@.http@H_404_16@.HttpServletResponse@H_404_16@;@H_404_16@

import org.apache@H_404_16@.commons@H_404_16@.fileupload@H_404_16@.FileItem@H_404_16@;@H_404_16@
import org.apache@H_404_16@.commons@H_404_16@.fileupload@H_404_16@.FileUploadException@H_404_16@;@H_404_16@
import org.apache@H_404_16@.commons@H_404_16@.fileupload@H_404_16@.disk@H_404_16@.DiskFileItemFactory@H_404_16@;@H_404_16@
import org.apache@H_404_16@.commons@H_404_16@.fileupload@H_404_16@.servlet@H_404_16@.ServletFileUpload@H_404_16@;@H_404_16@
import org.apache@H_404_16@.commons@H_404_16@.io@H_404_16@.FileUtils@H_404_16@;@H_404_16@

import cn.hncu@H_404_16@.dao@H_404_16@.PhotoDao@H_404_16@;@H_404_16@
import cn.hncu@H_404_16@.demain@H_404_16@.PhotoModel@H_404_16@;@H_404_16@
import cn.hncu@H_404_16@.utils@H_404_16@.MyUtils@H_404_16@;@H_404_16@

public class UploadServlet extends HttpServlet {

    public void doGet(HttpServletRequest request,HttpServletResponse response)
            throws ServletException,IOException {
        response.setContentType@H_404_16@("text/html;charset=utf-8"@H_404_16@);@H_404_16@
        PrintWriter out@H_404_16@ = response.getWriter@H_404_16@();@H_404_16@
        out@H_404_16@.println@H_404_16@("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"@H_404_16@);@H_404_16@
        out@H_404_16@.println@H_404_16@("<HTML>"@H_404_16@);@H_404_16@
        out@H_404_16@.println@H_404_16@(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"@H_404_16@);@H_404_16@
        out@H_404_16@.println@H_404_16@(" <BODY>"@H_404_16@);@H_404_16@

        out@H_404_16@.println@H_404_16@("不支持get方式上传!"@H_404_16@);@H_404_16@

        out@H_404_16@.println@H_404_16@(" </BODY>"@H_404_16@);@H_404_16@
        out@H_404_16@.println@H_404_16@("</HTML>"@H_404_16@);@H_404_16@
        out@H_404_16@.flush@H_404_16@();@H_404_16@
        out@H_404_16@.close@H_404_16@();@H_404_16@
    }

    public void doPost(HttpServletRequest request,IOException {

        response.setContentType@H_404_16@("text/html;charset=utf-8"@H_404_16@);@H_404_16@

        PrintWriter out@H_404_16@ = response.getWriter@H_404_16@();@H_404_16@

        String path=request.getServletContext@H_404_16@().getRealPath@H_404_16@("/photos"@H_404_16@);@H_404_16@
        DiskFileItemFactory factory=new DiskFileItemFactory();@H_404_16@
        factory.setRepository@H_404_16@(new File("g:/a"@H_404_16@));@H_404_16@
        ServletFileUpload upload = new ServletFileUpload(factory);@H_404_16@
        upload.setSizeMax@H_404_16@(1024@H_404_16@*1024@H_404_16@*10@H_404_16@);//最大10M@H_404_16@
        upload.setHeaderEncoding@H_404_16@("utf-8"@H_404_16@);//用于设置文件名的编码,相当于:request.setCharacterEncoding("utf-8");@H_404_16@

         FileItem fi=null;@H_404_16@
         try {
            List<FileItem> list=upload.parseRequest@H_404_16@(request);@H_404_16@
            PhotoModel photo = new PhotoModel();//数据封装---需要7个属性@H_404_16@
            boolean boo=false;@H_404_16@
            InputStream in@H_404_16@ = null;@H_404_16@

            for(FileItem fi2:list){
                fi=fi2;@H_404_16@
                if(fi.isFormField@H_404_16@()){
                    String desc=fi.getString@H_404_16@("utf-8"@H_404_16@);@H_404_16@
                    photo.setDesc@H_404_16@(desc);//desc@H_404_16@
                }else{
                    in@H_404_16@=fi.getInputStream@H_404_16@();@H_404_16@
                    String realName=fi.getName@H_404_16@();@H_404_16@
                    if(realName==null || realName.trim@H_404_16@().equals@H_404_16@(""@H_404_16@)){
                        out@H_404_16@.print@H_404_16@("没有选择文件!"@H_404_16@);@H_404_16@
                        return;@H_404_16@
                    }
                    if(realName.indexOf@H_404_16@("\\"@H_404_16@)!=-1@H_404_16@){
                        realName=realName.substring@H_404_16@(realName.lastIndexOf@H_404_16@("\\"@H_404_16@)+1@H_404_16@);@H_404_16@
                    }
                    photo.setRealName@H_404_16@(realName);//真实文件名@H_404_16@
                    String ext=realName.substring@H_404_16@(realName.lastIndexOf@H_404_16@("."@H_404_16@));@H_404_16@
                    photo.setExt@H_404_16@(ext);//3@H_404_16@
                    photo.setDateTime@H_404_16@(MyUtils.getCurrentDateTime@H_404_16@());//4@H_404_16@
                    photo.setId@H_404_16@(MyUtils.getUUid@H_404_16@());//5@H_404_16@
                    photo.setDir@H_404_16@(MyUtils.getDir@H_404_16@(photo.getId@H_404_16@()));//6@H_404_16@
                    photo.setIp@H_404_16@(request.getRemoteAddr@H_404_16@());//7@H_404_16@

                }
            }

            //把相片信息存储到数据库
            PhotoDao dao=new PhotoDao();@H_404_16@
            boo=dao.add@H_404_16@(photo);@H_404_16@
            //如果上面的相片信息保存成功,那么才开始接收图片文件,把它保存到服务器硬盘
            if(boo){
                System.out@H_404_16@.println@H_404_16@(dao);@H_404_16@
                path=path+"/"@H_404_16@+photo.getDir@H_404_16@();@H_404_16@
                File dir=new File(path);@H_404_16@
                if(!dir.exists@H_404_16@()){
                    dir.mkdirs@H_404_16@();@H_404_16@
                }
                String fileName=path+"/"@H_404_16@+photo.getId@H_404_16@()+photo.getExt@H_404_16@();@H_404_16@
                FileUtils.copyInputStreamToFile@H_404_16@(in@H_404_16@,new File(fileName));@H_404_16@
                String strPath = request.getContextPath@H_404_16@()+"/servlets/ShowServlet"@H_404_16@;@H_404_16@
                out@H_404_16@.print@H_404_16@("上传成功!<a href='"@H_404_16@+strPath+"'>浏览相册</a>"@H_404_16@);@H_404_16@
            }else{
                out@H_404_16@.print@H_404_16@("上传失败!"@H_404_16@);@H_404_16@
            }
         } catch (FileUploadException e) {
            throw new RuntimeException("上传失败!"@H_404_16@,e);@H_404_16@
        }finally{
            if(fi!=null){
                fi.delete@H_404_16@();@H_404_16@
            }
        }
        out@H_404_16@.flush@H_404_16@();@H_404_16@
        out@H_404_16@.close@H_404_16@();@H_404_16@
    }

}

ShowServlet 浏览相册的Servlet端

package cn.hncu@H_404_16@.servlets@H_404_16@;@H_404_16@

import java.io@H_404_16@.IOException@H_404_16@;@H_404_16@
import java.io@H_404_16@.PrintWriter@H_404_16@;@H_404_16@
import java.util@H_404_16@.List@H_404_16@;@H_404_16@

import javax.servlet@H_404_16@.ServletException@H_404_16@;@H_404_16@
import javax.servlet@H_404_16@.http@H_404_16@.HttpServlet@H_404_16@;@H_404_16@
import javax.servlet@H_404_16@.http@H_404_16@.HttpServletRequest@H_404_16@;@H_404_16@
import javax.servlet@H_404_16@.http@H_404_16@.HttpServletResponse@H_404_16@;@H_404_16@

import cn.hncu@H_404_16@.dao@H_404_16@.PhotoDao@H_404_16@;@H_404_16@
import cn.hncu@H_404_16@.demain@H_404_16@.PhotoModel@H_404_16@;@H_404_16@

public class ShowServlet extends HttpServlet {

     IOException if an error occurred

    public void doGet(HttpServletRequest request,IOException {
            doPost(request,response);@H_404_16@
    }

    public void doPost(HttpServletRequest request,IOException {

        response.setContentType@H_404_16@("text/html;charset=utf-8"@H_404_16@);@H_404_16@
        request.setCharacterEncoding@H_404_16@("utf-8"@H_404_16@);@H_404_16@
        PrintWriter out@H_404_16@ = response.getWriter@H_404_16@();@H_404_16@
        out@H_404_16@.println@H_404_16@("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"@H_404_16@);@H_404_16@
        out@H_404_16@.println@H_404_16@("<HTML>"@H_404_16@);@H_404_16@
        out@H_404_16@.println@H_404_16@(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"@H_404_16@);@H_404_16@
        out@H_404_16@.println@H_404_16@(" <BODY>"@H_404_16@);@H_404_16@

        String table="<table border='1' width='100%'>"@H_404_16@+
                    "<tr><th>文件名</th><th>上传ip</th><th>上传时间</th><th>图片</th><th>说明</th><th>操作</th></tr>"@H_404_16@
                    ;@H_404_16@
        out@H_404_16@.print@H_404_16@(table);@H_404_16@
        PhotoDao dao=new PhotoDao();@H_404_16@
        List<PhotoModel> list=dao.getAll@H_404_16@();@H_404_16@
        for(PhotoModel p:list){
            out@H_404_16@.print@H_404_16@("<tr>"@H_404_16@);@H_404_16@
            out@H_404_16@.println@H_404_16@("<td>"@H_404_16@+p.getRealName@H_404_16@()+"</td>"@H_404_16@);@H_404_16@
            out@H_404_16@.println@H_404_16@("<td>"@H_404_16@+p.getIp@H_404_16@()+"</td>"@H_404_16@);@H_404_16@
            out@H_404_16@.println@H_404_16@("<td>"@H_404_16@+p.getDateTime@H_404_16@()+"</td>"@H_404_16@);@H_404_16@
            //输出图片
            String path=request.getContextPath@H_404_16@()+"/photos/"@H_404_16@+p.getDir@H_404_16@()+"/"@H_404_16@+p.getId@H_404_16@()+p.getExt@H_404_16@();@H_404_16@
            out@H_404_16@.println@H_404_16@("<td><a href='"@H_404_16@+path+"'><img src='"@H_404_16@+path+"' width='200' height='200'></img></a></td>"@H_404_16@);@H_404_16@
            String op="<a href='"@H_404_16@+request.getContextPath@H_404_16@()+"/servlets/DelServlet?id="@H_404_16@+p.getId@H_404_16@()+"'>删除</a>&nbsp;"@H_404_16@;@H_404_16@
            out@H_404_16@.println@H_404_16@("<td>"@H_404_16@+p.getDesc@H_404_16@()+"</td>"@H_404_16@);@H_404_16@
            op+="<a href='"@H_404_16@+request.getContextPath@H_404_16@()+"/servlets/DownServlet?id="@H_404_16@+p.getId@H_404_16@()+"'>下载</a>"@H_404_16@;@H_404_16@
            out@H_404_16@.println@H_404_16@("<td>"@H_404_16@+op+"</td>"@H_404_16@);@H_404_16@
            out@H_404_16@.print@H_404_16@("</tr>"@H_404_16@);@H_404_16@
        }

        out@H_404_16@.println@H_404_16@("</table>"@H_404_16@);@H_404_16@
        out@H_404_16@.println@H_404_16@(" </BODY>"@H_404_16@);@H_404_16@
        out@H_404_16@.println@H_404_16@("</HTML>"@H_404_16@);@H_404_16@
        out@H_404_16@.flush@H_404_16@();@H_404_16@
        out@H_404_16@.close@H_404_16@();@H_404_16@
    }

}

DownServlet 下载的服务器代码

package cn.hncu@H_404_16@.servlets@H_404_16@;@H_404_16@

import java.io@H_404_16@.FileInputStream@H_404_16@;@H_404_16@
import java.io@H_404_16@.FileOutputStream@H_404_16@;@H_404_16@
import java.io@H_404_16@.IOException@H_404_16@;@H_404_16@
import java.io@H_404_16@.InputStream@H_404_16@;@H_404_16@
import java.io@H_404_16@.OutputStream@H_404_16@;@H_404_16@
import java.io@H_404_16@.PrintWriter@H_404_16@;@H_404_16@
import java.net@H_404_16@.URLEncoder@H_404_16@;@H_404_16@

import javax.servlet@H_404_16@.ServletException@H_404_16@;@H_404_16@
import javax.servlet@H_404_16@.http@H_404_16@.HttpServlet@H_404_16@;@H_404_16@
import javax.servlet@H_404_16@.http@H_404_16@.HttpServletRequest@H_404_16@;@H_404_16@
import javax.servlet@H_404_16@.http@H_404_16@.HttpServletResponse@H_404_16@;@H_404_16@

import cn.hncu@H_404_16@.dao@H_404_16@.PhotoDao@H_404_16@;@H_404_16@
import cn.hncu@H_404_16@.demain@H_404_16@.PhotoModel@H_404_16@;@H_404_16@

public class DownServlet extends HttpServlet {

    public void doGet(HttpServletRequest request,IOException {
         doPost(request,IOException {
        String id=request.getParameter@H_404_16@("id"@H_404_16@);@H_404_16@
        response.setContentType@H_404_16@("application/force-download"@H_404_16@);@H_404_16@
        PhotoModel p=new PhotoDao().getSingleById@H_404_16@(id);@H_404_16@
        if(p!=null){

            String realName=p.getRealName@H_404_16@();@H_404_16@
            realName=new String(realName.getBytes@H_404_16@("iso8859-1"@H_404_16@),"utf-8"@H_404_16@);@H_404_16@
            response.setHeader@H_404_16@("content-Disposition"@H_404_16@,"attachment;filename=\""@H_404_16@+realName+"\""@H_404_16@);@H_404_16@
            String relpath=getServletContext().getRealPath@H_404_16@("/photos/"@H_404_16@+p.getDir@H_404_16@()+"/"@H_404_16@+p.getId@H_404_16@()+p.getExt@H_404_16@());@H_404_16@
            InputStream in@H_404_16@=new FileInputStream(relpath);@H_404_16@
            OutputStream out@H_404_16@=response.getOutputStream@H_404_16@();@H_404_16@
            System.out@H_404_16@.println@H_404_16@(relpath);@H_404_16@
            byte buf[]=new byte[1024@H_404_16@];@H_404_16@
            int len=0@H_404_16@;@H_404_16@
            while ((len=in@H_404_16@.read@H_404_16@(buf))!=-1@H_404_16@){
                out@H_404_16@.write@H_404_16@(buf,0@H_404_16@,len);@H_404_16@
            }
            out@H_404_16@.close@H_404_16@();@H_404_16@
        }else{
            response.setContentType@H_404_16@("text/html;charset=utf-8"@H_404_16@);@H_404_16@
            response.getWriter@H_404_16@().println@H_404_16@("该文件已经被删除!"@H_404_16@);@H_404_16@
        }
    }

}

Delservlet 删除操作的服务器

package cn.hncu@H_404_16@.servlets@H_404_16@;@H_404_16@

import java.io@H_404_16@.File@H_404_16@;@H_404_16@
import java.io@H_404_16@.FileInputStream@H_404_16@;@H_404_16@
import java.io@H_404_16@.IOException@H_404_16@;@H_404_16@
import java.io@H_404_16@.InputStream@H_404_16@;@H_404_16@
import java.io@H_404_16@.OutputStream@H_404_16@;@H_404_16@
import java.io@H_404_16@.PrintWriter@H_404_16@;@H_404_16@

import javax.servlet@H_404_16@.ServletException@H_404_16@;@H_404_16@
import javax.servlet@H_404_16@.http@H_404_16@.HttpServlet@H_404_16@;@H_404_16@
import javax.servlet@H_404_16@.http@H_404_16@.HttpServletRequest@H_404_16@;@H_404_16@
import javax.servlet@H_404_16@.http@H_404_16@.HttpServletResponse@H_404_16@;@H_404_16@

import cn.hncu@H_404_16@.dao@H_404_16@.PhotoDao@H_404_16@;@H_404_16@
import cn.hncu@H_404_16@.demain@H_404_16@.PhotoModel@H_404_16@;@H_404_16@

public class DelServlet extends HttpServlet {


    public void doGet(HttpServletRequest request,IOException {

        request.setCharacterEncoding@H_404_16@("utf-8"@H_404_16@);@H_404_16@
        response.setContentType@H_404_16@("text/html;charset=utf-8"@H_404_16@);@H_404_16@
        PrintWriter out@H_404_16@=response.getWriter@H_404_16@();@H_404_16@
        String id=request.getParameter@H_404_16@("id"@H_404_16@);@H_404_16@
        PhotoModel p=new PhotoDao().getSingleById@H_404_16@(id);@H_404_16@
        if(p!=null){
            if(!p.getIp@H_404_16@().equals@H_404_16@(request.getRemoteAddr@H_404_16@())){
                out@H_404_16@.println@H_404_16@("你无权进行删除!"@H_404_16@);@H_404_16@
                return;@H_404_16@
            }
            //※※※※以下部分课后补敲的!!!!
            //1@H_404_16@删除数据库中的信息
            PhotoDao dao=new PhotoDao();@H_404_16@
            boolean boo=dao.del@H_404_16@(id);@H_404_16@
            //2@H_404_16@把服务器硬盘中的文件删除
            if(boo){
            String fileName="photos/"@H_404_16@+p.getDir@H_404_16@()+"/"@H_404_16@+p.getId@H_404_16@()+p.getExt@H_404_16@();@H_404_16@
                String pathFileName = getServletContext().getRealPath@H_404_16@(fileName);@H_404_16@
                File f=new File(pathFileName);@H_404_16@
                if(f.exists@H_404_16@()){
                    f.delete@H_404_16@();@H_404_16@
                }
                String strPath = request.getContextPath@H_404_16@()+"/servlets/ShowServlet"@H_404_16@;@H_404_16@
                out@H_404_16@.println@H_404_16@("相片删除成功!<a href='"@H_404_16@+strPath+"'>浏览相册</a>"@H_404_16@);@H_404_16@
            }else{
                out@H_404_16@.println@H_404_16@("相片删除失败!"@H_404_16@);@H_404_16@
            }
        }else{
            response.setContentType@H_404_16@("text/html;charset=utf-8"@H_404_16@);@H_404_16@
            response.getWriter@H_404_16@().println@H_404_16@("该文件不存在!"@H_404_16@);@H_404_16@
        }
    }
}

猜你在找的XML相关文章