この記事はサーブレットセッションの導入を中心に紹介していますが、編集者がとても良いと思ったので、参考にさせていただきます。エディターに従って見てみましょう。
セッションはサーバー側のテクノロジーであり、サーバーは実行時に各ユーザーのブラウザーに対して専用のセッション オブジェクトを作成できます。デフォルトでは、サーバーがセッションを占有します。 . セッションはユーザーのブラウザー専用であるため、ユーザーがサーバーの 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; }
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/>"); }注: ここでは、SendRedirect リダイレクトが使用されます。転送が使用される場合、購入されたアイテムは再度購入されました。 ショッピング カート ページのサーブレットの機能は、ユーザーのセッションから保存された購入済み製品オブジェクトを取り出してページに表示するという比較的単純なものです:
//获取用户所购买商品的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 サイトの他の関連記事を参照してください。