この記事はサーブレットセッションの導入を中心に紹介していますが、編集者がとても良いと思ったので、参考にさせていただきます。エディターに従って見てみましょう。
セッションはサーバー側のテクノロジーであり、サーバーは実行時に各ユーザーのブラウザーに対して専用のセッション オブジェクトを作成できます。デフォルトでは、サーバーがセッションを占有します。 . セッションはユーザーのブラウザー専用であるため、ユーザーがサーバーの Web リソースにアクセスすると、ユーザーがサーバーの他の Web リソースにアクセスすると、自分のデータを自分のセッションに保存できます。ユーザーにサービスを提供するために、ユーザーのそれぞれのセッションからデータを取り出します。
セッションとCookieの主な違い:
Session オブジェクトはサーバーによって作成され、Cookie とは異なります。プログラマは、リクエスト オブジェクトの getSession() メソッドを通じてセッション オブジェクトを取得できます。
HttpSession session = request.getSession(); String data = "message form SessionDemo"; session.setAttribute("data", data);ServletDemo2 のコードは次のとおりです:
response.setContentType("text/html;charset=utf-8"); PrintWriter writer = response.getWriter(); HttpSession session = request.getSession(); String data = (String) session.getAttribute("data"); writer.write(data);ブラウザを開いて最初に ServletDemo1 にアクセスすると、ブラウザがセッションの作成を支援します。オブジェクトを作成し、データを保存します。次に、ServletDemo2 にアクセスすると、保存されたデータが表示されます:
これは、セッションがさまざまなサーブレットにアクセスするときに実際にデータを保存できることを意味します。
たとえば、A が自分のホスト上のこのサーブレットにアクセスし、B が自分のコンピュータ上の同じサーブレットにアクセスした場合、A と B は独自のセッションを取得します。
そして、ブラウザを開いて ServletDemo1 にアクセスし、次に別のブラウザを開いて ServletDemo2 にアクセスすると、データが見つからないことが表示されます:
注: 現時点では 2 つのブラウザがあります。もう2回のセッションが終わりました! ! !
セッションテクノロジーを使用して、製品をクリックしてショッピングカートに追加するのと同様のケースを実行してみましょう。
前提条件の準備として、製品の JavaBean を作成する必要があります。コードは次のとおりです:
public class Product { private String id; private String name; private String author; public Product() { super(); } public Product(String id, String name, String author) { super(); this.id = id; this.name = name; this.author = author; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; }
次に、データベースを作成し、クラス形式で作成します (まだデータベースを学習していない人はいますか?T_T !)、その後、Map コレクションを使用します。キーと値のペアを通じて簡単に取得できるようにデータを保存するには、次の手順を実行します。ユーザーがハイパーリンクをクリックすると、製品が次のようになります。ID はデータを保存するための基礎として使用され、他のサーブレット クラスはユーザーが購入した商品の種類を取得するために使用されます。
public class ProductDatabase { private static Map<String,Product> map = new HashMap<String,Product>(); static{ map.put("1", new Product("1","《Java编程思想》","JB")); map.put("2", new Product("2","《Java核心技术》","fdaf")); map.put("3", new Product("3","《Java并发编程》","什么鬼")); map.put("4", new Product("4","《Head first 设计模式》","老王")); map.put("5", new Product("5","《HTML5权威手册》","hhaa")); } public static Map<String,Product> getMap() { return map; } }
現時点では、効果を見てみましょう:
response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=utf-8"); PrintWriter writer = response.getWriter(); //获取数据库中的商品数据 Map<String, Product> map = ProductDatabase.getMap(); for(Map.Entry<String, Product> entry : map.entrySet()) { Product book = entry.getValue(); writer.print(book.getName()+" <a href='/myservlet/servlet/BuySession?id="+book.getId()+"' >购买</a> <br/>"); }

//获取用户所购买商品的id号 String productId = request.getParameter("id"); Product book = ProductDatabase.getMap().get(productId); //将用户所购买的商品加入到Session对象中保存,以便最后一起结账,类似于购物车功能 HttpSession session = request.getSession(); List<Product> list = (List<Product>) session.getAttribute("productList"); if(list == null){ //首次购买 list = new ArrayList<Product>(); session.setAttribute("productList", list); } list.add(book); //跳转到购物车列表上 response.sendRedirect("/myservlet/servlet/CartListServlet");
複数の商品をクリックすると、次のことが表示されます。購入したアイテムは、ショッピング カートのサーブレット ページに表示されます:
複数のブラウザを開いてこれらの製品をクリックすると、購入用の異なるショッピング カート ページが表示されるため、セッションを使用すると、異なるデータを保存しながら同じページにアクセスするという異なるユーザーのニーズを解決できます。
もちろん、これは、セッション中に複数のサーブレットにアクセスするブラウザによって生成されたデータをセッション オブジェクトが保存できることを強調しただけです。ブラウザがブラウズするときなど、上記の単純な例は確かにショッピングには使用できません。閉じられる (セッションが終了する) と、セッション オブジェクトは終了します。次にブラウザを開いたときには、ショッピング カートには何も表示されません。ユーザーのさまざまなニーズに応えたい場合は、セッションの基礎となる構造を理解する必要があります。オブジェクト
以上がJava のサーブレット セッションのグラフィック コードの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

WebStorm Mac版
便利なJavaScript開発ツール

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