モンスターを倒すとレベルが上がっていくサイトを作成したいです。現状ではレベルを保持することができていません。MonsterServletのどこをどのように改善すればよいのかわからないのでご教授お願いいたします
MonsterServlet
1import java.io.IOException; 2 3import javax.servlet.RequestDispatcher; 4import javax.servlet.ServletException; 5import javax.servlet.annotation.WebServlet; 6import javax.servlet.http.HttpServlet; 7import javax.servlet.http.HttpServletRequest; 8import javax.servlet.http.HttpServletResponse; 9import javax.servlet.http.HttpSession; 10 11import model.MonsterBean; 12import model.MonsterLogic; 13import model.PlayerBean; 14 15@WebServlet("/monster") 16public class MonsterServlet extends HttpServlet { 17 18 final MonsterLogic logic = new MonsterLogic(); 19 20 @Override 21 protected void doGet(HttpServletRequest request, HttpServletResponse response) 22 throws IOException, ServletException { 23 24 PlayerBean playerBean = new PlayerBean("noName"); 25 HttpSession session = request.getSession(); 26 session.setAttribute("playerBean", playerBean); 27 28 //モンスターリストを取得して、リクエストスコープに格納 29 request.setAttribute("monsters", logic.getMonsters()); 30 31 //モンスター選択画面に遷移 32 RequestDispatcher dispatcher = request.getRequestDispatcher("WEB-INF/jsp/Monster.jsp"); 33 dispatcher.forward(request, response); 34 35 } 36 37 @Override 38 protected void doPost(HttpServletRequest request, HttpServletResponse response) 39 throws IOException, ServletException { 40 41 request.setCharacterEncoding("UTF-8"); 42 PlayerBean playerBean = new PlayerBean("noName"); 43 44 request.setCharacterEncoding("UTF-8"); 45 //リクエストスコープにあるモンスターのIDを確認 46 int monsterId = Integer.parseInt(request.getParameter("monsterId")); 47 //モンスターの情報を取得 48 MonsterBean monsterBean = logic.getMonster(monsterId); 49 //モンスターとの勝敗結果を取得 50 boolean won = logic.battle(monsterBean.getWinRate()); 51 52 //結果の画面で表示するメッセージを格納するための変数 53 String msg = null; 54 55 //勝利した場合 56 if (won) { 57 58 //モンスターから得た経験値をレベルに加算 59 int level = playerBean.getLevel() + monsterBean.getExperience(); 60 playerBean.setLevel(level); 61 //勝利メッセージを設定 62 msg = monsterBean.getName() + "に勝利した!" + playerBean.getUserName() + "は" + playerBean.getLevel() 63 + "レベルになった!"; 64 65 } else { 66 //負けたため、レベルを1にして負けカウントを増やす 67 playerBean.setLevel(1); 68 playerBean.setLoseCount(1); 69 70 //敗北メッセージを設定 71 msg = monsterBean.getName() + "に敗北した・・・。" + playerBean.getUserName() + "は1レベルに戻った。敗北回数:" 72 + playerBean.getLoseCount(); 73 } 74 75 HttpSession session = request.getSession(); 76 session.setAttribute("playerBean", playerBean); 77 78 79 //結果の画面用のメッセージをリクエストスコープに設定 80 request.setAttribute("msg", msg); 81 82 //対戦結果画面に遷移 83 RequestDispatcher dispatcher = request.getRequestDispatcher("WEB-INF/jsp/MonsterResult.jsp"); 84 dispatcher.forward(request, response); 85 86 } 87 88} 89
PlayerBean
1import java.io.Serializable; 2 3public class PlayerBean implements Serializable { 4 5 private static final long serialVersionUID = 1L; 6 7 private String userName; 8 private int level; 9 private int loseCount; 10 11 public PlayerBean(String userName) { 12 this.userName = userName; 13 //初期レベル 14 this.level = 1; 15 this.loseCount = 0; 16 } 17 18 public String getUserName() { 19 return userName; 20 } 21 22 public int getLevel() { 23 return level; 24 } 25 26 public void setLevel(int level) { 27 this.level = level; 28 } 29 30 public int getLoseCount() { 31 return loseCount; 32 } 33 34 public void setLoseCount(int loseCount) { 35 this.loseCount += loseCount; 36 } 37 38} 39
MonsterResult.jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@page import="java.util.List"%> 4<%@page import="model.MonsterBean"%> 5 6<% 7 //スコープからメッセージを取得 8 String msg = (String) request.getAttribute("msg"); 9%> 10 11<!DOCTYPE html> 12<html> 13<head> 14<meta charset=UTF-8> 15<meta http-equiv="X-UA-Compatible" content="IE=edge"> 16<meta name="viewport" content="width=device-width, initial-scale=1"> 17<title>対戦結果</title> 18<!-- Bootstrapの読み込み --> 19<link 20 href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" 21 rel="stylesheet"> 22<!-- jQuery読み込み --> 23<script 24 src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 25<!-- BootstrapのJS読み込み --> 26<script 27 src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> 28</head> 29<body class="bg-warning"> 30 <header> 31 <nav class="navbar navbar-default"> 32 <div class="container-fluid"> 33 <div class="collapse navbar-collapse"> 34 <ul class="nav navbar-nav"> 35 <li><div class="pull-left">${playerBean.userName} のレベル: 36 ${playerBean.level}</div></li> 37 </ul> 38 <ul class="nav navbar-nav navbar-right"> 39 <li><a href="/WExam0431/logout" role="button">ログアウト</a></li> 40 </ul> 41 </div> 42 </div> 43 </nav> 44 </header> 45 <div class="container"> 46 47 <p class="alert alert-info"><%=msg%></p> 48 <div class="col-md-2 col-md-offset-5"> 49 <a class="btn btn-primary" href="/WExam0431/monster" role="button">戻る</a> 50 </div> 51 </div> 52</body> 53</html>