この記事はサーブレットセッションの導入を中心に紹介していますが、編集者がとても良いと思ったので、参考にさせていただきます。エディターに従って見てみましょう。
セッションはサーバー側のテクノロジーであり、サーバーは実行時に各ユーザーのブラウザーに対して専用のセッション オブジェクトを作成できます。デフォルトでは、サーバーがセッションを占有します。 . セッションはユーザーのブラウザー専用であるため、ユーザーがサーバーの Web リソースにアクセスすると、ユーザーがサーバーの他の Web リソースにアクセスすると、自分のデータを自分のセッションに保存できます。ユーザーにサービスを提供するために、ユーザーのそれぞれのセッションからデータを取り出します。
セッションとCookieの主な違い:
Session オブジェクトはサーバーによって作成され、Cookie とは異なります。プログラマは、リクエスト オブジェクトの getSession() メソッドを通じてセッション オブジェクトを取得できます。
HttpSession session = request.getSession(); String data = "message form SessionDemo"; session.setAttribute("data", data);
response.setContentType("text/html;charset=utf-8"); PrintWriter writer = response.getWriter(); HttpSession session = request.getSession(); String data = (String) session.getAttribute("data"); writer.write(data);
これは、セッションがさまざまなサーブレットにアクセスするときに実際にデータを保存できることを意味します。
たとえば、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/>"); }
//获取用户所购买商品的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 サイトの他の関連記事を参照してください。