통합검색
· 마을서비스란?  · 포럼마을  · 일반마을  · 테마마을  · 마을랭킹  · 활동왕
· 덱스퍼트란?  · TECBOX   · PRSBOX   · 이용안내  
· DEXT제품군  · 솔루션베이  · S/W & ESD 컴포넌트
· 프로그램베이
· LiveSeminar  · LiveConference
데브피아 사이트 운영자, 비사모 마을 입니다.
개발이 아니더라도 다양한 분야에 많은 얘기를 나누는 공간입니다.
  마을등급 비사모 마을   이 마을은 테마마을 입니다이 마을은 자유가입제 마을 입니다 마을소개 페이지로 이동 전입신청
마을촌장촌장 비사모 방문자 95634 since 2006-12-31
데브피아 공지사항
자유게시판
앨범
개인게시판
[마을 게시판]
데브피아 운영 소식
교육 & 세미나 홍보
[개발자 공감]
개발자 공감글
개발자 공감만화
랑데브 게시판
칼럼 게시판
개발자 고충상담
Dev Talk
자유토론방
벼룩시장
재나미 우스개
구인/프로젝트 정보
사람인 채용 게시판
  고객지원 게시판
마이 데브피아
 나의 e-Money 내역
 활동왕 My Page
 스크랩한 게시글보기
 쪽지관리
 주소록관리

 Dev Talk
 Servlet을 서버단으로 쓰고 있는데 데이터 찌꺼기가 남은거 같네요.. 2018-10-10 오전 11:53:25
stiven13 번호: 8716  / 읽음:254

안녕하세요, 안드로이드 개발을 하면서 서버단을 Servlet으로 개발했습니다. 데이터 송수신에서 문제가 없었는데, 파일 업로드 부분에서 문제가 발생했네요.

최초로 파일 업로드한 기기가 '기기A'라고 한다면, 다른 기기에서 무엇을 올리든 텍스트 데이터며 파일이며 '기기A'에서 마지막으로 올라간 텍스트와 파일이 업로드 됩니다.

다른 기능은 전혀 문제가 없습니다. 혹시 그런지 있을까요?

고수분들 부탁 드려요..!

import java.io.BufferedWriter;
import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Base64;
import java.util.Iterator;
import java.util.List;
import java.util.Date;
import java.text.SimpleDateFormat;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
 
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
 
@WebServlet("/UpdateManualWithFile")
public class UpdateManualWithFile extends HttpServlet {
private static final long serialVersionUID = 1L;
 
private static final String UPLOAD_DIR = "files/";
 
private Connection connection;
 
private String session, title, content, type;
private int id;
 
private FileItem uploadFile;
private File newFile;
 
/**
* @see HttpServlet#HttpServlet()
*/
public UpdateManualWithFile() {
super();
}
 
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
super.service(request, response);
}
 
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
*      response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
 
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
*      response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("application/json");
 
