ページ

2014年9月7日日曜日

GAEと戯れる 10 - サーブレット -

サーブレットに挑戦

JSPとサーブレットは同じらしい。。JSPで書いたものをサーバー側でサーブレットに変換し、HTMLを出力してくれる。。へえ〜^^;

フロントエンド・・・JSP
バックエンド・・・・サーブレット
で書くのがやりやすい。

サーブレットには大きく分けてVer3.0以前のものと移行のものがメジャー。
GAEは2,5のバージョンしか使えないorz

以下サイトを参考に簡単なサーブレットを書いてみる。
http://libro.tuyano.com/index3?id=892001&page=4














実行!!









ちゃんとできているっぽい。

重要なのは、doGetとdoPostメソッドで、
ContextType (html or plane text)や文字エンコードの設定等を行う必要がある。
という事らしい。

次は、フォームページとサーブレットとのやりとりを実装してみる。

form.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>Hello App Engine</title>
    <style>
    h1 {
        font-size: 16pt;
        background: #AAFFAA;
        padding: 5px;
    }
    </style>
</head>

<body>
    <h1>Hello App Engine!</h1>
    <p id="msg">※なにか書いて送信してください。</p>
    <form method="post" action="/mygaeapp">
    <table>
        <tr>
            <td>入力</td>
            <td><input type="text" id="input" name="text1"></td>
        </tr>
        <tr>
            <td></td>
            <td>
                <input type="submit" value="送信する">
            </td>
        </tr>
    </table>
    </form>
</body>

</html>

MyGaeAppServlet
/**
 * 
 */
package gae2014.hello;

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;

/**
 * @author slowhand
 *
 */
public class MyGaeAppServlet extends HttpServlet {

/* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
super.doGet(req, resp);
}

/* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html");
resp.setCharacterEncoding("utf8");
req.setCharacterEncoding("utf8");
String param = req.getParameter("text1");
PrintWriter out = resp.getWriter();
        out.println("<html><head></head><body>");
        out.println("<h1>result</h1>");
        out.println("<p>you typed: " + param + ".</p>");
        out.println("</body></html>");
}

}

実行結果























できてますな〜^^

0 件のコメント:

コメントを投稿