`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 (Calculator) session.getAttribute("lifecycle_cal"); 022 if (cal == null) { 023 try { 024 InitialContext ctx = new InitialContext(); 025 cal = (Calculator) ctx.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>`