이 글은 주로 서블릿 세션의 소개를 소개하는데, 편집자가 보기에는 꽤 좋다고 생각해서 지금 공유하고 참고하겠습니다. 편집기를 따라가서 살펴보겠습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이 기사에서는 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 및 Gradle을 사용하여 접근 방식과 최적화 전략을 비교합니다.

이 기사에서는 Maven 및 Gradle과 같은 도구를 사용하여 적절한 버전 및 종속성 관리로 사용자 정의 Java 라이브러리 (JAR Files)를 작성하고 사용하는 것에 대해 설명합니다.

이 기사는 카페인 및 구아바 캐시를 사용하여 자바에서 다단계 캐싱을 구현하여 응용 프로그램 성능을 향상시키는 것에 대해 설명합니다. 구성 및 퇴거 정책 관리 Best Pra와 함께 설정, 통합 및 성능 이점을 다룹니다.

이 기사는 캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA를 사용하는 것에 대해 설명합니다. 잠재적 인 함정을 강조하면서 성능을 최적화하기위한 설정, 엔티티 매핑 및 모범 사례를 다룹니다. [159 문자]

Java의 클래스 로딩에는 부트 스트랩, 확장 및 응용 프로그램 클래스 로더가있는 계층 적 시스템을 사용하여 클래스로드, 링크 및 초기화 클래스가 포함됩니다. 학부모 위임 모델은 핵심 클래스가 먼저로드되어 사용자 정의 클래스 LOA에 영향을 미치도록합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

드림위버 CS6
시각적 웹 개발 도구

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.
