2015-12-01 103 views
0

我有1個Servlet和一個doPost方法,它將上傳一個圖像。但是我需要先創建一個Pattern對象,這樣我才能得到這個模式的ID,並使用它來使它成爲圖像的名稱。 (不有趣的問題,但現在你知道我的動機)Java - Servlet轉發Get方法Post方法

這是我的servlet叫CreatePatternServlet它使用的doGet:

public void doGet(HttpServletRequest req, 
       HttpServletResponse resp) 
       throws ServletException, java.io.IOException { 
     /*--------------------creating the pattern-------------------------*/ 
     //TODO make pattern 
     String name = req.getParameter("name"); 
     String scope = req.getParameter("scope"); 
     String purpose = req.getParameter("purpose"); 
     String problem = req.getParameter("problem"); 
     String solution = req.getParameter("solution"); 

     System.out.println("step 1: ["+name+","+ scope+","+purpose+","+problem+","+solution+"]"); 

     //This method returns the id of the pattern, which will be used for the name of the image 
     int patternId = Controller.createPattern(name, scope, purpose, problem, solution); 

     /*------------------end of creating pattern-----------------------*/ 

,這將是UploadImageServlet的doPost方法:

doPost(HttpServletRequest req, HttpServletRespose resp) throws ServletException, IOException{ 
     isMultipart = ServletFileUpload.isMultipartContent(req); 

     java.io.PrintWriter out = resp.getWriter(); 
     if(!isMultipart){ 
     return; 
     } 

     DiskFileItemFactory factory = new DiskFileItemFactory(); 
     // maximum size that will be stored in memory 
     factory.setSizeThreshold(maxMemSize); 
     // Location to save data that is larger than maxMemSize. 
     factory.setRepository(new File(repository)); 

     // Create a new file upload handler 
     ServletFileUpload upload = new ServletFileUpload(factory); 
     // maximum file size to be uploaded. 
     upload.setSizeMax(maxFileSize); 

     try{ 
     // Parse the request to get file items. 
     List fileItems = upload.parseRequest(req); 

     //calling the function which loads the image in the default directory 
    Controller.uploadImage(fileItems, patternId); 

     }catch(Exception e){ 
      System.out.println("oeps"); 
     } 
     /*--------------------ending creation of image, image is created--------------------*/ 

    } 

獨立他們工作得很好,但我想結合他們。 uploadImage不能使用doGet運行,所以我需要一些方法將Get請求轉發到Post請求。這可能嗎?或者我應該找到解決方法?

+0

只需將公共代碼移動到可重用的類/方法,然後再由這兩種方法調用?這不是一個servlet問題。這只是基本的Java。 – BalusC

+0

你如何做上傳?它是一些HTML表單還是程序? AFAIK查詢參數(?name = Value)也可以在POST URL中使用......? – Jan

+0

這是一個HTML表格 – Ivaro18

回答