জাভা অ্যাপ্লিকেশনটির জন্য ব্রাউজার ট্যাবগুলির মধ্যে সেশন শিয়ারিং প্রতিরোধের জন্য এখানে একটি সমাধান রয়েছে। এটি আইই (জেএসপি / সার্লেট) এর জন্য কাজ করবে
- আপনার প্রথম জেএসপি পৃষ্ঠায়, লোড ইভেন্টটি একটি "উইন্ডো.টাইটেল" সেট করার জন্য একটি সার্লেট (অ্যাজেক্স কল) কল করে এবং সেশনে ইভেন্ট ট্র্যাকার (প্রথমবারের জন্য 0 হিসাবে সেট করার জন্য কেবল একটি পূর্ণসংখ্য পরিবর্তনশীল)
- নিশ্চিত হয়ে নিন যে অন্য পৃষ্ঠাগুলির মধ্যে কোনও উইন্ডো.টাইটেল সেট করে না
- সমস্ত পৃষ্ঠা (প্রথম পৃষ্ঠা সহ) পৃষ্ঠার চাপ শেষ হয়ে গেলে উইন্ডো শিরোনামটি পরীক্ষা করতে একটি জাভা স্ক্রিপ্ট যুক্ত করে। যদি শিরোনামটি পাওয়া না যায় তবে বর্তমান পৃষ্ঠা / ট্যাবটি বন্ধ করুন (এটি হওয়ার পরে "উইন্ডো.অনলোড" ফাংশনটি পূর্বাবস্থায় ফেলার বিষয়টি নিশ্চিত করুন)
- পৃষ্ঠাটি উইন্ডো.নুনলোড করুন জাভা স্ক্রিপ্ট ইভেন্টটি (সমস্ত পৃষ্ঠার জন্য) পৃষ্ঠাটি রিফ্রেশ ইভেন্টটি ক্যাপচার করতে, যদি কোনও পৃষ্ঠা সতেজ করা হয় তবে ইভেন্ট ট্র্যাকারটিকে পুনরায় সেট করতে সার্লেটকে কল করুন।
1) প্রথম পৃষ্ঠা জেএস
BODY onload="javascript:initPageLoad()"
function initPageLoad() {
var xmlhttp;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var serverResponse = xmlhttp.responseText;
top.document.title=serverResponse;
}
};
xmlhttp.open("GET", 'data.do', true);
xmlhttp.send();
}
2) সমস্ত পৃষ্ঠার জন্য সাধারণ জেএস
window.onunload = function() {
var xmlhttp;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var serverResponse = xmlhttp.responseText;
}
};
xmlhttp.open("GET", 'data.do?reset=true', true);
xmlhttp.send();
}
var readyStateCheckInterval = setInterval(function() {
if (document.readyState === "complete") {
init();
clearInterval(readyStateCheckInterval);
}}, 10);
function init(){
if(document.title==""){
window.onunload=function() {};
window.open('', '_self', ''); window.close();
}
}
3) ওয়েব.এক্সএমএল - সার্লেট ম্যাপিং
<servlet-mapping>
<servlet-name>myAction</servlet-name>
<url-pattern>/data.do</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>myAction</servlet-name>
<servlet-class>xx.xxx.MyAction</servlet-class>
</servlet>
4) সার্লেট কোড
public class MyAction extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
Integer sessionCount = (Integer) request.getSession().getAttribute(
"sessionCount");
PrintWriter out = response.getWriter();
Boolean reset = Boolean.valueOf(request.getParameter("reset"));
if (reset)
sessionCount = new Integer(0);
else {
if (sessionCount == null || sessionCount == 0) {
out.println("hello Title");
sessionCount = new Integer(0);
}
sessionCount++;
}
request.getSession().setAttribute("sessionCount", sessionCount);
// Set standard HTTP/1.1 no-cache headers.
response.setHeader("Cache-Control", "private, no-store, no-cache, must- revalidate");
// Set standard HTTP/1.0 no-cache header.
response.setHeader("Pragma", "no-cache");
}
}