ich habe Javascript, die eine Funktion ruft den Sitzungswert wiewindow.location.reload (true) wird HttpSession löschen?
unten zu setzen, ist der Client-Code:
<a id="sampleId "href="javascript:confirmTechSimulationSwitch('testLink');
function confirmTechSimulationSwitch(){
var url = window.location.protocol + "//" + window.location.host + "/dummy-proj/Toggle.jsp";
var xmlHttpReq = new XMLHttpRequest();
if (window.XMLHttpRequest) {
xmlHttpReq = new XMLHttpRequest();
xmlHttpReq.open("POST",url, false);
xmlHttpReq.send(null);
}
if (xmlHttpReq.readyState == 4) {
if (xmlHttpReq.status == 200){
var newResponse =xmlHttpReq.responseText.slice(0,4);
if(xmlHttpReq.responseText !=null && newResponse =='true'){
window.location.reload(true);
}
}
}
Innerhalb dieses Toggle.jsp ich eine MeTHOOD habe:
<%
System.out.println("inside jsp page");
session.setAttribute("abc","true");
request.setAttribute("abc","true");
request.getSession().setAttribute("abc","true");
System.out.println(" abc123........ "+session.getAttribute("abc"));//prints true
System.out.println("abc456....... "+request.getAttribute("abc"));//prints true
System.out.println("abc789......."+request.getSession().getAttribute("abc"));//prints true
}
%>
jetzt Ich versuche, diese Sitzungswerte nach dem Laden der Seite aus der gleichen Anwendung in anderer Methode wie folgt abrufen:
public void Test(HttpServletRequest request){
HttpSession session = request.getSession();
session.getAttribute("abc");// prints null
request.getAttribute("abc");//prints null
request.getSession().getAttribute("abc")//prints null
}
von einer anderen Java-Methode Test. Ich verstehe es als null. kann mir bitte jemand vorschlagen, wie Sie den Sitzungswert, der für abc festgelegt ist, auch nach dem Neuladen der Seite erhalten?
Zeigen Sie Ihren clientseitigen Code an. Wenn Sie die Seite erneut laden, wird die In-Flight-Anforderung vom Click-Handler möglicherweise vom Browser abgebrochen. Laden Sie nicht neu, bevor diese Anfrage (und es ist die Arbeit der Sitzung) abgeschlossen ist. Was ist "ein anderes Java-Programm"? Nicht Teil der gleichen Web-Anwendung (wird dann nicht auf die Sitzung zugreifen)? – Thilo
Ich habe den client side code ebenfalls hinzugefügt, bitte werfen Sie einen Blick –
überprüfen Sie Ihre 'trainingAvailableFlag' prüfen, ob es' wahr 'oder' 1' ist. Fügen Sie in der Ajax-Antwort nur noch else case hinzu und überprüfen Sie die Antwort. – Santhucool