最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

精致小巧的java相冊(cè)制作方法

 更新時(shí)間:2016年10月11日 09:38:18   作者:xanlv  
這篇文章主要為大家詳細(xì)介紹了精致小巧的java相冊(cè)制作方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java相冊(cè)制作方法,供大家參考,具體內(nèi)容如下

這里寫(xiě)圖片描述

這里寫(xiě)圖片描述 

注:
1)html上的圖片是靜態(tài)指定的。當(dāng)更新了新的圖片時(shí)必須手工更新。所以使用Servlet讀取本地images中的所有圖片,動(dòng)態(tài)顯示給用戶(hù)。

2)如果存在中文名的圖片,由于get方式無(wú)法直接傳遞中文,會(huì)導(dǎo)致出錯(cuò)。

主頁(yè)面–index.jsp

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <title>小小相冊(cè)</title>
 </head>

 <body>
 <!-- http://localhost:8080/photosWeb/ -->
  <h2>小小相冊(cè)</h2>
  <a href="jsps/upload.jsp">上傳相片</a>
  <a href="<%=request.getContextPath() %>/servlet/showAllImg">瀏覽相片</a>
 </body>
</html>

頁(yè)面顯示:

這里寫(xiě)圖片描述

上傳圖片功能:

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <title>小小相冊(cè)</title>
 </head>

 <body>
  <h2>小小相冊(cè)</h2>
  <form action="<%=request.getContextPath() %>/servlet/uploadServlet" method="post" enctype="multipart/form-data">
    照片:<input type="file" name="file"/><br/>
    說(shuō)明:<input type="text" name="desc"/><br/>
    <input type="submit" value="上傳"/>  
  </form>
 </body>
</html>

package cn.hncu.servlet;

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

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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

import cn.hncu.dao.PhotoDaoImpl;
import cn.hncu.domain.PhotoModel;
import cn.hncu.utils.MyUtils;

