calculator.jsp
001 <%page contentType="text/html; charset=Shift_JIS" %>
002 <%page import="trail.lifecycle.*,
003                  javax.naming.*,
004                  java.text.*,
005                  java.util.ArrayList,
006                  java.security.Principal"%>
007 
008 <%!
009   private NumberFormat nf = null;
010 
011   public void jspInit () {
012     nf = NumberFormat.getInstance();
013     nf.setMaximumFractionDigits(2);
014   }
015 %>
016 
017 <html>
018 
019 <%
020   Calculator cal =
021       (Calculatorsession.getAttribute("lifecycle_cal");
022   if (cal == null) {
023     try {
024       InitialContext ctx = new InitialContext();
025       cal = (Calculatorctx.lookup(
026                 "EJB3Trail/SessionCalculator/local");
027       session.setAttribute ("lifecycle_cal", cal);
028     catch (Exception e) {
029       e.printStackTrace ();
030     }
031   }
032 
033   if ("Logout".equals(request.getParameter("action"))) {
034     cal.stopSession ();
035     session.setAttribute ("lifecycle_cal"null);
036 %>
037 <head><meta http-equiv="REFRESH" content="0; URL=calculator.jsp"></head>
038 <%
039       return;
040   }
041 
042   String result;
043 
044   int start = 25;
045   int end = 65;
046   double growthrate = 0.08;
047   double saving = 300.0;
048 
049   try {
050     start = Integer.parseInt(request.getParameter ("start"));
051     end = Integer.parseInt(request.getParameter ("end"));
052     growthrate = Double.parseDouble(request.getParameter ("growthrate"));
053     saving = Double.parseDouble(request.getParameter ("saving"));
054 
055     double res = cal.calculate(start, end, growthrate, saving);
056     result = nf.format(res);
057 
058   catch (Exception e) {
059     // e.printStackTrace ();
060     result = "Not valid";
061   }
062 %>
063 
064 <body>
065 
066 <p><center>
067 <form action="calculator.jsp" method="POST">
068   <input type="hidden" name="action" value="Logout"><br/>
069   <input type="submit" value="現在のセッションを終了する">
070 </form>
071 </center></p>
072 
073 <p>セッション履歴機能付きの投資計算プログラム<br/>
074 
075 この計算プログラムは<b><%=SessionRecord.totalSess%></b>個のセッション(つまり、ユーザ)を処理しました。これらのうち、<b><%=SessionRecord.activeSess%></b>個のセッションが現在アクティブです。アクティブなセッションのうち、<b><%=SessionRecord.pausedSess%></b>個のセッションが現在キャッシュに退避されています。<br/>
076 
077 <form action="calculator.jsp" method="POST">
078   開始年齢 = <input type="text" name="start" value="<%=start%>"><br/>
079   終了年齢 = <input type="text" name="end" value="<%=end%>"><br/>
080   年成長率 = <input type="text" name="growthrate" value="<%=growthrate%>"><br/>
081   月掛金額 = <input type="text" name="saving" value="<%=saving%>"><br/>
082   <input type="submit" value="計算">
083   <INPUT type="button" value="閉じる" onClick="window.close()">
084 </form>
085 </p>
086 
087 <p>最新の計算結果:終了年齢での合計投資額は、
088 <b><%=result%></b></p>
089 
090 <p><i>過去の計算結果</i><br/>
091 <%
092   int entries = cal.getStarts().size();
093 %>
094 <table>
095 <tr>
096 <td>開始年齢</td>
097 <td>終了年齢</td>
098 <td>年成長率</td>
099 <td>月掛金額</td>
100 <td><b>合計投資額</b></td>
101 </tr>
102 
103 <%
104   for (int i = 0; i < entries; i++) {
105 %>
106 
107 <tr>
108 <td><%=cal.getStarts().get(i)%></td>
109 <td><%=cal.getEnds().get(i)%></td>
110 <td><%=nf.format(cal.getGrowthrates().get(i))%></td>
111 <td><%=nf.format(cal.getSavings().get(i))%></td>
112 <td><%=nf.format(cal.getResults().get(i))%></td>
113 </tr>
114 
115 <%
116   }
117 %>
118 </table></p>
119 
120 </body></html>