2010-03-02 70 views

回答

1

要預處理請求,您需要創建Servlet並實施doGet()方法。在此方法內部,您可以隨意編寫/調用Java代碼,而無需使用scriptlet混淆JSP文件。利用doGet()方法中的java.net.URL和/或java.net.URLConnection通過HTTP請求訪問Facebook API並獲取數據作爲HTTP響應。最後以List<Friend>的風格處理這些數據,並將請求轉發到JSP頁面進行顯示。

開球例如:

public class FacebookServlet extends HttpServlet { 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     URL url = new URL("http://url/to/some/facebook/API/to/get/list/of/friends"); // Read Facebook API doc for the correct URL. 
     InputStream input = url.openStream(); 
     List<Friend> friends = extractFriends(input); // Do your job here. 
     request.setAttribute("friends", friends); // It's then available as ${friends} in JSP. 
     request.getRequestDispatcher("/WEB-INF/friends.jsp").forward(request, response); 
    } 
} 

地圖這個servlet在web.xml上的例如/friends,這樣就可以通過http://example.com/contextname/friends調用它的url-pattern

然後,在你/WEB-INF/friends.jsp(在JSP被放置在/WEB-INF防止直接訪問,而無需使用servlet),利用JSTL(剛落,在/WEB-INF/libjstl-1.2.jarc:forEach標籤遍歷List<Friend>和打印HTML表(<tr>):

<table> 
    <c:forEach items="${friends}" var="friend"> 
     <tr> 
      <td>${friend.name}</td> 
      <td>${friend.age}</td> 
      <td>${friend.email}</td> 
      <td>etc..</td> 
     </tr> 
    </c:forEach> 
</table> 
+0

你應該提供一個url示例的例子嗎? – JohnRaja 2010-03-02 12:52:28

+0

閱讀Facebook API文檔以獲取正確的URL。 http://wiki.developers.facebook.com/index.php/API – BalusC 2010-03-02 17:12:19