public class UploadServlet extends HttpServlet {


  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
    out.println("<HTML>");
    out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
    out.println(" <BODY>");
    out.print("錯(cuò)誤信息:提交方式錯(cuò)誤...不支持Get方式上傳照片");
    out.println(" </BODY>");
    out.println("</HTML>");
    out.flush();
    out.close();
  }

  public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    request.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");
    PrintWriter out = response.getWriter();
    out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
    out.println("<HTML>");
    out.println(" <HEAD><TITLE>上傳照片頁(yè)面</TITLE></HEAD>");
    out.println(" <BODY>");
    //從上傳表單提取信息:一,封裝成photo值對(duì)象,調(diào)用dao層存儲(chǔ)到后臺(tái)
    //          二,把上傳的照片存儲(chǔ)到服務(wù)器硬盤(pán)
    //數(shù)據(jù)庫(kù):存儲(chǔ)照片的存儲(chǔ)情況的信息,,,真正的文件存儲(chǔ)到硬盤(pán)
    DiskFileItemFactory dfi=new DiskFileItemFactory();
    File file=new File("d:/a");
    if(file.exists()){
      file.mkdirs();
    }
    dfi.setRepository(file);
    ServletFileUpload upload=new ServletFileUpload(dfi);
    upload.setSizeMax(1024*1024*8);
    upload.setHeaderEncoding("utf-8");//==>request.setCharacterEncoding("utf-8");
    try {
      List<FileItem> list=upload.parseRequest(request);
      PhotoModel pm=new PhotoModel();
      InputStream in=null;
      for(FileItem fI:list){
        if(fI.isFormField()){//這個(gè)不會(huì)有臨時(shí)文件
          String desc=fI.getString("utf-8");
          pm.setDesc(desc);
        }else{
          in=fI.getInputStream();
//         String filename=fI.getFieldName();
//         System.out.println("getFieldName:"+filename);
          String fileName=fI.getName();
//         System.out.println("getName:"+fileName);//測(cè)試:C:\Users\adl1\Pictures\Saved Pictures\111.jpg?
          //衛(wèi)條件
          if(fileName==null||fileName.trim().equals("")){
            out.println("沒(méi)有選擇文件,,,請(qǐng)必須選擇一個(gè)文件...<br/>");
            String strPath2=request.getContextPath()+"/jsps/upload.jsp";
            out.println("<a href=\""+strPath2+"\">返回上傳頁(yè)面</a>");
            return;
          }
          pm.setDt(MyUtils.getCurrentDataime());
          String realName=fileName.substring(fileName.lastIndexOf("\\"));//"\112.jpg"
          System.out.println(realName.substring(1, realName.length()));
          pm.setRealName(realName.substring(1, realName.length()));//把realName的"\"去掉
          //ext擴(kuò)展名
          String ext=fileName.substring(fileName.lastIndexOf("."));
          pm.setExt(ext);
          String id=MyUtils.getUUID();
          pm.setId(id);
          pm.setIp(request.getRemoteAddr());
          pm.setDir(MyUtils.getDir(id));
        }
      }
      //完成photo值對(duì)象的封裝,調(diào)用dao進(jìn)行存儲(chǔ)
      boolean boo=new PhotoDaoImpl().sava(pm);
      if(boo){
        //完成數(shù)據(jù)庫(kù)的存儲(chǔ),接下來(lái)是服務(wù)器硬盤(pán)的存儲(chǔ)
        //把照片存儲(chǔ)到項(xiàng)目根目錄下的photos文件夾中存儲(chǔ)(以打散方式存儲(chǔ))
        String path="photos/"+pm.getDir();

//       System.out.println("path:"+path);//測(cè)試:photos/9/0
        String filePath=getServletContext().getRealPath(path);

//       System.out.println("filePath:"+filePath);//測(cè)試:D:\apache-tomcat-7.0.30\webapps\photosWeb\photos\9\0
        File dir=new File(filePath);
        if(!dir.exists()){
          dir.mkdirs();
        }
        FileUtils.copyInputStreamToFile(in, new File(filePath+"/"+pm.getId()+pm.getExt()));

//       //如果硬盤(pán)保存成功就跳轉(zhuǎn)到主頁(yè)面--轉(zhuǎn)發(fā)
////      RequestDispatcher rd=request.getRequestDispatcher(getServletContext().getContextPath()+"/index.jsp");//"/photosWeb/photosWeb/index.jsp"
//       RequestDispatcher rd=request.getRequestDispatcher("/index.jsp");//"/photosWeb/index.jsp"g
//       //java代碼塊和web.xml中url的開(kāi)始"/"代表項(xiàng)目根目錄
//       rd.forward(request, response);
        //這里不能使用轉(zhuǎn)發(fā),具體重定向和轉(zhuǎn)發(fā)區(qū)別:http://blog.csdn.net/xanlv/article/details/52701085


        //重定向
        response.sendRedirect(getServletContext().getContextPath()+"/index.jsp");
      }else{
        //數(shù)據(jù)庫(kù)保存失敗--留在上傳頁(yè)面
        RequestDispatcher rd=request.getRequestDispatcher("/jsps/upload..jsp");//"/photosWeb/index.jsp"
        rd.forward(request, response);
      }
    } catch (FileUploadException e) {
      throw new RuntimeException("上傳失敗", e);
    }finally{//清臨時(shí)文件
      File f=new File("d:/a");
      File fs[]=f.listFiles();
      for(File ff:fs){
        ff.delete();
      }
    }
    out.println(" </BODY>");
    out.println("</HTML>");
    out.flush();
    out.close();
  }

}

頁(yè)面顯示效果:

這里寫(xiě)圖片描述

瀏覽圖片功能:

package cn.hncu.servlet;

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

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

import cn.hncu.dao.PhotoDaoImpl;
import cn.hncu.domain.PhotoModel;

