2012年3月11日日曜日

やり直し JAVAサーブレット(基礎からのサーブレット/JSP [改訂版] )その7

(p129) さまざまな入力フォーム

 HTML も JAVAコードも、なんだか難しくなってきています。
. jsp ファイルの ”<form action= ” の記述はこれまでと同じ要領で
修正しましたが、すべてテキスト通りの入力で問題なく動作しました。

サーブレットの出力結果は、順番がバラバラになります。

(p133) 練習問題

ブラウザのテキストボックスに入力した数値と、サーブレットが
ランダムに作り出した数値を比較して、一致した場合に ”当たり” と
表示させるプログラム。 一行一行じっくり解釈していく。

guess.jsp
<%@page contentType="text/html; charset=Windows-31J" %>
<html>
<body>
<h2>数当てゲーム</h2>

0~9の数字を入れてください。
<form action="../input/GuessServlet">    
<%-- *1 --%>
    <input type="text"; name="number">  <%-- *2 --%>
    <input type="submit" value="送信">
</form>
</body>
</html>


 <%-- *1 formの値をGuessServlet.javaに渡す --%>
 <%-- *2 入力された文字列を、変数名 "number" で管理 --%>



GuessServlet.java
package chapter10; /* *1 */

import java.io.*;

import java.util.Random;
import javax.servlet.*;

import.javax.servlet.http.*

public class GuessServlet extends HttpServlet {


    private int hit = new Random().nextInt(10); /* *2 */
 

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

        String numberStr = request.getParameter("number"); /* *3 */
        int number = Integer.parseInt(numberStr); /* *4 */
        response.setContentType("text/plain; charset=Windows-31J");
        PrintWriter out = response.getWriter();
        out.println("数字:" + number);

        if (hit == number) {
            out.println("当たり");
        }else{
            out.println("はずれ");
        }
    }
}

/* *1 小生の場合です。  */
/* *2  Random()クラスのオブジェクトを生成し、そのオブジェクトに乱数を作らせ、
int 型の変数 hit に保存。*/
/* *3  オブジェクト変数( request )が指し示すメモリ上のオブジェクトに格納されて
いる値を、オブジェクトが持つ getParameter()メソッドで取り出し、それを
String 型のオブジェクトとして改めてメモリ上に生成している。
getParameter() は String 型のオブジェクトを返すように作られている為。*/
/* *4  String 型のオブジェクトから int 型の数値を作り出している。これで Random()
で生成した数値とJSPから送られてきた値を比較できるようになった。*/




情報処理 再チャレンジ ブログ ホーム へ

0 件のコメント:

コメントを投稿