이 글은 주로 서블릿 세션의 소개를 소개하는데, 편집자가 보기에는 꽤 좋다고 생각해서 지금 공유하고 참고하겠습니다. 편집기를 따라가서 살펴보겠습니다.
Session은 이 기술을 사용하여 서버가 런타임 시 각 사용자의 브라우저에 대한 독점 세션 개체를 생성할 수 있습니다. 세션은 사용자 브라우저에만 적용되므로 사용자가 서버의 웹 리소스에 액세스하면 사용자가 서버의 다른 웹 리소스에 액세스할 때 자신의 데이터를 자신의 세션에 저장할 수 있습니다. 사용자에게 서비스를 제공하기 위해 사용자의 각 세션에서 데이터를 가져옵니다.
세션과 쿠키의 주요 차이점:
세션 개체는 서버에 의해 생성되며 이는 쿠키와 다릅니다. 프로그래머는 요청 객체의 getSession() 메소드를 통해 Session 객체를 얻을 수 있습니다.
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는 각자의 세션을 갖게 됩니다.
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");
response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=utf-8"); PrintWriter writer = response.getWriter(); writer.print("您购买的商品如下: <br/>"); HttpSession session = request.getSession(); List<Product> list = (List<Product>) session.getAttribute("productList"); for(Product p : list) { writer.write(p.getName()+"<br/>"); }
여러 브라우저가 열려 있는 상태에서 이러한 제품을 클릭하면 구매할 수 있는 다양한 장바구니 페이지가 표시되므로 세션을 사용하면 서로 다른 데이터를 저장하면서 동일한 페이지에 액세스하려는 다양한 사용자의 요구를 해결할 수 있습니다.
물론 이는 세션 개체가 세션 중에 여러 서블릿에 액세스하는 브라우저에서 생성된 데이터를 저장할 수 있다는 단순한 강조일 뿐입니다. 위의 간단한 예는 탐색할 때와 같은 쇼핑에는 사용할 수 없습니다. 닫히면(세션이 종료됨) 세션 개체가 종료됩니다. 그러면 다음에 브라우저를 열면 장바구니에 아무것도 남지 않게 됩니다. 사용자의 다양한 요구 사항을 충족하려면 세션의 기본 구조를 이해해야 합니다. 개체
위 내용은 Java 서블릿 세션의 그래픽 코드 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!