public class ShowAllImgServlet extends HttpServlet {

  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    response.setContentType("text/html;charset=utf-8");
    PrintWriter out = response.getWriter();
    out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
    out.println("<HTML>");
    out.println(" <HEAD><TITLE>相冊(cè)瀏覽</TITLE></HEAD>");
    out.println(" <BODY>");
    String strPath=request.getContextPath()+"/jsps/upload.jsp";
    out.println("<a href=\""+strPath+"\">返回上傳頁(yè)面</a>");
//String table="<table border='1px' width='100%' cellspacing='0' align='center'>"+//這種方式不可以設(shè)置水平居中
    String table="<table border='1px' width='100%' cellspacing='0' style='text-align: center;'>"+
        "<tr><th>文件名</th><th>上傳日期時(shí)間</th><th>相片</th><th>相片說(shuō)明</th><th>操作</th></tr>";
    out.println(table);
    //從dao層把所有的照片信息讀取出來(lái)發(fā)送到前端頁(yè)面
    List<PhotoModel> list=new PhotoDaoImpl().getAllPhotos();
    for(PhotoModel pm:list){
      out.println("<tr>");
      out.println("<td width=80>"+pm.getRealName());
      out.println("</td>");
      out.println("<td width=120>"+pm.getDt());
      out.println("</td>");
      String path=request.getContextPath()+"/photos/"+pm.getDir()+"/"+pm.getId()+pm.getExt();
//System.out.println(path);//"/photosWeb/photos/d/7/e78e18352b42410f85dbd8df834bd718.jpg"
      //點(diǎn)擊圖片可以查看大圖
      out.println("<td width=100><a href='"+path+"'><img width=100 height=100 src='"+path+"'/></a>");
      out.println("</td>");
      out.println("<td width=200>"+pm.getDesc());
      out.println("</td>");
      out.println("<td width=80><a href='"+getServletContext().getContextPath()+"/servlet/delPhoto?id="+pm.getId()+"'>刪除圖片</a>");
//out.println("<a href='<%=request.getContextPath()%>/servlet/down?id="+pm.getId()+"'>下載圖片</a></td>");
      out.println("<br/><a href='"+getServletContext().getContextPath()+"/servlet/down?id="+pm.getId()+"'>下載圖片</a></td>");

      out.println("</tr>");

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

  public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

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

    out.print("不支持Post方式。。。");
    out.println(" </BODY>");
    out.println("</HTML>");
    out.flush();
    out.close();
  }

}

頁(yè)面顯示效果:

刪除功能:

package cn.hncu.servlet;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;

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

import cn.hncu.dao.PhotoDaoImpl;
import cn.hncu.domain.PhotoModel;

public class DelPhotoServlet extends HttpServlet {

  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    response.setContentType("text/html;charset=utf-8");
    PrintWriter out = response.getWriter();
    out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
    out.println("<HTML>");
    out.println(" <HEAD><TITLE>刪除照片頁(yè)面</TITLE></HEAD>");
    out.println(" <BODY>");
    String id=request.getParameter("id");
    String ip=request.getRemoteAddr();
    PhotoDaoImpl dao=new PhotoDaoImpl();
    PhotoModel pm=dao.getSingleById(id);
    if(pm!=null){
      if(!pm.getIp().equals(ip)){
        out.println("您沒(méi)有該圖片的權(quán)限去刪除...");
        String strPath=request.getContextPath()+"/servlet/showAllImg";
        out.println("<br/><a href=\""+strPath+"\">返回繼續(xù)瀏覽</a>");

        return ;
      }
      //刪除包含兩部分工作:清除數(shù)據(jù)庫(kù)中的信息 和 刪除服務(wù)器硬盤(pán)中的圖片文件
      //1清除數(shù)據(jù)庫(kù)中的信息
      boolean boo = dao.del(id);
      //2刪除服務(wù)器硬盤(pán)中的圖片文件
      if(boo){
        String path="photos/"+pm.getDir()+"/"+pm.getId()+pm.getExt();
        String filePath=getServletContext().getRealPath(path);
        File f=new File(filePath);
        if(f.exists()){
          f.delete();
        }
        String strPath=request.getContextPath()+"/servlet/showAllImg";
//       System.out.println(strPath);///photosWeb/servlet/showPhotos
        out.println("刪除成功...<br/><a href=\""+strPath+"\">返回瀏覽</a>");
      }else{
        out.println("刪除數(shù)據(jù)庫(kù)信息失敗");
      }
    }else{
      out.println("文件不存在...");
      String strPath=request.getContextPath()+"/servlet/showAllImg";
      out.println("<br/><a href=\""+strPath+"\">返回繼續(xù)瀏覽</a>");

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

  public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
    out.println("<HTML>");
    out.println(" <HEAD><TITLE>刪除照片頁(yè)面</TITLE></HEAD>");
    out.println(" <BODY>");
    out.print("不支持POST方式...");
    out.println(" </BODY>");
    out.println("</HTML>");
    out.flush();
    out.close();
  }

}

