?? ?到現在才真正體會到一個人做項目的感受,我說的不是一個人做著玩的。在一個公司里給他們做項目管理軟件(他們的項目不是軟件項目哦)。
?? ?我一個人充當了好多人的角色,我也不認為到現在為止我的水平有多高,但是我現在確實是充當軟件架構師的角色。項目到現在做了有兩個多月了,在這個過程中出現了不少系統框架上的問題還有數據庫設計的不完善造成的一系列問題。從一開始就沒有做完整的需求分析,因為那個時候他們也不是很清楚要做一個什么樣的東西出來,需求都很模糊。只是一個大概的構想,我但是就想了要把他們這種構想轉化為需求的話也就等于是空想。所以只能是走一步說一步。需求是一步一步在變,我好像也是一步一步在改,改東西是最煩人的事情。
?? ?不寫了,下班,明天繼續。
?? ?接著昨天的寫,昏昏沉沉的有敲了一天的代碼
?? ?前些天做了有關 文件上傳 的一些東西,現在把它貼出來
用的是Apache的Commons FileUpload組建
?? ?首先是要把需要的jar包放到WEB-INF的lib目錄下,需要的jar包全部在附件里,沒有的可以去下載
jsp文件:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'upload.jsp' starting page</title>
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action="UploadServlet" method="post" enctype="multipart/form-data">
<table border="1" align="center">
<caption>
請選擇要上傳的文件
</caption>
<tr>
<td>
上傳人
</td>
<td>
<input type="text" name="name">
</td>
</tr>
<tr>
<td>
上傳文件
</td>
<td>
<input type="file" name="file1name">
<input type="file" name="file1name">
</td>
</tr>
<tr>
<td>
<input type="submit" name="submit" value="上傳" >
</td>
<td>
<input type="reset" name="rest" value="重置">
</td>
</tr>
</table>
</form>
</body>
</html>
?
? UploadServlet.java
?
package com.xiang;
import java.io.IOException;
import java.io.*;
import java.util.*;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class UploadServlet extends HttpServlet {
private ServletContext app;
private String savePath;
public void init(ServletConfig conf) {
savePath = conf.getInitParameter("savePath");
app = conf.getServletContext();// 獲取servlet上下文,init方法只執行一次;
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=GBK");
PrintWriter out = response.getWriter();
request.setCharacterEncoding("GBK");
DiskFileItemFactory dif = new DiskFileItemFactory();
ServletFileUpload load = new ServletFileUpload(dif);
try {
//工程必須得有commons-io-1.4.jar,不然這個位置會報錯
List items = load.parseRequest(request);// 解析reqeust,包括所傳過來的參數,文件等等吧,總之請求過來的所有東西都在這里放著呢
Iterator it = items.iterator();// 既然items里包含了很多東西,那么我們需要取出每一個看看都是什么東西,主要區分input類型是text還是file
while (it.hasNext()) {
FileItem item = (FileItem) it.next();// 取出items里每一個元素,item即可是普通的文本信息,又可以是所上傳的文件
if (item.isFormField()) {// 如果此方法返回真,說明就是普通的文本信息,相反就是文件啦
// 如果是普通文本信息,簡單處理, 輸出信息
System.out.println("表單參數的名字" + item.getFieldName()
+ "<br/>" + "表單參數的值" + item.getString("GBK"));
} else {
// 上傳文件
// 判斷用戶是否選擇的上傳文件
if (item.getName() != null && !item.getName().equals("")) {
System.out.println("上傳文件的大小" + item.getSize());
System.out.println("上傳文件的類型" + item.getContentType());
System.out.println("上傳文件的名稱" + item.getName());// 此處獲得的名字,是客戶端所選擇的文件的路徑和文件名,而我們往服務器保存時,要從新指定服務器端的路徑
File tempFile = new File(item.getName());// 臨時性的,目的調用它的tempFile.getName()方法,僅僅獲取所上傳文件的名字而不要路徑
System.out.println("文件名字:" + tempFile.getName());
// app.getRealPath("/");
System.out.println("當前工程的絕對路徑:" + app.getRealPath("/"));
// 從新獲取file,而此file才是真正的所要上傳的
File file = new File(app.getRealPath("/") + savePath,
tempFile.getName());// 注意新file的構建,逗號前邊是路徑,后面是文件名
item.write(file);
System.out.println("上傳成功");
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
?
?
?
?不要忘記在web.xml里田間配置
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>UploadServlet</servlet-name>
<servlet-class>com.accp.UploadServlet</servlet-class>
<init-param>
<param-name>savePath</param-name>
<param-value>uploads</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>UploadServlet</servlet-name>
<url-pattern>/UploadServlet</url-pattern>
</servlet-mapping>
?
?大功告成
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

