ホームページ php教程 php手册 Session を使用して非 Web 端末を開発する方法

Session を使用して非 Web 端末を開発する方法

Jun 21, 2016 am 09:15 AM
cookie httpclient quot session tomcat

セッション|ウェブ



Session を使用して非 Web 端末を開発する方法





プロトコル

— 著者 sunggsun @ 20:27




Session (セッション) は、Web 上での情報対話のより効果的な手段です。使いやすさ、安定性、安全性、信頼性により、多くの Web 開発者に好まれています。特にインターネットの本人認証やオンライン電子ショッピングなどで広く使われています。偶然ですが、筆者が金融プロジェクトでデータセンター基盤を開発していた際、データ送信部分における本人認証や情報のやりとりがWeb分野におけるセッション制御によく似ていると感じました。そこで、この新しいテクノロジを試してみたいと思い、多くの情報を調べた結果、Web 以外のクライアントでの情報のやり取りに Session を使用することが可能であると感じました。テストを繰り返した結果、プロジェクトに適用することに成功し、さらに一時的なデータの保存や複雑なロック状態の検出が不要になり、状態はセッションによって自動的に維持されるようになりました。

良いことを独り占めすることはできません。著者は、Web 以外の開発にセッション制御をうまく適用するための重要な技術的ポイントについてお話したいと思います。 Web 上のユーザー セッションを追跡するために Cookie が最も一般的に使用される方法であることはわかっています。Cookie が無効になっている場合、セッションの追跡には通常 URL 書き換えが使用されます。では、クッキーとは一体何なのでしょうか?定義によれば、Cookie はサーバーからクライアントに送信され、クライアント環境に保存され、すべてのクライアント要求でサーバーに送り返される情報です。たとえば、IE を使用して電子ショッピング モールにログインすると、IE は商品一覧ページを取得するだけでなく、Set-Cookie の応答ヘッダー情報も受け取ります。この情報の形式は「Set-Cookie:NAME=VALUE;Comment=COMMENT;Domain=DOMAINNMAE;Max-age=SECONDS;Path=PATH;secure;Version=1*DIGIT」です。ここで、NAME 値のペア (区切り文字を使用します)セミコロンで区切ります) は必須ですが、残りはオプションです。最も重要な情報は、当然、必須の値のペアにも含まれます。VALUE は、この Cookie の識別子の値であり、他のいくつかのオプションの値のペアについては、http: を参照してください。 //www.faqs.org/rfcs/rfc2109.html。特定の商品を購入し、ショッピング リストをサーバーに送信すると、リクエスト ヘッダーに NAME 値のペアが自動的に追加されます。Cookie が無効になっている場合は、URL の書き換えが使用されて URL リクエスト アドレスに NAME 値が追加されます。 。 Web サーバーはこのリクエストを受信すると、Cookie が存在するかどうかを確認し、それに応じてセッションを追跡します。上記の分析から理解するのは難しくありません。実際、Web サーバーは Set-Cookie ヘッダー情報に依存してセッションを追跡し、認証のために NAME 値のペアを追跡します。 Web 以外の端末を使用して Web サーバーからの応答情報を受信し、そこから Cookie ヘッダー情報を解析し、再度 Web サーバーにリクエストを送信するときに、解析した Cookie 情報を追加することは Web サーバーで実行できるのではないでしょうか。これに基づいて本人認証を行うには?
上記の分析により、コードを書くのが非常に便利になります。以下は、作成者が C++Builder 6 アプリケーションを使用して Apache Tomcat 4.0 サービス エンジンでサーブレットと対話するデモ コードです。これは参照のみを目的としています。

