⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 handleupload.java

📁 jsp+javabean实现的会员管理系统
💻 JAVA
字号:
package myservlet.control;

import mybean.data.*;
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HandleUpload extends HttpServlet {
	public void init(ServletConfig config) throws ServletException {
		super.init(config);
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (Exception e) {
		}
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		HttpSession session = request.getSession(true);
		Login login = (Login) session.getAttribute("login"); //获取用户登录时的Javabean
		boolean ok = true;
		if (login == null) {
			ok = false;
			response.sendRedirect("login.jsp"); //重定向到登录页面
		}
		if (ok == true) {
			String logname = login.getLogname();
			uploadFileMethod(request, response, logname); //接受上传文件
		}
	}

	public void uploadFileMethod(HttpServletRequest request,
			HttpServletResponse response, String logname)
			throws ServletException, IOException {
		UploadFile upFile = new UploadFile();
		String backNews = "";
		boolean isLetterOrDigit = true;
		try {
			HttpSession session = request.getSession(true);
			request.setAttribute("upFile", upFile);
			String tempFileName = (String) session.getId();
			//System.out.print(tempFileName);
			File f1 = new File(tempFileName);
			FileOutputStream o = new FileOutputStream(f1);
			InputStream in = request.getInputStream();
			byte b[] = new byte[10000];
			int n;
			while ((n = in.read(b)) != -1) {
				o.write(b, 0, n);
			}
			o.close();
			in.close();
			RandomAccessFile random = new RandomAccessFile(f1, "r");
			int second = 1; //读出f1的第2行,析取出上传文件的名字:
			String secondLine = null;
			while (second <= 2) {
				secondLine = random.readLine();
				second++;
			}
			int position = secondLine.lastIndexOf('\\'); //获取第2行中目录符号'\'最后出现的位置
			String fileName = secondLine.substring(position + 1, secondLine
					.length() - 1); //截取文件名
			byte cc[] = fileName.getBytes("ISO-8859-1");
			fileName = new String(cc);
			fileName = fileName.replaceAll(" ", "");
			//文件是否由字母或数字组成判断名字 
			String checkedStr = fileName.substring(0, fileName.indexOf("."));
			for (int i = 0; i < checkedStr.length(); i++) {
				char c = checkedStr.charAt(i);
				if (!((c <= 'z' && c >= 'a') || (c <= 'Z' && c >= 'A') || (c <= '9' && c >= '0'))) {
					isLetterOrDigit = false;
					break;
				}
			}
			if (isLetterOrDigit == false) {
				request.getSession().setAttribute("erro", "图片名称只能包含字母和数字");
				response.sendRedirect("upload.jsp"); //重定向到upload.jsp页面
			}
			//保存文件名是上传文件名加会员名为前缀:
			String savedFileName = logname.concat(fileName);
			random.seek(0);
			long forthEndPosition = 0; //获取第4行回车符号的位置
			int forth = 1;
			while ((n = random.readByte()) != -1 && (forth <= 4)) {
				if (n == '\n') {
					forthEndPosition = random.getFilePointer();
					forth++;
				}
			}
			//根据客户上传文件的名字,将该文件存入磁盘
			File dir = new File(
					"C:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/HYManagerSystem/image");
			dir.mkdir();
			//首先删除用户曾上传过的图像文件:
			File file[] = dir.listFiles();
			for (int k = 0; k < file.length; k++) {
				if (file[k].getName().startsWith(logname))
					file[k].delete();
			}
			File savingFile = new File(dir, savedFileName); //需要新保存的上传文件 
			RandomAccessFile random2 = new RandomAccessFile(savingFile, "rw");
			random.seek(random.length());
			long endPosition = random.getFilePointer();
			long mark = endPosition;
			int j = 1;
			//确定出文件f1中包含客户上传的文件的内容的最后位置,即倒数第6行: 
			while ((mark >= 0) && (j <= 6)) {
				mark--;
				random.seek(mark);
				n = random.readByte();
				if (n == '\n') {
					endPosition = random.getFilePointer();
					j++;
				}
			}
			random.seek(forthEndPosition);
			long startPoint = random.getFilePointer();
			while (startPoint < endPosition - 1) {
				n = random.readByte();
				random2.write(n);
				startPoint = random.getFilePointer();
			}
			random2.close();
			random.close();
			String uri = "jdbc:mysql://localhost:3306/ComeHere";
			Connection con = DriverManager.getConnection(uri, "root", "wsy5201314");
			Statement sql = con
					.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
							ResultSet.CONCUR_UPDATABLE);
			ResultSet rs = sql
					.executeQuery("SELECT * FROM member where logname = '"
							+ logname + "'");
			if (rs.next()) {
				if (isLetterOrDigit) {
					rs.updateString(8, savedFileName);
					rs.updateRow();
					backNews = fileName + "成功上传";
					upFile.setFileName(fileName);
					upFile.setSavedFileName(savedFileName);
					upFile.setBackNews(backNews);
				}
			}
			con.close();
			f1.delete();
		} catch (Exception exp) {
			backNews = "" + exp;
			upFile.setBackNews(backNews);
		}
		if (isLetterOrDigit) {
			RequestDispatcher dispatcher = request
					.getRequestDispatcher("/showUploadMess.jsp");
			dispatcher.forward(request, response);
		}
	}

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

⌨️ 快捷键说明

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