頁(yè)面顯示:

這里寫(xiě)圖片描述

這里寫(xiě)圖片描述

這里寫(xiě)圖片描述

下載功能:
1.在HTML頁(yè)面上使用超連接指向要下載的文件(不安全容易被盜鏈)。
問(wèn)題:
如何確定本地資源?
ServletContext – 代表一個(gè)web項(xiàng)目。一個(gè)web項(xiàng)目只有一個(gè)ServletContext對(duì)像。
getRealPath(“/”); //d:/prm/tom/web/

需求分析:
在實(shí)際的開(kāi)發(fā)中,下載哪一個(gè)文件,都是由用戶(hù)動(dòng)態(tài)選擇的。
如,在我們項(xiàng)目images目錄下,存在著很多圖片文件。用戶(hù)在頁(yè)面上顯示所有圖片,用戶(hù)可以點(diǎn)下載連接下載喜歡的圖片。

詳細(xì)設(shè)計(jì):
使用靜態(tài)網(wǎng)頁(yè)顯示所有圖片。給每一個(gè)圖片一個(gè)下以下載的超連接。
在超連接后面?zhèn)鬟f要下載的圖片id。
在serivice中動(dòng)態(tài)接收?qǐng)D片名。完成下載 。

package cn.hncu.servlet;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.URLEncoder;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.FileUtils;

import cn.hncu.dao.PhotoDaoImpl;
import cn.hncu.domain.PhotoModel;

public class DownServlet extends HttpServlet {


  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    //獲取被下載圖片的信息
    tring id=request.getParameter("id");
    PhotoModel pm=new PhotoDaoImpl().getSingleById(id);
    if(pm==null){
      response.setContentType("text/html;charset=utf-8");
      PrintWriter out = response.getWriter();
      out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
      out.println("<HTML>");
      out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
      out.println(" <BODY>");
      response.getWriter().println("alert('該文本已不存在...')");
      out.println(" </BODY>");
      out.println("</HTML>");
      out.flush();
      out.close();
      //getServletContext().getContextPath()
      RequestDispatcher rd=request.getRequestDispatcher("/servlet/down");//"/photosWeb/index.jsp"
      //java代碼塊和web.xml中url的開(kāi)始"/"代表項(xiàng)目根目錄
      rd.forward(request, response);
    }else{

      //真正下載: 把服務(wù)器硬盤(pán)的照片文件讀取出來(lái)發(fā)送給客戶(hù)端(設(shè)置響應(yīng)頭)
      //獲取真實(shí)的文件
      String realName=pm.getRealName();
      realName=URLEncoder.encode(realName, "utf-8");//如果是中文名必須轉(zhuǎn)碼,防止文件名中文亂碼
//   InputStream in=DownServlet.class.getClassLoader().getResourceAsStream(realName);
      //設(shè)置顯示類(lèi)型為下載 
      response.setContentType("application/force-download");
      //設(shè)置響應(yīng)頭
      response.setHeader("content-Disposition", "attachment;filename=\""+realName+"\"");

//   String path=request.getContextPath()+"/photos/"+pm.getDir()+"/"+pm.getId()+pm.getExt();
      String path="photos/"+pm.getDir()+"/"+pm.getId()+pm.getExt();
      String filePath=getServletContext().getRealPath(path);
      FileUtils.copyInputStreamToFile(request.getInputStream(), new File(filePath));
      InputStream in=new FileInputStream(filePath);
      OutputStream o=response.getOutputStream();
      byte b[]=new byte[1024];
      int len=0;
      while((len=in.read(b))!=-1){
        o.write(b, 0, len);
      }
      o.close();

    }
  }

  public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
    out.println("<HTML>");
    out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
    out.println(" <BODY>");
    out.print(" 不支持");
    out.println(" </BODY>");
    out.println("</HTML>");
    out.flush();
    out.close();
  }

}