C++ クライアントが初めてサーバーにリクエストを送信するときのコードは次のとおりです。
TIdHTTP *HTTPClient = new TIdHTTP(NULL);
String URL= "http://localhost:8080; /Rev/servlet/test ";
try
{
try
{
HTTPClient->Get(URL);
if (HTTPClient->Response != NULL)
{
hList = HTTPClient->Response-> ;ExtraHeaders;
String cookie = hList->Values["Set-Cookie"];
int pos = cookie.Pos(";");
if (pos > 0)
Session_ID = cookie.SubString(1, pos-1);
else
Session_ID = cookie;
}
} catch(Exception& E)
{
}
} __finally
{
HTTPClient->Free();
上記のコードポイントの変数 URL各シチュエーションの割り当てに従って、サーブレットの HTTP アドレスに変換されます。変数 Session_ID はグローバル変数であり、Cookie を記録します。次の対話中に、HTTPClient リクエストの前に「HTTPClient->Request->ExtraHeaders->Add("Cookie:" + Session_ID);」を追加するだけで、Apache Tomcat が有効性を自動的に判断します。単純?

サーブレット サーバーの有効性検証も、以下に示すように、Apach Tomcat エンジンによって比較的簡単に実行されます。 setContentType ("text/html; charset=GBK");
PrintWriter out = response.getWriter();
out.println("アイデンティティ認証");
out.println("");
HttpSession session = request.getSession(false);
if (session != null) {
out. println("

本人確認

");
} else {
out.println("

認証に失敗しました

");
}
out.println("< ;/ body>");
}
コードの中で最も重要なのは「request.getSession(false);」です。パラメータが true の場合、Apache Tomcat は新しいセッションを作成します。パラメータが false の場合、Apache Tomcat は、リクエスト。したがって、セッションの永続性を維持したい場合は、パラメータ false を指定して呼び出す必要があります。ただし、セッションが長期間呼び出されない場合、Apache Tomcat はリソースを適切に使用するためにセッションを自動的に無効にします。 Apache Tomcat の管理メカニズムと構成については、http://jakarta.apache.org/ を参照してください。
このデモ コードは、C++Builder に付属する TIdHTTP コンポーネントを使用します。このコンポーネントは、Delphi にも同様の MFC があり、HTTP 仕様に従って実装されています。デバッグ時には、それぞれが使い慣れた開発プラットフォームを使用する必要があります。 認証に使用されるサーブレット プログラムが Apach Tomcat にロードされ、Apach Tomcat が再起動されます。上記のコードはデモンストレーションのみを目的としており、実際のアプリケーションでは、HTTPClient のリクエスト リクエスト パッケージとサーブレットのレスポンス レスポンス パッケージのさまざまな例外処理を追加する必要があります。興味のある方は、電子メール 21cnDeveloper@163.com を通じて作成者と連絡を取ることができます。



このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Tomcat に jar プロジェクトをデプロイする方法 Tomcat に jar プロジェクトをデプロイする方法 Apr 21, 2024 am 07:27 AM

JAR プロジェクトを Tomcat にデプロイするには、次の手順に従います。 Tomcat をダウンロードして解凍します。 server.xml ファイルを構成し、ポートとプロジェクトのデプロイメント・パスを設定します。 JAR ファイルを指定されたデプロイメント パスにコピーします。 Tomcatを起動します。指定された URL を使用して、デプロイされたプロジェクトにアクセスします。

Tomcat サーバーへの外部ネットワーク アクセスを許可する方法 Tomcat サーバーへの外部ネットワーク アクセスを許可する方法 Apr 21, 2024 am 07:22 AM

Tomcat サーバーが外部ネットワークにアクセスできるようにするには、以下を行う必要があります。 外部接続を許可するように Tomcat 構成ファイルを変更します。 Tomcat サーバー ポートへのアクセスを許可するファイアウォール ルールを追加します。 Tomcat サーバーのパブリック IP を指すドメイン名を指す DNS レコードを作成します。オプション: リバース プロキシを使用して、セキュリティとパフォーマンスを向上させます。オプション: セキュリティを強化するために HTTPS を設定します。

Tomcatのインストールディレクトリはどこにありますか? Tomcatのインストールディレクトリはどこにありますか? Apr 21, 2024 am 07:48 AM

Tomcat インストール ディレクトリ: デフォルト パス: Windows: C:\Program Files\Apache Software Foundation\Tomcat 9.0macOS:/Library/Tomcat/Tomcat 9.0Linux:/opt/tomcat/tomcat9 カスタム パス: インストール中に指定できます。インストール ディレクトリを見つけます。whereis またはlocateコマンドを使用します。

Tomcat で複数のプロジェクトをデプロイする方法 Tomcat で複数のプロジェクトをデプロイする方法 Apr 21, 2024 am 09:33 AM

Tomcat を介して複数のプロジェクトをデプロイするには、プロジェクトごとに webapp ディレクトリを作成してから、次の操作を行う必要があります。 自動デプロイ: webapp ディレクトリを Tomcat の webapps ディレクトリに配置します。手動デプロイメント: Tomcat のマネージャー アプリケーションにプロジェクトを手動でデプロイします。プロジェクトがデプロイされると、そのデプロイメント名 (例: http://localhost:8080/project1) でアクセスできるようになります。

Tomcatでの同時接続数を確認する方法 Tomcatでの同時接続数を確認する方法 Apr 21, 2024 am 08:12 AM

Tomcat の同時接続数を確認する方法: Tomcat Manager ページ (http://localhost:8080/manager/html) にアクセスし、ユーザー名とパスワードを入力します。左側のナビゲーション バーで [ステータス] -> [セッション] をクリックすると、ページの上部に同時接続数が表示されます。

Tomcat Web サイトのルート ディレクトリはどこですか? Tomcat Web サイトのルート ディレクトリはどこですか? Apr 21, 2024 am 09:27 AM

Tomcat Web サイトのルート ディレクトリは Tomcat の webapps サブディレクトリにあり、Web アプリケーション ファイル、静的リソース、および WEB-INF ディレクトリを保存するために使用されます。これは、Tomcat 構成ファイルで docBase 属性を検索することで見つかります。

Tomcatのポート番号を確認する方法 Tomcatのポート番号を確認する方法 Apr 21, 2024 am 08:00 AM

Tomcat のポート番号は、server.xml ファイルの <Connector> 要素の port 属性を確認することで確認できます。 Tomcat 管理インターフェイス (http://localhost:8080/manager/html) にアクセスし、[ステータス] タブを表示します。コマンドラインから「catalina.sh version」を実行し、「Port:」行を確認します。

Tomcat で異なるポート番号を持つ 2 つのプロジェクトを実行する方法 Tomcat で異なるポート番号を持つ 2 つのプロジェクトを実行する方法 Apr 21, 2024 am 09:00 AM

Tomcat サーバー上で異なるポート番号を使用してプロジェクトを実行するには、次の手順が必要です。server.xml ファイルを変更し、Connector 要素を追加してポート番号を定義します。 Context 要素を追加して、ポート番号に関連付けられたアプリケーションを定義します。 WAR ファイルを作成し、対応するディレクトリ (webapps または webapps/ROOT) にデプロイします。 Tomcat を再起動して変更を適用します。

See all articles