JSP & Servlet-3日目

JSP&Servlet

ここまでの内容で少し演習問題を解いてみよう!

Q1.jspを使って以下を出力せよ。リストの表示にはol(OrderedList)を使うこと。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    String[] names={"足立","石川","宇佐美","大野"};
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<ol>
<% for(String name:names){ %>
<li><%=name %></li>
<%} %>
</ol>
</body>
</html>

Q2.jspを使用し以下のような九九表を出力せよ。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table border="1">
<caption>九九表</caption>
	<% for(int i=1;i<=9;i++){ %>
		<tr>
			<%for(int j=1;j<=9;j++){ %>
			<td><%=i*j %></td>
			<%} %>
		</tr>
	<%} %>
</table>
</body>
</html>

Q3.以下のような質問出し、それに解答すると「正解!」または「残念」と出力するアプリを作成せよ。フォームはjsp,結果表示はServletを使うこと。
[実行例]
●スタート画面(問題が表示される)

●はいを選択して、送信ボタンを押すと「正解!」と表示される。

●form.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<title>Insert title here</title>
</head>
<body>
<form action="/q3/Result" method="post">
スペイン語で月曜はLunesである。
<label><input type="radio" name="ans" value="yes">はい</label>
<label><input type="radio" name="ans" value="no">いいえ</label>
<input type="submit" value="送信">
</form>
</body>
</html>

●Result.java

package controller;
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("/Result")
public class Result extends HttpServlet {
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String ans=request.getParameter("ans");
		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>スペイン語</title>");
		out.println("</head>");
		out.println("<body>");
		out.printf("<p>%s</p>",ans.equals("yes")? "正解!":"不正解");
		out.println("</body>");
		out.println("</html>");
	}
}

Q4.以下のようなフォームを作成せよ。フォームも結果もjspでよい。
●スタート画面

●一つも選択肢なかった場合は[選択なし]選択した場合は選択された項目をカンマで連結して出力する。(下図はWindowsとLinuxを選択)

●lesson4.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<% if (request.getParameter("btn") == null){ %>
	<form>
	<p>お使いのOSを選んでください</p>
	<input type="checkbox" name="os" value="win">Windows
	<input type="checkbox" name="os" value="mac">Mac
	<input type="checkbox" name="os" value="linux">Linux
	<input type="submit" name="btn" value="送信">
	</form>
<%}else{
	String[] oss=request.getParameterValues("os");
	String result=oss==null ? "[選択なし]":String.join(",",oss);
	%>
	<p><%=result %></p>
<%} %>
</body>
</html>

Q5.以下のようなフォームを作成せよ。フォームも結果もjsp、送信方法はGETとする。
select-optionの項目とそれを選んだ時の出力は以下とする。
[好きな食べ物を一つ選んでください]-[選択なし]
[寿司]-[やっぱ寿司ですよね!]
[ラーメン]-[バリエーション豊富だし、ラーメン最高!]
[焼肉]-[やっぱ肉ですよね!]
●スタート画面

●寿司を選択

●lesson5.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>
    <%
    String[] options={
    		"好きな食べ物を一つ選んでください",
    		"寿司",
    		"ラーメン",
    		"焼き肉",
    };
    String[] results={
    		"選択なし",
    		"やっぱ寿司ですよね!",
    		"バリエーション豊富だし、ラーメン最高!",
    		"やっぱ肉ですよね!",
    };
    %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%if(request.getParameter("btn") == null){ %>
	<form>
	<select name="favo">
	<% for(int i=0;i<options.length;i++){ %>
		<option value="<%=i %>"><%=options[i] %></option>
	<%} %>
	</select>
	<input type="submit" value="送信" name="btn">
	</form>
<%}else{ %>
	<%
	String index=request.getParameter("favo");
	%>
	<p><%=results[Integer.parseInt(index)] %></p>
<%} %>
</body>
</html>

コメント

タイトルとURLをコピーしました