弊社の新人エンジニア研修向けのJSP Servletの問題集です。
1.フォワードでリクエストスコープを利用する
サーブレットSenderからReceiverにリクエストスコープを使ってメッセージを送りたい。
以下のソースコードの①~③を埋めよ。
<出力例>
message:Hello from Sender.
<ソースコード①>
import java.io.IOException; import javax.servlet.RequestDispatcher; 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("/Sender") public class Sender extends HttpServlet { @Override public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { String message = "Hello from Sender."; req.//①ここでリクエストスコープにmessageを保存する RequestDispatcher rd =//②ここでRequestDispatcherクラスのオブジェクトrdを用意する rd.//③ここでフォワード処理をする } }
<ソースコード②>
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("/Receiver") public class Receiver extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { String message = (String) req.getAttribute("message"); res.setContentType("text/html; charset=UTF-8"); PrintWriter out = res.getWriter(); out.println("<html>"); out.println("<body>"); out.println("message:" + message); out.println("<br>"); out.println("</body>"); out.println("</html>"); out.flush(); out.close(); } }
2.リダイレクトおみくじ.
あなたの好きなWebサイトを3つ以上選び、乱数の結果によってそれぞれのサイトを表示するプログラムを作りなさい。
switch文を使うこと。
乱数を発生させるにはRandomクラスのnextInt()メソッドを使うと便利です。0 から引数に指定した値未満の整数を返します。
<ソースコード>
import java.io.IOException; import java.util.Random; 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(urlPatterns = {"/RedirectOmikuji"}) public class RedirectOmikuji extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Random rd = new Random(); int num = rd.nextInt(3); System.out.println(num); String url = ""; switch (num) { //この後の処理を書く