यहाँ एक जावा अनुप्रयोग के लिए ब्राउज़र टैब के बीच सत्र को रोकने के लिए एक समाधान है। यह IE (JSP / सर्वलेट) के लिए काम करेगा
- आपके पहले JSP पेज में, ऑनलोड इवेंट एक सर्वलेट (ajex कॉल) को एक "window.title" और इवेंट ट्रैकर को सेशन में सेट करने के लिए (सिर्फ एक पूर्णांक चर को पहली बार 0 के रूप में सेट करने के लिए कहता है)
- सुनिश्चित करें कि अन्य पृष्ठों में से कोई भी विंडो सेट नहीं करता है। शीर्षक
- पृष्ठ लोड होने के बाद सभी पृष्ठ (प्रथम पृष्ठ सहित) एक जावा स्क्रिप्ट जोड़ते हैं ताकि विंडो शीर्षक की जाँच की जा सके। यदि शीर्षक नहीं मिला है, तो वर्तमान पृष्ठ / टैब बंद करें (ऐसा होने पर "window.unload" फ़ंक्शन को पूर्ववत करना सुनिश्चित करें)
- पेज रिफ्रेश इवेंट को कैप्चर करने के लिए पेज window.onunload java स्क्रिप्ट इवेंट (सभी पेजों के लिए) सेट करें, अगर किसी पेज को इवेंट ट्रैकर को रीसेट करने के लिए सर्वलेट कॉल किया गया हो।
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) web.xml - सर्वलेट मैपिंग
<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");
}
}