storenoticeaction.java

来自「功能是公安和学校的管理系统,用struts+hibernate+spring等匡」· Java 代码 · 共 170 行

JAVA
170
字号
package com.comingnet.action;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;

import com.comingnet.notice.AppFiles;
import com.comingnet.notice.Notice;
import com.comingnet.notice.NoticeDao;
import com.opensymphony.xwork2.ActionSupport;

public class StoreNoticeAction extends ActionSupport implements ServletRequestAware{
	private int id;
	private Notice notice;
	private HttpServletRequest request;
	//用于获取和保存上传文件信息
	private String[] imageFileName;
	private File[] 	 myFile;
	private String[] myFileFileName;
	private String[] myFileContentType;
	private static final int BUFFER_SIZE = 16 * 1024;
	private ArrayList<AppFiles> filelist;
	
	public void setServletRequest(HttpServletRequest request) {
		// TODO Auto-generated method stub
		this.request = request;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public Notice getNotice() {
		return notice;
	}
	public void setNotice(Notice notice) {
		this.notice = notice;
	}
			
	public String[] getImageFileName() {
		return imageFileName;
	}
	public void setImageFileName(String[] imageFileName) {
		this.imageFileName = imageFileName;
	}
	public File[] getMyFile() {
		return myFile;
	}
	public void setMyFile(File[] myFile) {
		this.myFile = myFile;
	}
	public String[] getMyFileContentType() {
		return myFileContentType;
	}
	public void setMyFileContentType(String[] myFileContentType) {
		this.myFileContentType = myFileContentType;
	}
	public String[] getMyFileFileName() {
		return myFileFileName;
	}
	public void setMyFileFileName(String[] myFileFileName) {
		this.myFileFileName = myFileFileName;
	}
	
	/**
	 * 将文件复制到给定的文件夹
	 * @param src	原文件
	 * @param dst	目标文件
	 */
	private static void copy(File src, File dst) {
		InputStream in = null;
		OutputStream out = null;
		try {
			in = new BufferedInputStream(new FileInputStream(src), BUFFER_SIZE);
			out = new BufferedOutputStream(new FileOutputStream(dst),
					BUFFER_SIZE);
			byte[] buffer = new byte[BUFFER_SIZE];
			while (in.read(buffer) > 0) {
				out.write(buffer);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (null != in)
					in.close();
				if (null != out)
					out.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * 获取文件的扩展名
	 * @param fileName	包含扩展名的文件名
	 * @return	文件的扩展名
	 */
	private static String getExtention(String fileName) {
		int pos = fileName.lastIndexOf(".");
		return fileName.substring(pos);
	}
	
	/**
	 * 将notice信息保存到m_notice表
	 * @param notice
	 */
	private void saveNoticeInDatabase(Notice notice){
		NoticeDao dao = new NoticeDao();
		dao.addNotice(notice);
	}
	
	/**
	 * 将上传的文件保存到notice/uploadFile文件夹中,并更名为:当前时间+文件序号+扩展名
	 *
	 */
	private void saveFilesInFolder(){
		if(myFile!=null){
			if(myFile.length != 0){
				imageFileName = new String[myFile.length];
				filelist = new ArrayList<AppFiles>();
			}
			for(int i=0; i<myFile.length; i++){
				AppFiles file = new AppFiles();
				file.setOldFilename(myFileFileName[i]);
				imageFileName[i] = new Date().getTime()+ i + getExtention(myFileFileName[i]);//保证在同一时间内上传的文件不重名
				file.setNewFilename(imageFileName[i]);
				File imageFile = new File(ServletActionContext.getServletContext().getRealPath("/notice/uploadFile")+ "/" + imageFileName[i]);
				copy(myFile[i], imageFile);
				filelist.add(file);
			}
			notice.setFiles(filelist);
		}
	}
	
	/**
	 * 根据id返回notice对象
	 * @return
	 */
	public String LoadNotice(){
		NoticeDao dao = new NoticeDao();
		dao.getNoticeInfoById(getId());
		setNotice(dao.getNotice());
		request.setAttribute("content", notice.getN_nr());
		return SUCCESS;
	}
	/**
	 * 添加公告action方法 将上传文件保存到notice/uploadFile下,并添加数据库纪录
	 * @return
	 */
	public String AddNotice() {
		saveFilesInFolder();
		saveNoticeInDatabase(notice);//保存notice信息
		return SUCCESS;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?