頁(yè)面顯示效果:

配置文件web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
  xmlns="http://java.sun.com/xml/ns/javaee" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
 <display-name></display-name>
 <servlet>
  <servlet-name>UploadServlet</servlet-name>
  <servlet-class>cn.hncu.servlet.UploadServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>ShowAllImgServlet</servlet-name>
  <servlet-class>cn.hncu.servlet.ShowAllImgServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>DownServlet</servlet-name>
  <servlet-class>cn.hncu.servlet.DownServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>DelPhotoServlet</servlet-name>
  <servlet-class>cn.hncu.servlet.DelPhotoServlet</servlet-class>
 </servlet>



 <servlet-mapping>
  <servlet-name>UploadServlet</servlet-name>
  <url-pattern>/servlet/uploadServlet</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>ShowAllImgServlet</servlet-name>
  <url-pattern>/servlet/showAllImg</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>DownServlet</servlet-name>
  <url-pattern>/servlet/down</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>DelPhotoServlet</servlet-name>
  <url-pattern>/servlet/delPhoto</url-pattern>
 </servlet-mapping>  
 <welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
</web-app>

數(shù)據(jù)庫(kù):photos.xml

<?xml version="1.0" encoding="UTF-8"?>
<photos>
  <!-- 數(shù)據(jù)庫(kù)設(shè)計(jì)
    <photo id="uuid" realName="真實(shí)文件名.jpg" 
    dT="2016-10-03 19:51:31" ext=".jpg" dir="a/5"
    ip="192.168.12.12">
    <desc>照片說(shuō)明信息</desc>
    </photo>
   -->
</photos>

值對(duì)象:PhotoModel.java

package cn.hncu.domain;

public class PhotoModel {

  //photo值對(duì)象
  private String id;//UUID
  private String realName;//照片真實(shí)文件名
  private String ext;//擴(kuò)展名
  private String dir;//文件打撒后存儲(chǔ)的目錄
  private String dt;//上傳日期時(shí)間
  private String ip;//上傳客戶(hù)端的ip地址
  private String desc;//照片說(shuō)明
  public String getId() {
    return id;
  }
  public void setId(String id) {
    this.id = id;
  }
  public String getRealName() {
    return realName;
  }
  public void setRealName(String realName) {
    this.realName = realName;
  }
  public String getExt() {
    return ext;
  }
  public void setExt(String ext) {
    this.ext = ext;
  }
  public String getDir() {
    return dir;
  }
  public void setDir(String dir) {
    this.dir = dir;
  }
  public String getDt() {
    return dt;
  }
  public void setDt(String dt) {
    this.dt = dt;
  }
  public String getIp() {
    return ip;
  }
  public void setIp(String ip) {
    this.ip = ip;
  }
  public String Dreturn desc;
  }
  public void setDesc(String desc) {
    this.desc = desc;
  }

}

dao層:這里簡(jiǎn)寫(xiě)了,只寫(xiě)了實(shí)現(xiàn)類(lèi)PhotoDaoImpl.java

package cn.hncu.dao;

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

import org.dom4j.Document;
import org.dom4j.Element;

import cn.hncu.domain.PhotoModel;
import cn.hncu.utils.DomFactory;

public class PhotoDaoImpl {

