上回提到使用 Filter 去將所有進來的 Request 也能夠取得用戶 ID 才可以顯示內容,拿取不到用戶 ID 會 Redirect 到 Facebook 的登入頁面,今次先試試在 Facebook 顯示 Hello World 字樣。
新增一個 Servlet。
IndexServlet:
package com.blogspot.lawpronotes.servlet;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class IndexServlet
*/
public class IndexServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public IndexServlet() {
super();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
Map<String, Object> model = new HashMap<String, Object>();
model.put("message", "Hello World");
request.setAttribute("model", model);
// Forward to JSP file to display message
RequestDispatcher dispatcher = request
.getRequestDispatcher("/WEB-INF/pages/index.jsp");
dispatcher.forward(request, response);
}
}
這個 Servlet 只作為控制器的角色,顯示方面交由 JSP 負責。
不懂得 MVC 架構可參考這篇: 最簡單的方式實現 MVC (Servlet + JSP)
之後在 /WEB-INF 內新增一個 pages 目錄並建立 index.jsp 。
index.jsp:
<?xml version="1.0" encoding="UTF-8"?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isELIgnored="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Index</title>
</head>
<body>
<h1>${ model['message'] }</h1>
</body>
</html>
記得要在 html tag 加上 xmlns:fb=”http://www.facebook.com/2008/fbml”
遲點使用 XFBML 時要用到。
打開 http://apps.facebook.com/#your_canvas_name#/ 會見到 Hello World 字樣。
下一回: 使用 Java 開發 Facebook Web App - 3
相關書籍: