広告 |
---|
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 2010年04月18日 Java総合講座 - 初心者から達人へのパスポート vol.200 セルゲイ・ランダウ バックナンバー: http://www.flsi.co.jp/Java_text/ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ------------------------------------------------------- ・現在、このメールマガジンは以下の2部構成になっています。 [1] 当初からのコース:毎週日曜の夜に発行 これは現在、中級レベルになっています。 [2] 2009年11月開講コース:毎週水曜の夜に発行 これは現在、初心者向けのレベルになっています。 ・このメールマガジンは、画面を最大化して見てください。 小さな画面で見ていると、不適切な位置で行が切れてしまう など、問題を起すことがあります。 ・このメールマガジンに掲載されているソース・コード及び 文章は特に断らない限り、すべて筆者が著作権を所有してい ます。また、これらのソース・コードは学習用のためだけに 提供しているものです。 ------------------------------------------------------- ======================================================== ◆ 01.Strutsのアプリケーション開発(プロジェクト:StrutsShop) ======================================================== 前回までで、インターネット・ショッピングのアプリケーションの処理の 基本的な流れは一通りプログラミングしましたが、forwardが"success" 以外の値の場合に対する処理をまだ実装していませんでした。 今回はそれをやりましょう。 まず、OrderProcessActionを見てみましょう。 下記に再度ソース・コードを提示します。 -------------------------------------------------------- package jp.co.flsi.lecture.struts; import java.util.Enumeration; import java.util.Vector; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import jp.co.flsi.lecture.reflect.ValueLogStringMaker; import jp.co.flsi.lecture.struts.db.Order; import jp.co.flsi.lecture.struts.db.OrderItem; import org.apache.log4j.Logger; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class OrderProcessAction extends Action { private static Logger logger = Logger.getLogger(OrderProcessAction.class); public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { logger.info("Start ..............."); try { ValueLogStringMaker stringMaker = new ValueLogStringMaker(); logger.info("Method parameter: <<<<<" + stringMaker.getValues("mapping", mapping)); logger.info(">>>>>"); logger.info("Method parameter: <<<<<" + stringMaker.getValues("form", form)); logger.info(">>>>>"); logger.info("Method parameter: <<<<<" + stringMaker.getValues("request", request)); logger.info(">>>>>"); logger.info("Method parameter: <<<<<" + stringMaker.getValues("response", response)); logger.info(">>>>>"); HttpSession session = request.getSession(); Order anOrder = (Order)session.getAttribute("ORDER"); if (anOrder == null) { logger.info("Method return: <<<<< cartVacant (1)"); logger.info(">>>>>"); return mapping.findForward("cartVacant"); } Vector<OrderItem> orderItemList = anOrder.getOrderItems(); if (orderItemList == null) { logger.info("Method return: <<<<< cartVacant (2)"); logger.info(">>>>>"); return mapping.findForward("cartVacant"); } Enumeration<String> paramNames = (Enumeration<String>) request.getParameterNames(); // Webページ上の購入対象の商品がカートの中に入っていることのチェック用フラグ boolean orderItemFoundInCart = false; // チェック用フラグ: falseは「カートにない」を意味する while(paramNames.hasMoreElements()) { String aParamName = paramNames.nextElement(); OrderItem anOrderItem = new OrderItem(); for (OrderItem oi : anOrder.getOrderItems()) { if(aParamName.equals(oi.getItemNum())) { // そのアイテム番号がカートの中に見つかったら orderItemFoundInCart = true; // チェック用フラグを「カートにある」にセット anOrderItem.setItemNum(oi.getItemNum()); anOrderItem.setItemName(oi.getItemName()); anOrderItem.setPrice(oi.getPrice()); anOrderItem.setImage(oi.getImage()); anOrderItem.setCatName(oi.getCatName()); anOrderItem.setOrderQuantity(Integer.parseInt((String)request.getParameter(aParamName))); break; // そのアイテム番号に対する処理が終わったのでループを脱出 } } if (orderItemFoundInCart) { // そのアイテムが「カートにある」場合 anOrder.removeOrderItem(anOrderItem); // そのアイテムの古い注文情報をいったん取り除く if (anOrderItem.getOrderQuantity() > 0) { // 注文個数が0でなければ anOrder.addOrderItem(anOrderItem); // カートに入れなおす } orderItemFoundInCart = false; // チェック用フラグを「カートにない」にリセット } } if (anOrder.getOrderItems().size() < 1) { // カートの中が空になった場合 logger.info("Method return: <<<<< cartVacant (3)"); logger.info(">>>>>"); return mapping.findForward("cartVacant"); } } catch (Throwable e) { logger.error(e, e); } finally { logger.info("End ..............."); } logger.info("Method return: <<<<< success"); logger.info(">>>>>"); return mapping.findForward("success"); } } -------------------------------------------------------- このソース・コードではショッピング・カートが空の場合は、 return mapping.findForward("cartVacant"); を実行するようにしています。つまり、forwardに"cartVacant"を設定 してreturnしています。 では、ショッピング・カートが空のときに表示するWebページ(cartVacantError.jsp というファイル名にする)を下記の手順で作成しておきましょう。 ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ (1) プロジェクト・エクスプローラーのStrutsShop配下のWebContent配下の WEB-INF配下のstruts-config.xmlをダブル・クリックします。 (2) struts-config.xmlのフロー・エディターが開いたら、左側に並んでいる アイコンのうち、「ページ」をクリックし、/orderprocessのアイコンの左下 あたりの白い領域の中でクリックします。 (3) 貼り付いたアイコンの文字列を /cartVacantError.jsp に書き換えて下さい。 (4) 同様に、アイコンのうち、「進む」をクリックし、先ほどの/orderprocess のアイコンをクリックし、続いて、先ほど貼り付けた/cartVacantError.jspのアイコン をクリックします。そうすると、2つのアイコンの間に矢印の線が引かれますね。 このままだと、この矢印線を引くモードのままになっているので、いったん「選択」 というアイコンをクリックすることによってモードを解除しておいて下さい。 (5) 先ほどの矢印線に「forward1」というような文字列が付いていると思いますが、 これを cartVacant に書き換えて下さい。 (6) Ctrl + Sキーでファイルを保管しておきましょう。 ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ このままだと、/cartVacantError.jspのアイコンに警告のマーク(丸みを帯びた 橙色の小さな三角形の中にエクスクラメーション・マーク(ビックリ・マーク)が 入ったアイコン)が付いていますが、これはcartVacantError.jspというファイルが 実在しないからなので、これからそれを作成しましょう。 (1) /cartVacantError.jspのアイコンをダブル・クリックします。 (2) 「Struts JSPファイル」ウインドウが表示されたら、「完了」ボタンを クリックします。 (3) cartVacantError.jspのエディターが開いたら、下記のように編集して保管しま しょう。 -------------------------------------------------------- <%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <%@ taglib uri="/tags/struts-logic" prefix="logic" %> <%@ taglib uri="/tags/struts-html" prefix="html" %> <%@ taglib uri="/tags/struts-nested" prefix="nested" %> <html:html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>ショッピング・カート・エラー</title> </head> <body bgcolor="#77ffff" text="#fa5a00"> <h1>ショッピング・カート・エラー</h1> <font color="#ff0000">ショッピング・カートが空のため、処理を続行できません。</font> <br> まことに申し訳ありませんが、商品の検索から再度やり直してください。 <br> <br> <html:link page="/itemSelect.jsp">トップ・ページ(商品検索のページ)に戻る</html:link> </body> </html:html> -------------------------------------------------------- ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ 次に、ConfirmOrderActionを見てみましょう。 下記に再度ソース・コードを提示します。 -------------------------------------------------------- package jp.co.flsi.lecture.struts; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.Vector; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import jp.co.flsi.lecture.reflect.ValueLogStringMaker; import jp.co.flsi.lecture.security.PasswordEncryption; import jp.co.flsi.lecture.struts.db.Order; import jp.co.flsi.lecture.struts.db.OrderItem; import jp.co.flsi.lecture.struts.db.StruShopDbException; import jp.co.flsi.lecture.struts.db.User; import jp.co.flsi.lecture.struts.db.UserDbManager; import org.apache.log4j.Logger; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class ConfirmOrderAction extends Action { private static Logger logger = Logger.getLogger(ConfirmOrderAction.class); public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { logger.info("Start ..............."); UserDbManager userDbManager = new UserDbManager(); try { ValueLogStringMaker stringMaker = new ValueLogStringMaker(); logger.info("Method parameter: <<<<<" + stringMaker.getValues("mapping", mapping)); logger.info(">>>>>"); logger.info("Method parameter: <<<<<" + stringMaker.getValues("form", form)); logger.info(">>>>>"); logger.info("Method parameter: <<<<<" + stringMaker.getValues("request", request)); logger.info(">>>>>"); logger.info("Method parameter: <<<<<" + stringMaker.getValues("response", response)); logger.info(">>>>>"); HttpSession session = request.getSession(); Order anOrder = (Order)session.getAttribute("ORDER"); if (anOrder == null) { logger.info("Method return: <<<<< cartVacant (1)"); logger.info(">>>>>"); return mapping.findForward("cartVacant"); } Vector<OrderItem> orderItemList = anOrder.getOrderItems(); if (orderItemList == null) { logger.info("Method return: <<<<< cartVacant (2)"); logger.info(">>>>>"); return mapping.findForward("cartVacant"); } OrderForm orderForm = (OrderForm) form; User user = new User(); userDbManager.connect(); String maxUserid = userDbManager.getMaxTemporaryUserid(); user.setUserType("T"); // 一時的顧客のユーザー・タイプは"T" NumberFormat formatter = new DecimalFormat("0000000"); user.setUserid(formatter.format(Integer.parseInt(maxUserid) + 1)); user.setPassword(PasswordEncryption.encrypt("NONE")); user.setName(orderForm.getName()); user.setZipcode(orderForm.getZipcode()); user.setAddress(orderForm.getAddress()); user.setTelno(orderForm.getTelNo()); user.setEmail(orderForm.getEmailAddress()); if (!userDbManager.insertData(user)) { logger.info("Method return: <<<<< userInsertError"); logger.info(">>>>>"); return mapping.findForward("userInsertError"); } anOrder.setUserType(user.getUserType()); anOrder.setUserId(user.getUserid()); anOrder.setPayMethod(Integer.parseInt(orderForm.getPayMethod())); session.setAttribute("USER", user); } catch (StruShopDbException e) { logger.error(e, e); } catch (Throwable e) { logger.error(e, e); } finally { try { userDbManager.disconnect(); } catch (Exception e) { logger.info("Disconnect failed or there is no connection."); } logger.info("End ..............."); } logger.info("Method return: <<<<< success"); logger.info(">>>>>"); return mapping.findForward("success"); } } -------------------------------------------------------- ここでは、先ほどと同じ return mapping.findForward("cartVacant"); のほかに、何らかの理由で顧客情報のデータベース登録に失敗した場合に return mapping.findForward("userInsertError"); を実行するようにしています。つまり、forwardに"userInsertError"を設定 してreturnしています。 では、これらに対応して、先ほどと同様にstruts-config.xmlを編集し、 顧客情報のデータベース登録に失敗したときに表示するWebページ(userInsertError.jsp というファイル名にする)を作成する作業を下記の手順で実施しましょう。 ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ (1) プロジェクト・エクスプローラーのStrutsShop配下のWebContent配下の WEB-INF配下のstruts-config.xmlをダブル・クリックします。 (2) struts-config.xmlのフロー・エディターが開いたら、左側に並んでいる アイコンのうち、「ページ」をクリックし、/confirmorderのアイコンの左下 あたりの白い領域の中でクリックします。 (3) 貼り付いたアイコンの文字列を /userInsertError.jsp に書き換えて下さい。 (4) 同様に、アイコンのうち、「進む」をクリックし、/confirmorderのアイコン をクリックし、続いて、以前貼り付けていた/cartVacantError.jspのアイコン をクリックします。そうすると、2つのアイコンの間に矢印の線が引かれますね。 このままだと、この矢印線を引くモードのままになっているので、いったん「選択」 というアイコンをクリックすることによってモードを解除しておいて下さい。 (5) 先ほどの矢印線に「forward1」というような文字列が付いていると思いますが、 これを cartVacant に書き換えて下さい。 (6) 続いて再度、アイコンのうち、「進む」をクリックし、/confirmorderのアイコン をクリックし、次に、先ほど貼り付けた/userInsertError.jspのアイコン をクリックします。そうすると、2つのアイコンの間に矢印の線が引かれますね。 このままだと、この矢印線を引くモードのままになっているので、いったん「選択」 というアイコンをクリックすることによってモードを解除しておいて下さい。 (7) 先ほどの矢印線に「forward1」というような文字列が付いていると思いますが、 これを userInsertError に書き換えて下さい。 (8) Ctrl + Sキーでファイルを保管しておきましょう。 ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ このままだと、/userInsertError.jspのアイコンに警告のマーク(丸みを帯びた 橙色の小さな三角形の中にエクスクラメーション・マーク(ビックリ・マーク)が 入ったアイコン)が付いていますが、これはuserInsertError.jspというファイルが 実在しないからなので、これからそれを作成しましょう。 (1) /userInsertError.jspのアイコンをダブル・クリックします。 (2) 「Struts JSPファイル」ウインドウが表示されたら、「完了」ボタンを クリックします。 (3) userInsertError.jspのエディターが開いたら、下記のように編集して保管しま しょう。 -------------------------------------------------------- <%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <%@ taglib uri="/tags/struts-logic" prefix="logic" %> <%@ taglib uri="/tags/struts-html" prefix="html" %> <%@ taglib uri="/tags/struts-nested" prefix="nested" %> <html:html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>システム障害</title> </head> <body bgcolor="#77ffff" text="#fa5a00"> <h1>システム障害</h1> <font color="#ff0000">システム障害が発生したため、処理を続行できません。</font> <br> まことに申し訳ありませんが、システムが復帰するまでお待ち下さい。 システムの復帰には数時間かかると思われますが、詳しいことはトップ・ページにてお知らせいたします。 <br> <br> <html:link page="/itemSelect.jsp">トップ・ページ(商品検索のページ)に戻る</html:link> </body> </html:html> -------------------------------------------------------- ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ 続いて、CompleteOrderActionを見てみましょう。 下記に再度ソース・コードを提示します。 -------------------------------------------------------- package jp.co.flsi.lecture.struts; import java.util.Vector; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import jp.co.flsi.lecture.reflect.ValueLogStringMaker; import jp.co.flsi.lecture.struts.db.Order; import jp.co.flsi.lecture.struts.db.OrderDbManager; import jp.co.flsi.lecture.struts.db.OrderItem; import jp.co.flsi.lecture.struts.db.StruShopDbException; import jp.co.flsi.lecture.struts.db.User; import org.apache.log4j.Logger; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class CompleteOrderAction extends Action { private static Logger logger = Logger.getLogger(CompleteOrderAction.class); public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { logger.info("Start ..............."); OrderDbManager orderDb = new OrderDbManager(); try { ValueLogStringMaker stringMaker = new ValueLogStringMaker(); logger.info("Method parameter: <<<<<" + stringMaker.getValues("mapping", mapping)); logger.info(">>>>>"); logger.info("Method parameter: <<<<<" + stringMaker.getValues("form", form)); logger.info(">>>>>"); logger.info("Method parameter: <<<<<" + stringMaker.getValues("request", request)); logger.info(">>>>>"); logger.info("Method parameter: <<<<<" + stringMaker.getValues("response", response)); logger.info(">>>>>"); HttpSession session = request.getSession(); Order anOrder = (Order)session.getAttribute("ORDER"); if (anOrder == null) { logger.info("Method return: <<<<< cartVacant (1)"); logger.info(">>>>>"); return mapping.findForward("cartVacant"); } Vector<OrderItem> orderItemList = anOrder.getOrderItems(); if (orderItemList == null) { logger.info("Method return: <<<<< cartVacant (2)"); logger.info(">>>>>"); return mapping.findForward("cartVacant"); } User user = (User)session.getAttribute("USER"); if (user == null) { logger.info("Method return: <<<<< userVacant"); logger.info(">>>>>"); return mapping.findForward("userVacant"); } orderDb.connect(); orderDb.insertData(anOrder); } catch (StruShopDbException e) { logger.error(e, e); } catch (Throwable e) { logger.error(e, e); } finally { try { orderDb.disconnect(); } catch (Exception e) { logger.info("Disconnect failed or there is no connection."); } logger.info("End ..............."); } logger.info("Method return: <<<<< success"); logger.info(">>>>>"); return mapping.findForward("success"); } } -------------------------------------------------------- ここでは、先ほどと同じ return mapping.findForward("cartVacant"); のほかに、顧客情報がセッションに記憶されていない場合に return mapping.findForward("userVacant"); を実行するようにしています。つまり、forwardに"userVacant"を設定 してreturnしています。 では、これらに対応して、先ほどと同様にstruts-config.xmlを編集し、 顧客情報のデータベース登録に失敗したときに表示するWebページ(userVacant.jsp というファイル名にする)を作成する作業を下記の手順で実施しましょう。 ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ (1) プロジェクト・エクスプローラーのStrutsShop配下のWebContent配下の WEB-INF配下のstruts-config.xmlをダブル・クリックします。 (2) struts-config.xmlのフロー・エディターが開いたら、左側に並んでいる アイコンのうち、「ページ」をクリックし、/completeorderのアイコンの左下 あたりの白い領域の中でクリックします。 (3) 貼り付いたアイコンの文字列を /userVacant.jsp に書き換えて下さい。 (4) 同様に、アイコンのうち、「進む」をクリックし、/completeorderのアイコン をクリックし、続いて、以前貼り付けていた/cartVacantError.jspのアイコン をクリックします。そうすると、2つのアイコンの間に矢印の線が引かれますね。 このままだと、この矢印線を引くモードのままになっているので、いったん「選択」 というアイコンをクリックすることによってモードを解除しておいて下さい。 (5) 先ほどの矢印線に「forward1」というような文字列が付いていると思いますが、 これを cartVacant に書き換えて下さい。 (6) 続いて再度、アイコンのうち、「進む」をクリックし、/completeorderのアイコン をクリックし、次に、先ほど貼り付けた/userVacant.jspのアイコン をクリックします。そうすると、2つのアイコンの間に矢印の線が引かれますね。 このままだと、この矢印線を引くモードのままになっているので、いったん「選択」 というアイコンをクリックすることによってモードを解除しておいて下さい。 (7) 先ほどの矢印線に「forward1」というような文字列が付いていると思いますが、 これを userVacant に書き換えて下さい。 (8) Ctrl + Sキーでファイルを保管しておきましょう。 ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ このままだと、/userVacant.jspのアイコンに警告のマーク(丸みを帯びた 橙色の小さな三角形の中にエクスクラメーション・マーク(ビックリ・マーク)が 入ったアイコン)が付いていますが、これはuserVacant.jspというファイルが 実在しないからなので、これからそれを作成しましょう。 (1) /userVacant.jspのアイコンをダブル・クリックします。 (2) 「Struts JSPファイル」ウインドウが表示されたら、「完了」ボタンを クリックします。 (3) userVacant.jspのエディターが開いたら、下記のように編集して保管しま しょう。 -------------------------------------------------------- <%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <%@ taglib uri="/tags/struts-logic" prefix="logic" %> <%@ taglib uri="/tags/struts-html" prefix="html" %> <%@ taglib uri="/tags/struts-nested" prefix="nested" %> <html:html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>お客様情報エラー</title> </head> <body bgcolor="#77ffff" text="#fa5a00"> <h1>お客様情報エラー</h1> <font color="#ff0000">お客様の情報が見つからないため、処理を続行できません。</font> <br> まことに申し訳ありませんが、商品の検索から再度やり直してください。 <br> <br> <html:link page="/itemSelect.jsp">トップ・ページ(商品検索のページ)に戻る</html:link> </body> </html:html> -------------------------------------------------------- 以上で一通り作業が終わりましたが、最後にstruts-config.xmlがどうなっているのか、 struts-config.xmlのソース・エディターを開いて見て下さい。 struts-config.xmlのソース・コードの中の -------------------------------------------------------- <action path="/orderprocess" name="cartForm" type="jp.co.flsi.lecture.struts.OrderProcessAction" scope="request" validate="true" input="/cart.jsp"> <forward name="success" path="/order.jsp"/> <forward name="cartVacant" path="/cartVacantError.jsp"/> </action> <action path="/confirmorder" name="orderForm" type="jp.co.flsi.lecture.struts.ConfirmOrderAction" scope="request" input="/order.jsp"> <forward name="success" path="/confirmOrder.jsp"/> <forward name="cartVacant" path="/cartVacantError.jsp"/> <forward name="userInsertError" path="/userInsertError.jsp"/> </action> <action path="/completeorder" name="confirmOrderForm" type="jp.co.flsi.lecture.struts.CompleteOrderAction" scope="request" input="/confirmOrder.jsp"> <forward name="success" path="/completeOrder.jsp"/> <forward name="cartVacant" path="/cartVacantError.jsp"/> <forward name="userVacant" path="/userVacant.jsp"/> </action> -------------------------------------------------------- という行を見ると、以前より<forward>タグの行が増えていることがわかりますね。 すなわち、 -------------------------------------------------------- ・ ・ ・ <forward name="cartVacant" path="/cartVacantError.jsp"/> ・ ・ ・ <forward name="cartVacant" path="/cartVacantError.jsp"/> <forward name="userInsertError" path="/userInsertError.jsp"/> ・ ・ ・ <forward name="cartVacant" path="/cartVacantError.jsp"/> <forward name="userVacant" path="/userVacant.jsp"/> -------------------------------------------------------- の行がそれぞれ追加されています。これらが先ほどフロー・エディターでビジュアル に操作を行ったときに、自動的に生成されたコードです。 ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ (次回に続く) では、今日はここまでにします。 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ★ホームページ: http://www.flsi.co.jp/Java_text/ ★このメールマガジンは 「まぐまぐ(http://www.mag2.com)」 を利用して発行しています。 ★バックナンバーは http://www.flsi.co.jp/Java_text/ にあります。 ★このメールマガジンの登録/解除は下記Webページでできます。 http://www.mag2.com/m/0000193915.html ★このメールマガジンへの質問は下記Webページにて受け付けて います。わからない所がありましたら、どしどしと質問をお寄 せください。 http://www.flsi.co.jp/Java_text/ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ Copyright (C) 2010 Future Lifestyle Inc. 不許無断複製 |