0
我從客戶端應用程序接收doPost方法中的圖像。我不應該將此圖像存儲在任何文件夾路徑中,因此我使用以下代碼將此圖像作爲數據字節存儲在會話屬性中。Servlet:doGet not returns
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String fileName = null;
fileName = request.getParameter("filename");
System.out.println("filename: " + fileName);
DataInputStream din = new DataInputStream(request.getInputStream());
byte[] data = new byte[0];
byte[] buffer = new byte[512];
int bytesRead;
while ((bytesRead = din.read(buffer)) > 0) {
// construct an array large enough to hold the data we currently have
byte[] newData = new byte[data.length + bytesRead];
// copy data that was previously read into newData
System.arraycopy(data, 0, newData, 0, data.length);
// append new data from buffer into newData
System.arraycopy(buffer, 0, newData, data.length, bytesRead);
// set data equal to newData in prep for next block of data
data = newData;
}
request.getSession().setAttribute("imageData", data);
}
我想從doGet方法獲取它後收到它。所以,我想用下面的doGet代碼來檢索它。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
byte[] data = (byte[]) request.getSession().getAttribute("imageData");
int len = data.length;
byte[] imageData = new byte[len];
for(int i=0; i < len; i++) {
imageData[i] = data[i];
}
response.setContentType("image/jpg");
response.getOutputStream().write(imageData);
response.getOutputStream().flush();
response.getOutputStream().close();
}
但是,它不會在doGet中返回這個圖像,當我在一段時間後從另一個客戶端調用這個servlet時。
有人請告訴我,我在做什麼錯在這裏沒有得到圖像在doGet?
你能舉一個例子嗎請 – Stella
我的要求是,每個客戶端都應該發送特定的圖片,並不是所有的客戶端都會收到相同的圖片。 – Stella
我不明白你的要求是什麼。你知道servlet規範的[範圍](http://docs.oracle.com/javaee/6/tutorial/doc/gjbbk.html)嗎? – Uooo