  public boolean sava(PhotoModel pm){
    Document dom=DomFactory.getDom();
    Element root=dom.getRootElement();
    Element e=root.addElement("photo");
    e.addAttribute("id", pm.getId());
    e.addAttribute("dir", pm.getDir());
    e.addAttribute("dt", pm.getDt());
    e.addAttribute("ext", pm.getExt());
    e.addAttribute("ip", pm.getIp());
    e.addAttribute("realName", pm.getRealName());
    e.addElement("desc").setText(pm.getDesc());
    boolean b=DomFactory.save();
    if(b){
      return true;
    }
    return false;
  }
  public List<PhotoModel> getAllPhotos(){
    List<PhotoModel> li=new ArrayList<PhotoModel>();

    Document dom=DomFactory.getDom();
    Element e=dom.getRootElement();
    Iterator<Element> it=e.elementIterator();
    while(it.hasNext()){
      Element ie=it.next();
      PhotoModel pm=new PhotoModel();
      pm.setId(ie.attributeValue("id"));
      pm.setDir(ie.attributeValue("dir"));
      pm.setDt(ie.attributeValue("dt"));
      pm.setExt(ie.attributeValue("ext"));
      pm.setIp(ie.attributeValue("ip"));
      pm.setRealName(ie.attributeValue("realName"));

      pm.setDesc(ie.elementText("desc"));
      li.add(pm);
    }
    return li;


  }
  public PhotoModel getSingleById(String id){
    List<PhotoModel> li=getAllPhotos();
    PhotoModel pm=new PhotoModel();
    for(PhotoModel p:li){
      if(p.getId().equals(id)){
        return p;
      }
    }
    return null;


  }
  public boolean del(String id) {
    Document dom=DomFactory.getDom();
    Element e=(Element) dom.selectSingleNode("http://photo[@id='"+id+"']");
    return e.getParent().remove(e);
  }
}

工具類(lèi):

1.

package cn.hncu.utils;

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

public class MyUtils {

  private MyUtils() {
  }
  public static String getUUID(){
    return UUID.randomUUID().toString().replace("-", "");
  }
  private static SimpleDateFormat sdf=new SimpleDateFormat("yy-MM-dd HH:mm:ss");
  public static String getCurrentDataime(){
    return sdf.format(new Date());
  }
  public static String getDir(String uuid){
    String dir1=Integer.toHexString(uuid.hashCode()&0xf);
    String dir2=Integer.toHexString((uuid.hashCode()&0xf0)>>4);

    return dir1+"/"+dir2;
  }
}

2.

package cn.hncu.utils;

