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

注:
1)html上的圖片是靜態(tài)指定的。當(dāng)更新了新的圖片時(shí)必須手工更新。所以使用Servlet讀取本地images中的所有圖片,動(dòng)態(tài)顯示給用戶。
2)如果存在中文名的圖片,由于get方式無法直接傳遞中文,會(huì)導(dǎo)致出錯(cuò)。
主頁面–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>
頁面顯示:

上傳圖片功能:
<%@ 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/>
說明:<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>上傳照片頁面</TITLE></HEAD>");
out.println(" <BODY>");
//從上傳表單提取信息:一,封裝成photo值對(duì)象,調(diào)用dao層存儲(chǔ)到后臺(tái)
// 二,把上傳的照片存儲(chǔ)到服務(wù)器硬盤
//數(shù)據(jù)庫:存儲(chǔ)照片的存儲(chǔ)情況的信息,,,真正的文件存儲(chǔ)到硬盤
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("沒有選擇文件,,,請(qǐng)必須選擇一個(gè)文件...<br/>");
String strPath2=request.getContextPath()+"/jsps/upload.jsp";
out.println("<a href=\""+strPath2+"\">返回上傳頁面</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ù)庫的存儲(chǔ),接下來是服務(wù)器硬盤的存儲(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()));
// //如果硬盤保存成功就跳轉(zhuǎn)到主頁面--轉(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的開始"/"代表項(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ù)庫保存失敗--留在上傳頁面
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();
}
}
頁面顯示效果:

瀏覽圖片功能:
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+"\">返回上傳頁面</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>相片說明</th><th>操作</th></tr>";
out.println(table);
//從dao層把所有的照片信息讀取出來發(fā)送到前端頁面
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();
}
}
頁面顯示效果:

刪除功能:
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>刪除照片頁面</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("您沒有該圖片的權(quán)限去刪除...");
String strPath=request.getContextPath()+"/servlet/showAllImg";
out.println("<br/><a href=\""+strPath+"\">返回繼續(xù)瀏覽</a>");
return ;
}
//刪除包含兩部分工作:清除數(shù)據(jù)庫中的信息 和 刪除服務(wù)器硬盤中的圖片文件
//1清除數(shù)據(jù)庫中的信息
boolean boo = dao.del(id);
//2刪除服務(wù)器硬盤中的圖片文件
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ù)庫信息失敗");
}
}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>刪除照片頁面</TITLE></HEAD>");
out.println(" <BODY>");
out.print("不支持POST方式...");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
}
頁面顯示:



下載功能:
1.在HTML頁面上使用超連接指向要下載的文件(不安全容易被盜鏈)。
問題:
如何確定本地資源?
ServletContext – 代表一個(gè)web項(xiàng)目。一個(gè)web項(xiàng)目只有一個(gè)ServletContext對(duì)像。
getRealPath(“/”); //d:/prm/tom/web/
需求分析:
在實(shí)際的開發(fā)中,下載哪一個(gè)文件,都是由用戶動(dòng)態(tài)選擇的。
如,在我們項(xiàng)目images目錄下,存在著很多圖片文件。用戶在頁面上顯示所有圖片,用戶可以點(diǎn)下載連接下載喜歡的圖片。
詳細(xì)設(shè)計(jì):
使用靜態(tài)網(wǎng)頁顯示所有圖片。給每一個(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的開始"/"代表項(xiàng)目根目錄
rd.forward(request, response);
}else{
//真正下載: 把服務(wù)器硬盤的照片文件讀取出來發(fā)送給客戶端(設(shè)置響應(yīng)頭)
//獲取真實(shí)的文件
String realName=pm.getRealName();
realName=URLEncoder.encode(realName, "utf-8");//如果是中文名必須轉(zhuǎn)碼,防止文件名中文亂碼
// InputStream in=DownServlet.class.getClassLoader().getResourceAsStream(realName);
//設(shè)置顯示類型為下載
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();
}
}
頁面顯示效果:

配置文件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ù)庫:photos.xml
<?xml version="1.0" encoding="UTF-8"?>
<photos>
<!-- 數(shù)據(jù)庫設(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>照片說明信息</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;//上傳客戶端的ip地址
private String desc;//照片說明
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層:這里簡寫了,只寫了實(shí)現(xiàn)類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);
}
}
工具類:
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;
}
}
}
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 自己動(dòng)手寫一個(gè)java版簡單云相冊(cè)
- 相冊(cè)管理系統(tǒng)(Java表單+xml數(shù)據(jù)庫存儲(chǔ))
- javaWEB實(shí)現(xiàn)相冊(cè)管理的簡單功能
- Android相冊(cè)效果(使用C#和Java分別實(shí)現(xiàn))
- Android拍照保存在系統(tǒng)相冊(cè)不顯示的問題解決方法
- 基于Android實(shí)現(xiàn)保存圖片到本地并可以在相冊(cè)中顯示出來
- android照相、相冊(cè)獲取圖片剪裁報(bào)錯(cuò)的解決方法
- Android ViewPager相冊(cè)橫向移動(dòng)的實(shí)現(xiàn)方法
- Android實(shí)現(xiàn)讀取相機(jī)(相冊(cè))圖片并進(jìn)行剪裁
- Android 使用Gallery實(shí)現(xiàn)3D相冊(cè)(附效果圖+Demo源碼)
相關(guān)文章
Java基礎(chǔ)教程之?dāng)?shù)組的定義與使用
Java語言的數(shù)組是一個(gè)由固定長度的特定類型元素組成的集合,它們的數(shù)據(jù)類型必須相同,聲明變量的時(shí)候,必須要指定參數(shù)類型,這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)教程之?dāng)?shù)組的定義與使用的相關(guān)資料,需要的朋友可以參考下2021-09-09
解決springboot啟動(dòng)成功,但訪問404的問題
這篇文章主要介紹了解決springboot啟動(dòng)成功,但訪問404的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07
解析Spring事件發(fā)布與監(jiān)聽機(jī)制
本篇文章給大家介紹Spring事件發(fā)布與監(jiān)聽機(jī)制,通過 ApplicationEvent 事件類和 ApplicationListener 監(jiān)聽器接口,可以實(shí)現(xiàn) ApplicationContext 事件發(fā)布與處理,需要的朋友參考下吧2021-06-06
簡單總結(jié)Java的反射機(jī)制的運(yùn)用
這篇文章主要介紹了Java的反射機(jī)制的運(yùn)用,對(duì)一些常用的類作了一些說明,需要的朋友可以參考下2015-11-11
SpringBoot整合MongoDB的實(shí)現(xiàn)代碼
自己本科時(shí)候一直使用的是Mysql,目前的課題組使用的是MongoDB,因此就花了一部分時(shí)間整理了一下,實(shí)現(xiàn)springboot與MongoDB的整合,并且實(shí)現(xiàn)基本的增刪改查操作,從頭到尾給出一個(gè)完整的案例。2021-05-05
淺談Maven安裝及環(huán)境配置出錯(cuò)的解決辦法
這篇文章主要介紹了淺談Maven安裝及環(huán)境配置出錯(cuò)的解決辦法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09

