Exemplo n.º 1
0
  /**
   * GET メソッドを処理する。
   *
   * @param request リクエスト (入力)
   * @param response レスポンス (出力)
   */
  public void processGet(Request request, Response response) {
    // セッション ID とユーザー名を取得する。
    String sessionId = request.getCookie("session_id");
    try (ShopDB db = new ShopDB()) {
      if (sessionId == null || !db.checkSessionId(sessionId)) {
        response.setError(Response.STATUS_BAD_REQUEST, "セッション ID を取得できません。");
        return;
      }
      String[] names = db.getUserNames(sessionId);

      // ページを表示する。
      BasicView view = new BasicView(response);
      view.printHead(getName());

      view.printTag(
          "p", "色売り屋へようこそ。" + view.linkTag("トップ", "/") + " | " + view.linkTag("カート", "/cart"));

      if (names == null) {
        // ログインフォームを表示する。
        view.printTag("p", "ログインしてください。");
        view.printOpenFormTag("POST", "/login");
        response.println("ユーザー名:" + view.inputTag("text", "username", null) + "<br>");
        response.println("パスワード:" + view.inputTag("password", "password", null) + "<br>");
        view.printInputTag("submit", null, "ログイン");
        view.printCloseTag("form");
      } else {
        // ログアウトボタンを表示する。
        view.printTag("p", "ようこそ、" + names[2] + "さん。");
        view.printTag("p", view.linkTag("購入履歴を見る", "/sales"));
        view.printOpenFormTag("POST", "/login");
        view.printInputTag("hidden", "logout", names[1]);
        view.printInputTag("submit", null, "ログアウト");
        view.printCloseTag("form");
      }

      view.printTail();
    } catch (ClassNotFoundException | SQLException e) {
      response.setError(Response.STATUS_ERROR, e);
      return;
    }
  }