import java.io.FileOutputStream;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class DomFactory {
  private static Document dom;
  private static String fileName;
  static{
    try {
      SAXReader r=new SAXReader();
      //獲取src下的資源文件
      fileName=DomFactory.class.getClassLoader().getResource("photos.xml").getPath();
      System.out.println("users.xml的路徑:"+fileName);//"/D:/apache-tomcat-7.0.30/webapps/photosWeb/WEB-INF/classes/photos.xml"
      //注意:獲取tomcat中當(dāng)前項(xiàng)目classpath下的資源方式
      dom=r.read(fileName);
    } catch (DocumentException e) {
      e.printStackTrace();
    }
  }
  public static Document getDom(){
    return dom;
  }
  public static boolean save(){
    XMLWriter w;
    try {
      w = new XMLWriter(new FileOutputStream(fileName));
      w.write(dom);
      w.close();
      return true;
    } catch (Exception e) {
      return false;
    }
  }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 細(xì)數(shù)Java接口的概念、分類(lèi)及與抽象類(lèi)的區(qū)別

    細(xì)數(shù)Java接口的概念、分類(lèi)及與抽象類(lèi)的區(qū)別

    下面小編就為大家?guī)?lái)一篇細(xì)數(shù)Java接口的概念、分類(lèi)及與抽象類(lèi)的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11
  • Java 十進(jìn)制轉(zhuǎn)二、八、十六進(jìn)制的字符串

    Java 十進(jìn)制轉(zhuǎn)二、八、十六進(jìn)制的字符串

    本文主要介紹了十進(jìn)制轉(zhuǎn)二進(jìn)制;十進(jìn)制轉(zhuǎn)八進(jìn)制;十進(jìn)制轉(zhuǎn)十六進(jìn)制的方法,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02
  • Java由淺入深通關(guān)抽象類(lèi)與接口下

    Java由淺入深通關(guān)抽象類(lèi)與接口下

    在類(lèi)中沒(méi)有包含足夠的信息來(lái)描繪一個(gè)具體的對(duì)象,這樣的類(lèi)稱(chēng)為抽象類(lèi),接口是Java中最重要的概念之一,它可以被理解為一種特殊的類(lèi),不同的是接口的成員沒(méi)有執(zhí)行體,是由全局常量和公共的抽象方法所組成,本文給大家介紹Java抽象類(lèi)和接口,感興趣的朋友一起看看吧
    2022-04-04
  • Java定義棧結(jié)構(gòu),并實(shí)現(xiàn)入棧、出棧操作完整示例

    Java定義棧結(jié)構(gòu),并實(shí)現(xiàn)入棧、出棧操作完整示例

    這篇文章主要介紹了Java定義棧結(jié)構(gòu),并實(shí)現(xiàn)入棧、出棧操作,結(jié)合完整實(shí)例形式分析了java數(shù)據(jù)結(jié)構(gòu)中棧的定義、以及入棧、出棧、棧是否為空判斷、棧大小計(jì)算、打印棧元素等相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02
  • Java使用Validation自定義Double類(lèi)型屬性校驗(yàn)

    Java使用Validation自定義Double類(lèi)型屬性校驗(yàn)

    這篇文章主要為大家詳細(xì)介紹了Java如何使用Validation自定義Double類(lèi)型屬性校驗(yàn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2024-11-11
  • 使用@Autowired注解警告Field injection is not recommended的解決

    使用@Autowired注解警告Field injection is not recommended的解決

    這篇文章主要介紹了使用@Autowired注解警告Field injection is not recommended的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • SpringBoot實(shí)現(xiàn)根據(jù)手機(jī)號(hào)獲取歸屬地

    SpringBoot實(shí)現(xiàn)根據(jù)手機(jī)號(hào)獲取歸屬地

    這篇文章主要為大家詳細(xì)介紹了SpringBoot如何實(shí)現(xiàn)根據(jù)手機(jī)號(hào)獲取歸屬地,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • 已有的springcloud+mybatis項(xiàng)目升級(jí)為mybatis-plus的方法

    已有的springcloud+mybatis項(xiàng)目升級(jí)為mybatis-plus的方法

    這篇文章主要介紹了已有的springcloud+mybatis項(xiàng)目升級(jí)為mybatis-plus,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • java創(chuàng)建子類(lèi)對(duì)象設(shè)置并調(diào)用父類(lèi)的變量操作

    java創(chuàng)建子類(lèi)對(duì)象設(shè)置并調(diào)用父類(lèi)的變量操作

    這篇文章主要介紹了java創(chuàng)建子類(lèi)對(duì)象設(shè)置并調(diào)用父類(lèi)的變量操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • Java框架學(xué)習(xí)Struts2復(fù)選框?qū)嵗a

    Java框架學(xué)習(xí)Struts2復(fù)選框?qū)嵗a

    這篇文章主要介紹了Java框架學(xué)習(xí)Struts2復(fù)選框?qū)嵗a,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02

最新評(píng)論

天长市| 佛山市| 肃北| 平阴县| 肥乡县| 夏邑县| 呼伦贝尔市| 云南省| 耿马| 贡觉县| 桦甸市| 桐城市| 乌兰浩特市| 仙居县| 杭锦后旗| 延安市| 苍梧县| 铜鼓县| 友谊县| 城步| 墨竹工卡县| 盐边县| 廊坊市| 绥德县| 龙门县| 白城市| 商洛市| 海林市| 镇安县| 土默特右旗| 郴州市| 土默特左旗| 罗城| 连州市| 五常市| 旌德县| 苍溪县| 弥勒县| 筠连县| 金堂县| 邵阳县|