PrintWriter out = response.getWriter();
try {
JSONObject obj = new JSONObject();
 
connection = DBBase.connectDB(out);
 
String applicationPath = request.getServletContext().getRealPath("");
String uploadFilePath = applicationPath + UPLOAD_DIR;
File uploadFolder = new File(uploadFilePath);
 
boolean isMultipartContent = ServletFileUpload.isMultipartContent(request);
 
if (!uploadFolder.exists()) {
uploadFolder.mkdirs();
}
 
if (connection == null) {
obj.put("response_status_code", -101);
} else if (!isMultipartContent) {
obj.put("response_status_code", -102);
} else {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List<FileItem> fields = upload.parseRequest(request);
obj.put("size", fields.size());
Iterator<FileItem> it = fields.iterator();
if (!it.hasNext()) {
obj.put("response_status_code", -102);
} else {
while (it.hasNext()) {
FileItem fileItem = it.next();
boolean isFormField = fileItem.isFormField();
if (isFormField) {
if (fileItem.getFieldName().equals("session")) {
session = new String(fileItem.getString().getBytes("8859_1"),"utf-8");
obj.put("session", session);
} else if (fileItem.getFieldName().equals("title")) {
title = new String(fileItem.getString().getBytes("8859_1"),"utf-8");
obj.put("title", title);
} else if (fileItem.getFieldName().equals("content")) {
content = new String(fileItem.getString().getBytes("8859_1"),"utf-8");
obj.put("content", content);
} else if (fileItem.getFieldName().equals("type")) {
type = new String(fileItem.getString().getBytes("8859_1"),"utf-8");
obj.put("type", type);
} else if (fileItem.getFieldName().equals("id")) {
id = Integer.valueOf(fileItem.getString()).intValue();
}
} else {
uploadFile = fileItem;
newFile = new File(request.getServletContext().getRealPath("") + UPLOAD_DIR + File.separator+fileItem.getName());
uploadFile.write(newFile);
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
obj.put("error", e.getLocalizedMessage());
}
 
String query = String.format("SELECT emp_id FROM TB_sdmcpsms_employee WHERE session='%s'", session);
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query);
 
if (resultSet.next()) {
int empId = resultSet.getInt("emp_id");
obj.put("is_session_existed", true);
 
BufferedWriter bufferedWriter = null;
FileWriter fileWriter = null;
 
try {
String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
 
applicationPath = request.getServletContext().getRealPath("");
uploadFilePath = applicationPath + "logs/";
uploadFolder = new File(uploadFilePath);
if (!uploadFolder.exists()) {
uploadFolder.mkdirs();
}
File file = new File(uploadFilePath + date + ".txt");
 
if (!file.exists()) {
file.createNewFile();
}
 
fileWriter = new FileWriter(file.getAbsoluteFile(), true);
bufferedWriter = new BufferedWriter(fileWriter);
 
bufferedWriter.write(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()) + " - " + " empId: " + empId + ", Modify manual. (params- title: " + title + ", content: " + content + ", type: " + type + ", filename: " + uploadFile.getName() + ")");
bufferedWriter.newLine();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bufferedWriter != null)
bufferedWriter.close();
if (fileWriter != null)
fileWriter.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
 
query = "UPDATE TB_sdmcpsms_manual SET title=?, content=?, path=?, moduser=?, moddate=GETDATE() WHERE manual_id=?";
PreparedStatement preparedStatement = connection.prepareStatement(query);
preparedStatement.setNString(1, title);
preparedStatement.setNString(2, content);
preparedStatement.setNString(3, uploadFile.getName());
preparedStatement.setInt(4, empId);
preparedStatement.setInt(5, id);
preparedStatement.execute();
 
obj.put("response_status_code", 1);
} else {
obj.put("is_session_existed", false);
}
}
out.print(obj);
} catch (JSONException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
[코멘트] 좋음
2018-10-10 13:43
ARMSharp
이것만 갖고 어떻게....
저장 취소
[코멘트] 좋음
2018-10-10 17:11
SkyNET
이거 주고 스무고개 하자는건지
저장 취소
[코멘트] 좋음
2018-10-10 17:37
이순희
달랑 소스...
저장 취소
[코멘트] 좋음
2018-10-11 09:50
stiven13
어떤걸 더 올려야 도움을 받을 수 있을까요? ㅜㅜ
저장 취소
[코멘트] 좋음
2018-10-13 11:31
JUNE_MS
헐 ㅋㅋㅋ
저장 취소
[코멘트] 좋음
2018-10-15 15:30
분당에집갖고싶어
고생하셔야 되겠네요.
저장 취소
코멘트쓰기
  좋음   놀람   궁금   화남   슬픔   최고   침묵   시무룩   부끄럼   난감
* 코멘트는 500자 이내(띄어쓰기 포함)로 적어주세요.
목록 보기   지금 보고 계시는 글을 회원님의 my Mblog >> 스크랩에 넣어두고 다음에 바로 보실 수 있습니다.  
회사소개  |   개인정보취급방침  |  제휴문의  |   광고문의  |   E-Mail 무단수집거부  |   고객지원  |   이용안내  |   세금계산서
사업자등록번호 안내: 220-81-90008 / 통신판매업신고번호 제 2017-서울구로-0055호 / 대표: 홍영준, 서민호
08390, 서울시 구로구 디지털로32길 30, 1211호 / TEL. 02_6719_6200 / FAX. 02-6499-1910
Copyright ⓒ (주) 데브피아. All rights reserved.