版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhaomengxia123/article/details/78610477
DBDao.java
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBDao { private static String url = "jdbc:mysql://localhost:3306/homework?useUnicode=true&characterEncoding=UTF-8"; private static String user = "root"; private static String password = "root"; static { try { Class.forName("com.mysql.jdbc.Driver"); // System.out.println("ok"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block // System.out.println("no"); e.printStackTrace(); } } public static Connection getConnection() { Connection conn = null; try { conn = DriverManager.getConnection(url, user, password); // System.out.println("ok=="); } catch (SQLException e) { // TODO Auto-generated catch block // System.out.println("no---"); e.printStackTrace(); } return conn; } }
BaseDao.java
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class BaseDao { private Connection conn; private PreparedStatement ps; private ResultSet set; public int[] addMoreData(Connection conn,String sql,Object[][] fields) throws SQLException{ this.conn=conn; ps=conn.prepareStatement(sql); if(fields!=null){ for(int i=0;i<fields.length;i++){ for(int j=0;j<fields[i].length;j++){ ps.setObject(j+1, fields[i][j]); } ps.addBatch(); } } return ps.executeBatch(); } public int updateDB(Connection conn, String sql, Object[] fields) throws SQLException { this.conn = conn; ps = conn.prepareStatement(sql); if(fields!=null){ for (int i = 0; i < fields.length; i++) { ps.setObject(i + 1, fields[i]); } } return ps.executeUpdate(); } public ResultSet selectDB(Connection conn,String sql,Object[] fields ) throws SQLException{ this.conn = conn; ps = conn.prepareStatement(sql); if(fields!=null){ for (int i = 0; i < fields.length; i++) { ps.setObject(i + 1, fields[i]); } } return ps.executeQuery(); } public void closeAll(){ try { if(conn!=null){ conn.close(); } else if(ps!=null){ ps.close(); } else if(set!=null){ set.close(); } System.out.println("--------------"); } catch (SQLException e) { e.printStackTrace(); } } public ResultSet getTotalRecord(Connection conn,String sql)throws SQLException{ this.conn=conn; ps=conn.prepareStatement(sql); set=ps.executeQuery(); return set; } public ResultSet getTotalRecord(Connection conn,String sql,Object[] fields)throws SQLException{ this.conn=conn; ps=conn.prepareStatement(sql); if(fields!=null){ for(int i=0;i<fields.length;i++){ ps.setObject(i+1, fields[i]); } } set=ps.executeQuery(); return set; } }
FileDao.java
import com.shopping.model.Files; import java.sql.ResultSet; import java.sql.SQLException; public interface FileDao { public int addfile(Files file)throws SQLException; public int deleteById(int id)throws SQLException; public ResultSet select()throws SQLException; public ResultSet findFileById(int id)throws SQLException; }
FileDaoImpl.java
import com.shopping.dao.api.BaseDao; import com.shopping.dao.api.DBDao; import com.shopping.dao.api.FileDao; import com.shopping.model.Files; import org.springframework.stereotype.Repository; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; @Repository public class FileDaoImpl extends BaseDao implements FileDao { @Override public int addfile(Files file) throws SQLException { String sql="insert into files(file_name,file_desc,file_auto_name,user_name)values(?,?,?,?)"; Connection conn= DBDao.getConnection(); Object[] fields={file.getFile_name(),file.getFile_desc(),file.getFile_auto_name(),file.getUser_name()}; return super.updateDB(conn, sql, fields); } @Override public int deleteById(int id) throws SQLException { String sql="delete from files where id=?"; Object[] fields={id}; Connection conn= DBDao.getConnection(); return super.updateDB(conn, sql, fields); } @Override public ResultSet select() throws SQLException { String sql="select * from files"; Connection conn=DBDao.getConnection(); return super.selectDB(conn, sql, null); } @Override public ResultSet findFileById(int id) throws SQLException { String sql="select * from files where id=?"; Object[] fields={id}; Connection conn=DBDao.getConnection(); return super.selectDB(conn, sql, fields); } }
package com.shopping.model;
public class Files { private int id; private String file_name; private String file_desc; private String file_auto_name; private String user_name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getFile_name() { return file_name; } public void setFile_name(String file_name) { this.file_name = file_name; } public String getFile_desc() { return file_desc; } public void setFile_desc(String file_desc) { this.file_desc = file_desc; } public String getFile_auto_name() { return file_auto_name; } public void setFile_auto_name(String file_auto_name) { this.file_auto_name = file_auto_name; } public String getUser_name() { return user_name; } public void setUser_name(String user_name) { this.user_name = user_name; } public Files(int id, String file_name, String file_desc, String file_auto_name, String user_name) { super(); this.id = id; this.file_name = file_name; this.file_desc = file_desc; this.file_auto_name = file_auto_name; this.user_name = user_name; } public Files() { super(); } public Files(String file_name, String file_desc, String file_auto_name, String user_name) { super(); this.file_name = file_name; this.file_desc = file_desc; this.file_auto_name = file_auto_name; this.user_name = user_name; } @Override public String toString() { return "Files [id=" + id + ", file_name=" + file_name + ", file_desc=" + file_desc + ", file_auto_name=" + file_auto_name + ", user_name=" + user_name + "]"; } }
FileService.java
package com.shopping.service.api; import com.shopping.model.Files; import java.util.ArrayList; public interface FileService { public int addfile(String file_name, String file_desc, String file_auto_name, String user_name); public int delete(int id); public ArrayList<Files> selectAll(); public Files selectById(int id); }
FileServiceImpl.java
package com.shopping.service.imp; import com.shopping.dao.api.FileDao; import com.shopping.model.Files; import com.shopping.service.api.FileService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; @Service public class FileServiceImpl implements FileService { @Autowired FileDao file; @Override public int addfile(String file_name, String file_desc, String file_auto_name, String user_name) { // TODO Auto-generated method stub Files files=new Files(file_name,file_desc,file_auto_name,user_name); int t=0; try { t=file.addfile(files); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return t; } @Override public int delete(int id) { int t=0; try { t=file.deleteById(id); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return t; } @Override public ArrayList<Files> selectAll() { ResultSet set=null; ArrayList<Files> list=new ArrayList<Files>(); try { set=file.select(); while(set.next()){ int id=set.getInt("id"); String file_name=set.getString("file_name"); String file_desc=set.getString("file_desc"); String file_auto_name=set.getString("file_auto_name"); String user_name=set.getString("user_name"); list.add(new Files(id,file_name,file_desc,file_auto_name,user_name)); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; } @Override public Files selectById(int id) { Files file1=new Files(); ResultSet set=null; try { set=file.findFileById(id); if(set.next()){ file1.setId(id); file1.setFile_name(set.getString("file_name")); file1.setFile_desc(set.getString("file_desc")); file1.setFile_auto_name(set.getString("file_auto_name")); file1.setUser_name(set.getString("user_name")); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return file1; } }package com.shopping.servlet;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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 com.shopping.model.Files;
import com.shopping.serviceimpl.FileServiceImpl;
import com.shopping.utils.getDate;
public class FileServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String p=request.getParameter("p");
System.out.println(p);
if("doUpFile".equals(p)){
doUpFile(request, response);
}else if("del".equals(p)){
del(request, response);
}else if("doma".equals(p)){
doma(request, response);
}else if("download".equals(p)){
download(request, response);
}
}
protected void doUpFile(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
//使用Apache文件上传组件步骤
DiskFileItemFactory factory=new DiskFileItemFactory();
//得到了解析器
ServletFileUpload servletFileUpload=new ServletFileUpload(factory);
//判断上传是文件还是表单
boolean result=servletFileUpload.isMultipartContent(request);
System.out.print(result);
Date date = new Date();
String file_name=null;
String file_desc=null;
String autoName = new SimpleDateFormat("yyyyMMddHHmmss").format(date);
System.out.print(autoName);
String username=String.valueOf(request.getSession().getAttribute("loginuser"));
if(result){
try {
List<FileItem> fileitems=null;
fileitems = servletFileUpload.parseRequest(request);
System.out.println(autoName+"----------------------------------------------"+username);
for(FileItem fileitem: fileitems){
//相当于表单元素的input里的name属性
if(fileitem.isFormField()){
String fieldname=fileitem.getFieldName();
String value=fileitem.getString("utf-8");
//解决代码乱码的问题
if("file_name".equals(fieldname)){
file_name=value;
}else if("file_desc".equals(fieldname)){
file_desc=value;
}
}
else{
InputStream inputStream=fileitem.getInputStream();
if(inputStream!=null&&inputStream.available()>0){
//得到文件名
String filename= fileitem.getName();
int index=filename.lastIndexOf(".");
String ext=filename.substring(index);
System.out.print(filename+" " +ext);
autoName+=ext;
String path=getServletContext().getRealPath("/uploadfile");
System.out.println(path+"89999999999999999999999");
File file=new File(path,autoName);
System.out.println(file+"3456789-------------");
//得到一个输出流,输出到服务器的磁盘
FileOutputStream outputStream=new FileOutputStream(file);
//一次上传1kb
byte[] datas=new byte[1024];
int len=0;
while((len=inputStream.read(datas))>0){
//读进多少字节,就写出多少字节
outputStream.write(datas, 0, len);
}
outputStream.flush();
outputStream.close();
}
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//调用service层的方法把相应的数据写到数据库
FileServiceImpl service=new FileServiceImpl();
int t=service.addfile(file_name, file_desc, autoName, username);
if(t>0){
response.getWriter().print("<script>alert('上传成功!'); location.href='FileServlet?p=doma';</script>");
}
}
public void doma(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
FileServiceImpl service=new FileServiceImpl();
ArrayList<Files> file=service.selectAll();
request.setAttribute("file", file);
request.getRequestDispatcher("/Admin/files/fileshow.jsp").forward(request, response);
}
public void del(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int id=Integer.parseInt(request.getParameter("id"));
FileServiceImpl service=new FileServiceImpl();
Files f=service.selectById(id);
String path="/uploadfile/"+f.getFile_auto_name();
String realPath=getServletContext().getRealPath(path);
File file=new File(realPath);
boolean delete=file.delete();
int t=service.delete(id);
if(delete&&t>0){
response.getWriter().print("<script>alert('删除成功!');location.href='FileServlet?p=doma';</script>");
}
}
public void download(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
int id=Integer.parseInt(request.getParameter("id"));
FileServiceImpl fs=new FileServiceImpl();
Files f=fs.selectById(id);
String path="/uploadfile/"+f.getFile_auto_name();
String realPath=getServletContext().getRealPath(path);
String auto_name=f.getFile_auto_name();
//auto_name=URLEncoder.encode(auto_name, "utf-8");
String ext=auto_name.substring(auto_name.lastIndexOf("."));
String fileName=f.getFile_name();
fileName+=ext;
//处理可能会出现的乱码问题
//fileName=URLEncoder.encode(fileName,"utf-8");
//确定流来下载文件
FileInputStream input=new FileInputStream(realPath);
response.reset();
//response.setContentLength(input.available());
// response.setContentType("charset=UTF-8");
String agent = (String)request.getHeader("USER-AGENT");
boolean isFireFox=(agent != null && agent.toLowerCase().indexOf("firefox")!=-1);
if(isFireFox)
{
fileName =(new String(fileName.getBytes("UTF-8"),"ISO-8859-1"));
}
else
{
fileName = java.net.URLEncoder.encode(fileName, "UTF-8");
}
response.setHeader("Content-Disposition", "attachment;filename="+fileName);
//response.reset();
//response.setHeader("Content-Disposition", "attachment; filename="+fileName);
OutputStream out=response.getOutputStream();
byte[] buf=new byte[1024];
int i=0;
while((i=input.read(buf))>0){
out.write(buf,0,i);
}
input.close();
out.flush();
out.close();
System.out.print("下载完成");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
public class LoadServlet extends HttpServlet{
/**
* 载文件,通过OutputStream输出流
*/
public void doPost(HttpServletRequest request,HttpServletResponse response){
//1.获取要下载的文件的绝对路径
String realPath = this.getServletContext().getRealPath("/load/ceshi.txt");
//2.获取要下载的文件名
String fileName = realPath.subString(realPath.lastIndexOf("\\")+1);
String userAgent = request.getHeader("User-Agent");
//针对IE或者以IE为内核的浏览器:
if (userAgent.contains("MSIE")||userAgent.contains("Trident")) {
fileName = java.net.URLEncoder.encode(fileName, "UTF-8");
} else {
//非IE浏览器的处理:
fileName = new String(fileName.getBytes("UTF-8"),"ISO-8859-1");
}
//3.设置content-disposition响应头控制浏览器以下载的方式打开文件
response.setHeader("content-disposition","attachment;filename="+fileName);
//4.获取要下载的文件输入流
InputStream in = new FileInputStream(realPath);
int len = 0;
//5.创建书缓冲区
byte[] buffer = new byte[1024];
//6.通过response对象获取OutputStream输出流对象
OutputStream os = response.getOutputStream();
//7.将FileInputStream流对象写入到buffer缓冲区
while((len=in.read(buffer))>0){
os.write(buffer,0,len);
}
//8.关闭流
in.close();
os.close();
}
}