2015-07-03 36 views
0

我一直在研究很多關於servlets的信息,並且我創建了一個應該從我的web應用程序接收一些位置的信息,但是由於我缺乏servlet的經驗,我沒有想法如何解決它。另外我不知道我應該把我的HTML應用放在哪裏,我聽說它應該在WebContent文件夾中,並且它在那裏,但它不起作用。你可以幫幫我嗎?

更新:我想上傳一些資料,將通過我的servlet轉化爲txt文件,以避免上傳每說一個文件:」 ...... 我已經創建了一個應該得到從我的web應用程序一些位置......」

服務器:Apache Tomcat上7.0
Eclipse的EE火星

提前致謝。我的ajax POST沒有被髮送到我的servlet

我整個項目是在這裏:DropBox

PS:我下面貼只爲觀察片斷,但如果我不能使用腳本,因爲我沒有在庫的企業,希望看到它在此PostScript上方的鏈接上檢查它。

我的HTML與AJAX

<body> 
    <div id="navgrid"> 
    <div id="header">Header</div> 
    <div id="tree1"> 
     <ul class="jqtree_common jqtree-tree"> 
     <li class="jqtree_common jqtree-folder"> 
      <div class="jqtree-element jqtree_common"><a class="jqtree_common jqtree-toggler">â–¼</a><span class="jqtree_common jqtree-title jqtree-title-folder">node1</span> 
      </div> 
      <ul class="jqtree_common "> 
      <li class="jqtree_common"> 
       <div class="jqtree-element jqtree_common"><span class="jqtree-title jqtree_common">child1</span> 
       </div> 
      </li> 
      <li class="jqtree_common"> 
       <div class="jqtree-element jqtree_common"><span class="jqtree-title jqtree_common">child2</span> 
       </div> 
      </li> 
      </ul> 
     </li> 
     <li class="jqtree_common jqtree-folder"> 
      <div class="jqtree-element jqtree_common"><a class="jqtree_common jqtree-toggler">â–¼</a><span class="jqtree_common jqtree-title jqtree-title-folder">node2</span> 
      </div> 
      <ul class="jqtree_common "> 
      <li class="jqtree_common"> 
       <div class="jqtree-element jqtree_common"><span class="jqtree-title jqtree_common">child3</span> 
       </div> 
      </li> 
      </ul> 
     </li> 
     </ul> 
    </div> 
    </div> 
    <script type="text/javascript"> 
    </script> 

    <script> 
    $(document).ready(function() { 

     var POSITIONS; 

     //var data is a dynamic JSON file that should be created in the backend. 
     var data = [{ 
     label: 'node1', 
     id: 1, 
     children: [{ 
      label: 'child1', 
      id: 2 
     }, { 
      label: 'child2', 
      id: 3 
     }] 
     }, { 
     label: 'node2', 
     id: 4, 
     children: [{ 
      label: 'child3', 
      id: 5 
     }] 
     }]; 
     $('#tree1').tree({ 
     data: data, 
     autoOpen: true, 
     dragAndDrop: true 
     }); 


     console.log($('#tree1').tree('toJson')); //This will give you the loading jqtree structure. 

     $('#tree1').bind(
     'tree.move', 
     function(event) { 
      event.preventDefault(); 
      // do the move first, and _then_ POST back. 
      event.move_info.do_move(); 
      console.log($(this).tree('toJson')); //this will give you the latest tree. 
      POSITIONS = $(this).tree('toJson'); 
      alert(POSITIONS); 
      $.post('http://sistema.agrosys.com.br/sistema/labs/CSS_HTML/', { 
      tree: $(this).tree('toJson') 
      }); 
      alert("done"); //this will post the json of the latest tree structure. 
     } 
    ); 

     var data = new FormData(); 
     data.append("JqTree", POSITIONS); 
     alert('Sending: ' + POSITIONS); 
     $.ajax({ 
     url: '/JqTree', 
     type: 'POST', 
     data: data, 
     cache: false, 
     dataType: 'json', 
     processData: false, 
     contentType: false, 
     success: function(response) { 
      alert("file has been successfully sent\n\n" + POSITIONS); 
     }, 
     error: function(jqXHR, textStatus, errorThrown) { 
      alert('ERRORS: ' + textStatus); 
     } 
     }); 

    }); 
    </script> 
</body> 

我的servlet

import java.io.IOException; 
import java.io.PrintWriter; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class Hello extends HttpServlet { 
private static final long serialVersionUID = 1L; 
public Hello() {} 

protected void doGet(HttpServletRequest request, HttpServletResponse  response) throws ServletException, IOException { 

    response.setContentType("text/html"); 
    PrintWriter out=response.getWriter(); 

    out.print("<html><body>"); 
    out.print("<h3>Hello Servlet</h3>"); 
    out.print("</body></html>"); 
} 

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    String position = request.getParameter("JqTree"); 

    PrintWriter writer = new PrintWriter("Positions.txt", "UTF-8"); 
    writer.println(position); 
    writer.close(); 
} 

} 

和我的web.xml

​​
+3

你應該真的在這裏給出足夠的代碼來重現問題,例如所有的樣式聲明都沒有用。最明顯的一點是你的ajax調用的url。那是對的嗎?如果打電話,您可以檢查服務器訪問日誌嗎? –

+0

@JPMoresmau好的,我現在就修復它。 – Kyle

+0

@JPMoresmau修復;),希望它更整潔更清晰 – Kyle

回答

1

你需要ŧ Ø改變你的AJAX調用

$.ajax({ 
    url: '/JqTree/Hello', 

其中/JqTree是你的Web應用程序的上下文根,加上/Hello這是你的/WEB-INF/web.xml文件配置爲您的Hello的Servlet的<url-pattern>


  1. $.ajax()呼叫使用post所以你必須要記住,只有doPost()會被調用。
  2. 您的doPost()不會返回任何輸出,但您的$.ajax()呼叫需要返回dataType: 'json'。有時這可能導致請求失敗。
  3. 我相信你正在嘗試上傳文件。如果是,則不能僅使用request.getParameter()來閱讀文件內容。你必須以不同的方式編寫Servlet代碼來處理multipart/form-data,不管你是在Servlet 3.0還是2.x容器下運行,它都會有所不同。
+0

你的答案真的很簡潔+1,但是我有點疑惑解決,其餘的如servlet是否正確和功能? – Kyle

+0

我的意思是** web.xml **和** Hello.java **文件,它們是正確的嗎?我需要添加其他東西嗎?在此先感謝 – Kyle

+0

@Calne添加我的回覆您的意見作爲更新。 –

相關問題