質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

1回答

5967閲覧

servletで作成したカレンダーをJSPで記述したい

n000n00

総合スコア25

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2016/12/25 08:45

編集2016/12/26 01:54

<追記>
現在 /* ユーザー情報を取り出す */ の部う分をJSPで記述していますが、
コンパイルエラーとなり、進めない状況です。

スクリプトレットの部分でエラーが発生しているようです。
正しい記述の仕方をご教授頂ければ幸いです。

jsp

1 <p>2006年11月</p> 2 <p> 3 <!-- ユーザー情報を取り出す --> 4 <% session = request.getSession(false); %> 5 <% Object tmp = session.getAttribute("username"); %> 6 <c:choose> 7 <c:when test="tmp == null"> 8 <% String username = ""; %> 9 </c:when> 10 <c:otherwise> 11 <% String username = (String) tmp; %> 12 </c:otherwise> 13 </c:choose> 14 <% tmp = session.getAttribute("roll"); %> 15 <% String roll; %> 16 <c:choose> 17 <c:when test="tmp == null"> 18 <% roll = ""; %> 19 </c:when> 20 <c:otherwise> 21 <% roll = (String) tmp; %> 22 </c:otherwise> 23 </c:choose> 24 ${username} さんのスケジュールです 25 <% if (roll.equals("1")) { %> 26 &nbsp;[<a href="/schedule/NewUser">ユーザーの追加</a>] 27 <% } %> 28 29 &nbsp;[<a href="/schedule/Logout">ログアウト</a>] 30 </p>

下記のservletのソースをJSPで記述しようとしていますが、
うまくいきません。
el式 coreタグも利用しています。
最終的にはservletとJSPを連携してカレンダーを表示したいです。

ご教授いただけないでしょうか。
ざっくりした質問で申し訳ないですが、よろしくお願いします。

Java

