弊社の新人エンジニア研修向けのJSP Servletの問題集です。

1.1行テキスト

以下のような結果になるように以下のGreeting.javaの空欄①、②を埋めなさい。

上記画面で名前と年齢を入力して「submit」ボタンを押すと、以下の画面が表示される。

<ソースコード① greeting.html>

<html>
    <head>
        <title>Greetning</title>
        <meta charset="UTF-8">
    </head>
    <body>

        <form action="Greeting" method="get">

            <label for="1">お名前を教えてください
                <input type="text" name ="name" id = "1"><br>
            <label for = "2">お年を教えてください
                <input type="text" name="age" id = "2"><br>
            <input type="submit" value="submit">
            
        </form>
    </body>
</html>

 

<ソースコード② Greeting.java>

package p02;

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

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

@WebServlet("/Greeting")
public class Greeting extends HttpServlet {

    private static final long serialVersionUID = 1L;

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

        String name = ①.getParameter("name");
        int age = ②(request.getParameter("age"));

        response.setContentType("text/html; charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE html>");
        out.println("<html>");
        out.println("<head>");
        out.println("<meta charset=\"UTF-8\"/>");
        out.println("<title>Hello!</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Hello!</h1>");
        out.println("Hello " + name);
        out.println("<br>You will be " + (age + 1) + " years old on your next birthday.");
        out.println("</body>");
        out.println("</html>");
    }
}

 

2.リクエストパラメータの追記

上記ソースコード②のGreetingクラス“だけ”をサーバーで実行して問1と同じ結果を得なさい。

ヒント:以下の2通りの方法がある

1.IDEの機能でリクエストパラ-メータを入力する方法

2.500エラーの画面を出したあと、アドレスバーに直接追記する方法

 

3.doGetメソッドとdoPostメソッドの違い

上記ソースコード②のGreetingクラスのメソッドをdoPostに書き換えて1と同じ結果を得るためには、どこを変更したらいいでしょうか?

また、その際に何か目に見える違いはありますか?

 

4.リンクを使いリクエストパラメータを渡す

以下③のリンクをクリックしただけで上記と同じ結果を得られるようにしなさい。

 

<ソースコード③ link.html>

<!DOCTYPE html>
<html lang="ja">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>リンクによるGETリクエストトサンプル</title>
    </head>
    <body>
        <p>下の「リンク」の文字をクリックしてください。</p>
        <p>挨拶をする<a href="③">リンク</a></p>   
    </body>
</html>

 

5.例外発生時の対応

上記1のプログラムでは年齢に整数値以外を入れると「HTTP Status 500 - Internal Server Error」が発生する。

JavaSEの復習も兼ねて、このような例外が発生したときには以下のようなメッセージが表示されるようにプログラムを修正しなさい。

 

 

6.オリジナル問題作成

将来の後輩のために良い問題が出来たら教えてください。

 

JavaWebアプリケーションの問題集に戻る