이 글은 주로 서블릿 세션의 소개를 소개하는데, 편집자가 보기에는 꽤 좋다고 생각해서 지금 공유하고 참고하겠습니다. 편집기를 따라가서 살펴보겠습니다.
Session은 이 기술을 사용하여 서버가 런타임 시 각 사용자의 브라우저에 대한 독점 세션 개체를 생성할 수 있습니다. 세션은 사용자 브라우저에만 적용되므로 사용자가 서버의 웹 리소스에 액세스하면 사용자가 서버의 다른 웹 리소스에 액세스할 때 자신의 데이터를 자신의 세션에 저장할 수 있습니다. 사용자에게 서비스를 제공하기 위해 사용자의 각 세션에서 데이터를 가져옵니다.
세션과 쿠키의 주요 차이점:
세션 개체는 서버에 의해 생성되며 이는 쿠키와 다릅니다. 프로그래머는 요청 객체의 getSession() 메소드를 통해 Session 객체를 얻을 수 있습니다.
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는 각자의 세션을 갖게 됩니다.
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 !), 그런 다음 지도 컬렉션을 사용합니다. 키-값 쌍을 통해 쉽게 검색할 수 있도록 데이터를 저장하려면:
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");참고: 여기에서는 SendRedirect 리디렉션이 사용됩니다. 전달을 사용하면 각 항목이 장바구니 페이지에서 새로 고쳐집니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!