2013-04-30 3 views
-1

파일 업로드를위한 기본 양식이 있습니다. 서블릿이 업로드 작업을하고 있습니다. 모든 파일은 동일한 이름 구조로되어 있으므로 파일을 분할하고 매개 변수를 가져옵니다. 그런 다음 나는 그들을 JSONArray에 배치하고 나서이 매개 변수를 내 경우에 test.jsp이라는 색인 페이지에 전달합니다.json 데이터로 표/표 채우기

문제는, 테이블을 만들고 JSON에서 보유한 세부 정보로 채우는 방법에 대해서는 잘 모릅니다.

다음

내 지수 (TEST.JSP) 페이지는 다음 JSON가 제대로 전달되는 경우 나, 확인 ${jsonString}을 사용하고

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
<title>File Upload Demo</title> 
</head> 
<body> 
    <center> 
     <form method="post" action="uploadFile" enctype="multipart/form-data"> 
      Select file to upload: 
      <input type="file" name="uploadFile" multiple/> 
      <br/><br/> 
      <input type="submit" value="Upload" /> 
     </form> 
     ${message} 
     <br /> 
     ${jsonString} 
    </center> 
</body> 
</html> 

.

다음
[ 
    { 
     "MDName": "Angel Bankov", 
     "MDCode": "2288", 
     "month": "April", 
     "year": "2013", 
     "target/achieved": "Target" 
    }, 
    { 
     "MDName": "Angel Bankovsky", 
     "MDCode": "2289", 
     "month": "April", 
     "year": "2015", 
     "target/achieved": "Achieved" 
    } 
] 

내 서블릿은 다음과 같습니다 :

import java.io.File; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.util.List; 

import javax.servlet.RequestDispatcher; 
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; 
import org.json.JSONArray; 
import org.json.JSONObject; 

/** 
* A Java servlet that handles file upload from client. 
* 
* @author www.codejava.net 
*/ 
public class FileUploadServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    // location to store file uploaded 
    private static final String UPLOAD_DIRECTORY = "upload"; 

    // upload settings 
    private static final int MEMORY_THRESHOLD = 1024 * 1024 * 3; 
    private static final int MAX_FILE_SIZE  = 1024 * 1024 * 40; 
    private static final int MAX_REQUEST_SIZE = 1024 * 1024 * 50; 

    /** 
    * Upon receiving file upload submission, parses the request to read 
    * upload data and saves the file on disk. 
    */ 
    protected void doPost(HttpServletRequest request, 
      HttpServletResponse response) throws ServletException, IOException { 
     // checks if the request actually contains upload file 
     if (!ServletFileUpload.isMultipartContent(request)) { 
      // if not, we stop here 
      PrintWriter writer = response.getWriter(); 
      writer.println("Error: Form must has enctype=multipart/form-data."); 
      writer.flush(); 
      return; 
     } 
     //JSON Declaration 
     JSONArray splitDetailsArray = new JSONArray(); 

     // configures upload settings 
     DiskFileItemFactory factory = new DiskFileItemFactory(); 
     // sets memory threshold - beyond which files are stored in disk 
     factory.setSizeThreshold(MEMORY_THRESHOLD); 
     // sets temporary location to store files 
     factory.setRepository(new File(System.getProperty("java.io.tmpdir"))); 

     ServletFileUpload upload = new ServletFileUpload(factory); 

     // sets maximum size of upload file 
     upload.setFileSizeMax(MAX_FILE_SIZE); 

     // sets maximum size of request (include file + form data) 
     upload.setSizeMax(MAX_REQUEST_SIZE); 

     // constructs the directory path to store upload file 
     // this path is relative to application's directory 
     String uploadPath = getServletContext().getRealPath("") 
       + File.separator + UPLOAD_DIRECTORY; 

     // creates the directory if it does not exist 
     File uploadDir = new File(uploadPath); 
     if (!uploadDir.exists()) { 
      uploadDir.mkdir(); 
     } 

     try { 
      // parses the request's content to extract file data 
      @SuppressWarnings("unchecked") 
      List<FileItem> formItems = upload.parseRequest(request); 

      if (formItems != null && formItems.size() > 0) { 
       // iterates over form's fields 
       for (FileItem item : formItems) { 
        // processes only fields that are not form fields 
        if (!item.isFormField()) { 
         String fileName = new File(item.getName()).getName(); 
         String filePath = uploadPath + File.separator + fileName; 
         File storeFile = new File(filePath); 

         // saves the file on disk 
         item.write(storeFile); 
         request.setAttribute("message", 
          "Upload has been done successfully!"); 
        } 
       } 
       File folder = new File("D:/Workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/HDSHubTargetAchieved/upload"); 
       File[] listOfFiles = folder.listFiles(); 


        for (int i = 0; i < listOfFiles.length; i++) { 
         if (listOfFiles[i].isFile()) { 
          String[] parts = listOfFiles[i].getName().split("[_.']"); 
          String part1 = parts[0]; 
          String part2 = parts[1]; 
          String part3 = parts[2]; 
          String part4 = parts[3]; 
          String part5 = parts[4]; 

          // JSON   
          JSONObject splitDetails = new JSONObject(); 

          splitDetails.put("MDCode", part1); 
          splitDetails.put("target/achieved", part2); 
          splitDetails.put("month", part3); 
          splitDetails.put("year", part4); 
          splitDetails.put("MDName", part5); 

          splitDetailsArray.put(splitDetails); 

          // TEST OUTPUT \\ 
          System.out.println("Code:" + part1 + "\n Target/Achieved: " + part2 + "\n Month: " + part3 + "\n Year: " + part4 + "\n Name: " + part5);             
         } 
        } 
        // TEST OUTPUT \\ 
        System.out.println(splitDetailsArray.toString()); 
      } 
     } catch (Exception ex) { 
      request.setAttribute("message", 
        "There was an error: " + ex.getMessage()); 
     } 
     // redirects client to message page 
     request.setAttribute("jsonString", splitDetailsArray.toString()); 
     RequestDispatcher dispatcher = request.getRequestDispatcher("/test.jsp"); 
     dispatcher.forward(request, response); 
//  getServletContext().getRequestDispatcher("/test.jsp").forward(
//    request, response); 
    } 
} 

위의 코드는 다시 tomcat 6

에서 실행되는이 JSON을 통과, 내가 방법을 찾고 있어요처럼 같습니다 테이블에 test.jsp 파일. 대부분의 경우 조언을 구하고 있지만 이번에는 코드 예제가 필요합니다. 왜냐하면 실제로 어떻게해야할지 모르기 때문입니다. 서블릿에 대한 나의 첫 접촉입니다. 도움을 청하기 위해 2 시간을 잃었지만 그것을 찾을 수 없었습니다.

답변

1

기본적으로 자바 스크립트를 사용하여 JSON 배열을 반복하고 html 표 태그를 인쇄합니다. 아래는 귀하를 도와 줄 수있는 답의 예입니다. 나는 방금 Google에서 "json의 html 테이블 인쇄"를 검색했습니다.

Convert json data to a html table

+0

고맙습니다! 그것은 훌륭한 모범이었다. 어떻게 내가 그것을 놓쳤는 지 전혀 모른다, 아마 나는 너무나 피곤했다. – Slim

관련 문제