1public class MonthView extends HttpServlet { 2 3 protected Connection con = null; 4 5 @Override 6 public void init() throws ServletException { 7 8 try { 9 con = DBManager.getConnection(); 10 } catch (Exception e) { 11 log("Exception:" + e.getMessage()); 12 } 13 } 14 15 public void destory() { 16 try { 17 if (con != null) { 18 con.close(); 19 } 20 } catch (SQLException e) { 21 log("SQLException:" + e.getMessage()); 22 } 23 } 24 25 @Override 26 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 27 28 response.setContentType("text/html;charset=UTF-8"); 29 PrintWriter out = response.getWriter(); 30 31 int[] calendarDay; 32 int count; 33 34 int year; 35 int month; 36 int day = 1; 37 38 calendarDay = new int[42]; /* 最大で7日×6週 */ 39 count = 0; 40 41 String param = request.getParameter("YEAR"); 42 if (param == null || param.length() == 0) { 43 year = -999; 44 } else { 45 try { 46 year = Integer.parseInt(param); 47 } catch (NumberFormatException e) { 48 year = -999; 49 } 50 } 51 52 param = request.getParameter("MONTH"); 53 if (param == null || param.length() == 0) { 54 month = -999; 55 } else { 56 try { 57 month = Integer.parseInt(param); 58 } catch (NumberFormatException e) { 59 month = -999; 60 } 61 } 62 63 /* パラメータが指定されていない場合は本日の日付を設定 */ 64 if (year == -999 || month == -999) { 65 Calendar calendar = Calendar.getInstance(); 66 year = calendar.get(Calendar.YEAR); 67 month = calendar.get(Calendar.MONTH); 68 day = calendar.get(Calendar.DATE); 69 } else { 70 if (month == 12) { 71 month = 0; 72 year++; 73 } 74 75 if (month == -1) { 76 month = 11; 77 year--; 78 } 79 } 80 81 /* ユーザー情報を取り出す */ 82 HttpSession session = request.getSession(false); 83 Object tmp = session.getAttribute("username"); 84 85 String username; 86 if (tmp == null) { 87 username = ""; 88 } else { 89 username = (String) tmp; 90 } 91 92 tmp = session.getAttribute("userid"); 93 int userid; 94 if (tmp == null) { 95 userid = 0; 96 } else { 97 userid = Integer.parseInt((String) tmp); 98 } 99 100 tmp = session.getAttribute("roll"); 101 String roll; 102 if (tmp == null) { 103 roll = ""; 104 } else { 105 roll = (String) tmp; 106 } 107 108 StringBuffer sb = new StringBuffer(); 109 110 sb.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0.1//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">"); 111 112 sb.append("<html lang=\"ja\">"); 113 sb.append("<head>"); 114 sb.append("<meta http-equiv=\"Content-Type\" Content=\"text/html;charset=Shift_JIS\">"); 115 116 sb.append("<title>スケジュール管理</title>"); 117 118 sb.append("<style>"); 119 sb.append("table{border:1px solid #a9a9a9;width:90%;padding:0px;margin:0px;border-collapse:collapse;}"); 120 sb.append( 121 "td{width:12%;border-top:1px solid #a9a9a9;border-left:1px solid #a9a9a9;vertical-align:top;margin:0px;padding:2px;}"); 122 sb.append("td.week{background-color:#f0f8ff;text-align:center;}"); 123 sb.append("td.day{background-color:#f5f5f5;text-align:right;font-size:0.75em;}"); 124 sb.append("td.otherday{background-color:#f5f5f5;color:#d3d3d3;text-align:right;font-size:0.75em;}"); 125 sb.append("td.sche{background-color:#fffffff;text-align:left;height:80px;}"); 126 sb.append("img{border:0px;}"); 127 sb.append("span.small{font-size:0.75em;}"); 128 sb.append("</style>"); 129 130 sb.append("</head>"); 131 sb.append("<body>"); 132 133 sb.append("<p>"); 134 sb.append(username); 135 sb.append("さんのスケジュールです"); 136 137 if (roll.equals("1")) { 138 sb.append(" [<a href=\"/schedule/NewUser\">ユーザーの追加</a>]"); 139 } 140 141 sb.append(" [<a href=\"/schedule/Logout\">ログアウト</a>]"); 142 143 sb.append("</p>"); 144 145 /* 日付データを配列に格納 */ 146 count = setDateArray(year, month, day, calendarDay, count); 147 148 /* 年月のリンク作成 */ 149 sb.append(createMonthLink(year, month)); 150 151 sb.append("<table>"); 152 153 sb.append( 154 "<tr><td class=\"week\">日</td><td class=\"week\">月</td><td class=\"week\">火</td><td class=\"week\">水</td><td class=\"week\">木</td><td class=\"week\">金</td><td class=\"week\">土</td></tr>"); 155 156 int weekCount = count / 7; 157 158 for (int i = 0; i < weekCount; i++) { 159 /* スケジュールの日付画面を作成する */ 160 sb.append("<tr>"); 161 162 for (int j = i * 7; j < i * 7 + 7; j++) { 163 if (calendarDay[j] > 35) { 164 sb.append("<td class=\"otherday\">"); 165 sb.append(calendarDay[j] - 35); 166 } else { 167 sb.append("<td class=\"day\">"); 168 sb.append(calendarDay[j]); 169 } 170 sb.append("</td>"); 171 } 172 173 sb.append("</tr>"); 174 175 /* カレンダーのスケジュール登録画面を作成する */ 176 sb.append(createScheduleStr(year, month, i * 7, calendarDay, userid)); 177 } 178 179 sb.append("</table>"); 180 181 sb.append("</body>"); 182 sb.append("</html>"); 183 184 out.println(new String(sb)); 185 } 186 187 /* スケジュール登録へのリンクを設定する */ 188 protected String createScheduleStr(int year, int month, int startDayNo, int[] calendarDay, int userid) { 189 StringBuffer sb = new StringBuffer(); 190 191 sb.append("<tr>"); 192 193 for (int i = startDayNo; i < startDayNo + 7; i++) { 194 if (calendarDay[i] > 35) { 195 /* 前月及び翌月の箇所にはアイコンは表示しない */ 196 sb.append("<td class=\"sche\"></td>"); 197 } else { 198 sb.append("<td class=\"sche\">"); 199 sb.append("<a href=\"/schedule/NewSchedule"); 200 201 /* パラメータの作成 */ 202 sb.append("?YEAR="); 203 sb.append(year); 204 sb.append("&MONTH="); 205 sb.append(month); 206 sb.append("&DAY="); 207 sb.append(calendarDay[i]); 208 209 sb.append("\">"); 210 sb.append("<img src=\"./img/memo.png\" width=\"14\" height=\"16\">"); 211 sb.append("</a><br>"); 212 213 /* スケジュールの表示 */ 214 215 sb.append("<span class=\"small\">"); 216 217 try { 218 String sql = "SELECT * FROM schedule WHERE userid = ? and scheduledate = ? ORDER BY starttime"; 219 PreparedStatement ps = con.prepareStatement(sql); 220 221 String startDateStr = year + "-" + (month + 1) + "-" + calendarDay[i]; 222 ps.setInt(1, userid); 223 ps.setString(2, startDateStr); 224 225 ResultSet rs = ps.executeQuery(); 226 227 while (rs.next()) { 228 int id = rs.getInt("id"); 229 String starttime = rs.getString("starttime"); 230 String endtime = rs.getString("endtime"); 231 String schedule = rs.getString("schedule"); 232 233 if (starttime == null || endtime == null) { 234 sb.append("* "); 235 } else { 236 sb.append(starttime.substring(0, 5)); 237 sb.append("-"); 238 sb.append(endtime.substring(0, 5)); 239 sb.append(" "); 240 } 241 sb.append("<a href=\"/schedule/ScheduleView?ID="); 242 sb.append(id); 243 sb.append("\">"); 244 sb.append(schedule); 245 sb.append("</a><br>"); 246 } 247 248 rs.close(); 249 ps.close(); 250 251 } catch (SQLException e) { 252 log("SQLException:" + e.getMessage()); 253 } 254 255 sb.append("</span>"); 256 257 sb.append("</td>"); 258 } 259 sb.append("</td>"); 260 } 261 262 sb.append("</tr>"); 263 264 return (new String(sb)); 265 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

amadablam

2016/12/25 23:43

「うまくいきません」は最もまずい質問の仕方の1つです。うまくいかない状況を具体的に記述しましょう。
amadablam

2016/12/26 05:03

JSPでコンパイル・エラーということで「うまくいきません」よりは適切な質問ですが、コンパイル・エラーの場合にはエラー・メッセージを掲載してください。問題解決にはエラー・メッセージの内容が最も重要であり、その情報が抜けていた場合、他人はどのような原因でエラーになっているのか推測できません。回答してくれる人に環境を作成さし、コードをすべて入力させてエラーを再現させようと考えるのは間違っていますよ。もっとも、環境も明示されず、提示されているコードはすべてではないため、それも不可能です。
guest

回答1

0

自己解決

申し訳ございません。
確かに丸投げな曖昧の質問でした。
次回からは精査して質問させていただきます

投稿2017/01/03 10:42

n000n00

総合スコア25

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問