package jp.co.wownet.education.servlet; import java.io.*; import java.util.*; //サーブレット import javax.servlet.*; import javax.servlet.http.*; /** セッションを利用するショッピングシステムです。 @author Fumitaka Makino */ public class Shop01 extends HttpServlet { /** 商品配列 */ private Goods[] goodsList = null; /** ショッピングカートをセッションにセットするときの引数 */ protected static String CART_KEY = "CART"; /** リクエストでオーダー商品の番号を取得するときの引数 */ protected static String ORDER_KEY = "order"; /** サーブレットの初期化処理です。 商品リストをフィールドにセットしています。 @exception ServletException 何らかの問題が発生したときにスロー */ public void init() throws ServletException { ArrayList al = new ArrayList(); al.add( new Goods("えんぴつ",50)); al.add( new Goods("消しゴム",50)); al.add( new Goods("タブレットPC",200000)); al.add( new Goods("CLIE TG50",40000)); //フィールドへの配列のセット goodsList = (Goods[])al.toArray(new Goods[0]); } /** HTTP命令のGETに対応するメソッドで、スーパークラスのdoGetを オーバーライドしています。WEBサーバーに対してGETによって要 求があったときにdoGetが呼ばれます。 @param request HTTPリクエストされたときの情報等がカプセル化されたオブジェクト @param response 一般的にブラウザ(リクエスト元)に対して応答する情報をカプセル化したオブジェクト @exception ServletException サーブレット内部で発生した問題全般 @exception IOException Stream系の問題が発生したときなど */ public void doGet( HttpServletRequest request , HttpServletResponse response ) throws IOException,ServletException{ //HttpSessionの取得 HttpSession session = request.getSession(); //HttpSessionよりカートを取得 Vector vec = (Vector)session.getAttribute( CART_KEY ); if( vec==null ){ vec = new Vector(); session.setAttribute( CART_KEY , vec ); } //商品のオーダーの確認 int gNum = -1; try{ gNum = Integer.parseInt( request.getParameter(ORDER_KEY) ); }catch( NumberFormatException nfe ){ //gNumは-1となる } //商品のオーダーが存在する場合にはショッピングカートに商品を追加して自分にリダイレクト if( gNum>-1 ){ //商品を追加 vec.add( goodsList[gNum] ); //リダイレクト処理 response.sendRedirect(request.getContextPath() + "/servlet" + Shop01.class.getName()); }else{ //レスポンスからWriterの取得 response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = response.getWriter(); StringBuffer strBuf = new StringBuffer(); //HTMLを書き出す strBuf.append(""); strBuf.append(""); strBuf.append("HttpSessionの実験1"); strBuf.append(""); strBuf.append(""); strBuf.append(""); strBuf.append(""); strBuf.append("カートの中身
"); //カートの中身の出力 if( vec.size()==0 ){ strBuf.append("空です。
"); }else{ for(int i=0;i\n" ); } } strBuf.append("
"); //商品一覧の出力 for( int i=0;i" ); strBuf.append( goodsList[i].toString() ); strBuf.append( "
\n" ); } strBuf.append(""); strBuf.append(""); out.println( strBuf.toString() ); //Writerのクローズ out.close(); } } }