前提・実現したいこと
サーブレットのdogetメソッド内にて記述した、Math.randomでおみくじのようにランダムに文字列を表示したい。
発生している問題・エラーメッセージ
大吉しか出力されずに、ランダムにならずに出力されている
該当のソースコード
jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3<!DOCTYPE html> 4<html lang="ja"> 5 <head> 6 <meta charset="UTF-8"> 7 <title>おみくじゲーム</title> 8 </head> 9 <body> 10 <h1>今日のおみくじ</h1> 11 <form method="post" action="/first_webapp/OmikujiServlet"> 12 <label for="username">氏名</label><br /> 13 <input type="text" name="username" /> 14 <br /><br /> 15 16 <button type="submit" name="omikuji_result">占う!</button> 17 </form> 18 </body> 19</html>
servlet
1package test; 2 3import java.io.IOException; 4import java.util.ArrayList; 5import java.util.List; 6 7import javax.servlet.RequestDispatcher; 8import javax.servlet.ServletException; 9import javax.servlet.annotation.WebServlet; 10import javax.servlet.http.HttpServlet; 11import javax.servlet.http.HttpServletRequest; 12import javax.servlet.http.HttpServletResponse; 13 14/** 15 * Servlet implementation class OmikujiServlet 16 */ 17@WebServlet("/OmikujiServlet") 18public class OmikujiServlet extends HttpServlet { 19 private static final long serialVersionUID = 1L; 20 21 /** 22 * @see HttpServlet#HttpServlet() 23 */ 24 public OmikujiServlet() { 25 super(); 26 // TODO Auto-generated constructor stub 27 } 28 29 /** 30 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 31 */ 32 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 33 String username=request.getParameter("username"); 34 String[] omikuji_results={"大吉", "吉", "中吉", "小吉", "末吉", "凶"}; 35 36 37 List<String>errors=new ArrayList<String>(); 38 39 if(username==null||username.equals("")){; 40 errors.add("氏名を入力してください"); 41 } 42 43 if(errors.size()>0){ 44 request.setAttribute("errors", errors); 45 }else{ 46 request.setAttribute("username", username); 47 request.setAttribute("omikuji_results", omikuji_results[(int)(Math.random())*6]); 48 } 49 50 RequestDispatcher rd=request.getRequestDispatcher("/WEB-INF/Omikuji_result.jsp"); 51 rd.forward(request, response); 52 } 53 54 /** 55 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 56 */ 57 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 58 // TODO Auto-generated method stub 59 doGet(request, response); 60 } 61 62} 63
jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3<!DOCTYPE html> 4<html lang="ja"> 5 <head> 6 <meta charset="UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body> 10 <c:choose> 11 12 <c:when test="${errors != null}"> 13 <h1>入力内容にエラーがあります</h1> 14 <ul> 15 <c:forEach var="error" items="${errors}"> 16 <li><c:out value="${error}" /></li> 17 </c:forEach> 18 </ul> 19 </c:when> 20 21 <c:otherwise> 22 23 <h1>本日のおみくじ結果</h1> 24 <td><c:out value="${username }"/>さんの今日の運勢は<c:out value="${omikuji_results}"/></td> 25 </c:otherwise> 26 </c:choose> 27 </body> 28</html>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。