কোন অবস্থার অধীনে একটি JSESSIONID তৈরি করা হয়?


276

যখন তৈরি করা হয় তখন কখন / কী অবস্থা JSESSIONID?

এটি কি একটি ডোমেন প্রতি? উদাহরণস্বরূপ, যদি আমার কাছে টমক্যাট অ্যাপ্লিকেশন সার্ভার থাকে এবং আমি একাধিক ওয়েব অ্যাপ্লিকেশন স্থাপন করি তবে এটি আলাদা হবেJSESSIONID প্রসঙ্গ (ওয়েব অ্যাপ্লিকেশন) অনুযায়ী তৈরি করা যাবে, বা ওয়েব অ্যাপ্লিকেশনগুলিতে সেগুলি একই ডোমেন না হওয়া পর্যন্ত ভাগ করা হবে?

উত্তর:


324

সেশন তৈরি হওয়ার সময় জেএসসিআইএনআইডি কুকি তৈরি / প্রেরণ করা হয়। যখন আপনার কোড কল সেশন তৈরি করা হয় request.getSession()বা request.getSession(true)প্রথমবারের। আপনি যদি সেশনটি পেতে চান তবে এটি উপস্থিত না থাকলে এটি তৈরি না করে ব্যবহার করুন request.getSession(false)- এটি আপনাকে একটি সেশন বা ফিরিয়ে দেবে null। এই ক্ষেত্রে, নতুন অধিবেশন তৈরি হয় না, এবং JSESSIONID কুকি প্রেরণ করা হয় না। (এর অর্থ হ'ল প্রথম অনুরোধে সেশনটি অগত্যা তৈরি করা হয়নি ... কখন আপনি এবং আপনার কোড নিয়ন্ত্রণে থাকবে অধিবেশন নির্মিত হয়)

সেশনগুলি প্রতিটি প্রসঙ্গে:

SRV.7.3 সেশন সুযোগ

এইচটিটিপিএসশন অবজেক্ট অবশ্যই অ্যাপ্লিকেশন (বা সার্লেট প্রসঙ্গে) পর্যায়ে স্কোপ করা উচিত। অন্তর্নিহিত প্রক্রিয়া, যেমন কুকিটি অধিবেশন প্রতিষ্ঠার জন্য ব্যবহৃত, বিভিন্ন প্রসঙ্গে যেমন হতে পারে তবে সেই বস্তুর বৈশিষ্ট্যগুলি সহ যে বস্তুটি রেফারেন্স করা হয় তা কখনই ধারক দ্বারা প্রসঙ্গের মধ্যে ভাগ করা উচিত নয়।

( সার্লেলেট ২.৪ নির্দিষ্টকরণ )

আপডেট: জেএসপি পৃষ্ঠায় প্রতিটি কল সুস্পষ্টভাবে একটি নতুন অধিবেশন তৈরি করে যদি কোনও সেশন না থাকে। এটি session='false'পৃষ্ঠা নির্দেশের সাথে বন্ধ করা যেতে পারে , সেক্ষেত্রে সেশন ভেরিয়েবল জেএসপি পৃষ্ঠায় মোটেই উপলব্ধ নয়।


2
একটি সেশন তৈরি করা যায় না ডাব্লু / ও গেটসেশন এর একটি সুস্পষ্ট কল? "ধারক দ্বারা প্রসঙ্গে কখনও ভাগ করা উচিত নয়" সম্পর্কিত, ওয়েবস্পিয়ারে সেশনগুলি ভাগ করার একটি বিকল্প রয়েছে, যা এই প্রশ্নের
উত্সাহ

আপনি কেবল সার্লেট এপিআই ব্যবহার না করে তা নয়। যদিও সার্ভার-নির্দিষ্ট এক্সটেনশানগুলি (যেমন ওয়েবস্ফিয়ারের সেশন ভাগ করে নেওয়ার মত) থাকতে পারে।
পিটার btibraný

আমি বিশ্বাস করি আপনার প্রসঙ্গ। XML ফাইলটি যদি আপনার <কনটেক্সট> ট্যাগটিতে একটি কুকিজের বৈশিষ্ট্য থাকে, তবে <কনটেক্সট কুকিজ = "মিথ্যা">
বিটি

এখনই আমি আমার ফিল্টারটিতে সেশন তৈরির জন্য অনেকগুলি হিট পেয়েছি এবং এটি দ্বিতীয় হিট (দ্বিতীয় পৃষ্ঠার রিফ্রেশ নয়) তৈরি হওয়ার পরে কেবল এটির মতো মনে হচ্ছে, এটি আমার মনোযোগ বলে "প্রথম অনুরোধে সেশনটি অগত্যা তৈরি করা হয়নি .." এটা সম্পর্কিত? আপনি কেন একটি উদাহরণ দিতে পারেন কেন এটি প্রথম অনুরোধে প্রয়োজনীয়ভাবে তৈরি করা হয়নি? ধন্যবাদ!
jpganz18

@ jpganz18: আপনি যদি কেবল কল করেন request.getSession()বা request.getSession(true), তবে আপনি বিদ্যমান বা নতুন অধিবেশন পাবেন। তবে যদি আপনার কোড কল করে request.getSession(false), তবে কোনও সেশন উপস্থিত না থাকলে আপনি বিদ্যমান সেশন বা নাল পেতে পারেন।
পিটার btibraný

49

এখানে JSESSIONIDকুকির আরও একটি উত্স সম্পর্কে কিছু তথ্য রয়েছে :

আমি সবেমাত্র কয়েকটি জাভা কোড ডিবাগ করছি যা একটি টমক্যাট সার্ভারে চলে। আমি request.getSession()আমার কোডের কোথাও স্পষ্টভাবে কল করছিলাম না তবে আমি লক্ষ্য করেছি যে একটি JSESSIONIDকুকি এখনও সেট করা আছে।

অবশেষে টমকেটের অধীনে কাজের ডিরেক্টরিতে একটি জেএসপি-র সাথে সম্পর্কিত জেনারেটেড জাভা কোডটি দেখেছিলাম।

এটি প্রদর্শিত হয়, আপনি এটি পছন্দ করেন বা না চান, যদি আপনি কোনও সার্লেট থেকে কোনও জেএসপি আবেদন করেন, JSESSIONIDতৈরি হয়ে যাবে!

যুক্ত: আমি সবেমাত্র নিম্নলিখিত জেএসপি নির্দেশকে যুক্ত করে খুঁজে পেয়েছি:

<%@ page session="false" %>

আপনি এর সেটিংস অক্ষম করতে পারেন JSESSIONID কোনও জেএসপি দ্বারা ।


3
অন্য কথায়: পৃষ্ঠা সেশনের বৈশিষ্ট্যের জন্য ডিফল্ট মানটি "সত্য"। যা কিছু (অনেক?) ক্ষেত্রে অপ্রত্যাশিত হতে পারে।
ডেভিড বালেক

আমি টমক্যাটেও আছি, এবং আমি জেএসপি মোটেও ব্যবহার করি না, তবে সেশন কুকি যাইহোক তৈরি করা হয়েছে। কোনও পরিস্থিতিতে কীভাবে এই পরিস্থিতিতে এটি প্রতিরোধ করবেন?
ক্লাসিপিম্প

23

সংশোধন: দয়া করে পিটার btibraný এর উত্তরের জন্য ভোট দিন - এটি আরও সঠিক এবং সম্পূর্ণ!

একটি "জেসিএসআইএনআইডিআইডি" হ'ল http সেশনের অনন্য আইডি - জাভাডকটি এখানে দেখুন । সেখানে, আপনি নিম্নলিখিত বাক্যটি খুঁজে পাবেন

সেশন তথ্য কেবলমাত্র ওয়েব ওয়েব অ্যাপ্লিকেশন (সার্ভলেট কনটেক্সট) এ স্কোপ করা হয়েছে, সুতরাং এক প্রসঙ্গে সংরক্ষণ করা তথ্য অন্যটিতে সরাসরি দৃশ্যমান হবে না।

সুতরাং আপনি যখন কোনও সাইটে প্রথম আঘাত করবেন তখন একটি নতুন অধিবেশন তৈরি হয় এবং সেভলেটকন্টেক্সটে আবদ্ধ। আপনি যদি একাধিক অ্যাপ্লিকেশন স্থাপন করেন তবে সেশনটি ভাগ করা হয় না।

আপনি বর্তমান সেশনটিও অবৈধ করতে পারেন এবং সেজন্য একটি নতুন তৈরি করতে পারেন। যেমন HTTP থেকে https এ স্যুইচ করার সময় (লগইন করার পরে) নতুন সেশন তৈরি করা খুব ভাল ধারণা a

আশা করি, এটি আপনার প্রশ্নের উত্তর দেয়।


1
সেশনের সুযোগের পরিষ্কার ব্যাখ্যা।
ব্যবহারকারী3123690

@ লিঙ্কটি নষ্ট হয়েছে
টিমোফাই

8

আপনার পৃষ্ঠাটি অন্য .jsp বা .jspf (খণ্ড) সহ অন্তর্ভুক্ত থাকলে সাবধান! যদি আপনি সেট না করেন

<%@ page session="false" %>

তাদের পাশাপাশি, পিতৃ পৃষ্ঠাটি একটি নতুন সেশন শুরু করে এবং JSESSIONID কুকি সেট করবে।

বিশেষত .jspf পৃষ্ঠাগুলির জন্য, আপনি যদি এই জাতীয় স্নিপেটের সাহায্যে আপনার ওয়েব.এক্সএমএল কনফিগার করেন তবে এটি ঘটে:

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jspf</url-pattern>
    </jsp-property-group>
</jsp-config>

যাতে তাদের ভিতরে স্ক্রিপ্টলেট সক্ষম করতে পারে।


আপনি কী সেট পৃষ্ঠার সেশনটি = অন্তর্ভুক্ত সমস্ত টুকরা (.jsp এবং .jspf) এর মধ্যে মিথ্যা এবং বাকী স্নিপেটগুলিকে অন্তর্ভুক্ত মূল jsp এ অন্তর্ভুক্ত করবেন না?
ওমমাডন

2

কাস্টম ট্যাগ সহ জেএসপিতে উত্পন্ন লিঙ্কগুলির জন্য, আমাকে ব্যবহার করতে হয়েছিল

<%@ page session="false" %>

জেএসপিতে

এবং

request.getSession().invalidate();

Struts ক্রিয়া

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.