Используя Javascript, вы можете получить значение из атрибута сеанса, установленного сервлетом на странице HTML
У меня есть сервлет, который пересылает страницу HTML, используя перенаправление. Потому что я использую ajax и php на странице html для выполнения других функций. Может превратиться в jsp. Есть ли способ получить имя - "poNumber", который я получаю в сервлет в атрибутах сеанса. Я должен был получить его и показать его значение.
Я новичок в программировании.
Может ли это работать в jsp.
Однако нужно заставить это работать на html-странице. Могу ли я сделать это с помощью javascript?
Я пробовал:
<script type="text/javascript">
var purchaseOrderNo = session.getAttribrute("pONumb");
document.write("pONumb");
</script> [
Это не выводит никаких значений на странице HTML.
Пробовал:
<script type="text/javascript">
var purchaseOrderNo = (String) session.getAttribrute("pONumb");
document.write("pONumb");
</script>
Снова не получим вывода на странице.
Пробовал:
<script type="text/javascript">
String purchaseOrderNo = (String) session.getAttribrute("pONumb");
document.write("pONumb");
</script>
Снова не выводить на страницу?
Не могу придумать что-нибудь еще, чтобы попробовать. Сервлет, перенаправляющий на эту страницу HTML, создает и устанавливает атрибут сеанса pONumb.
Ответы
Ответ 1
Нет, вы не можете. JavaScript выполняется на стороне клиента (браузер), а данные сеанса хранятся на сервере.
Однако вы можете выставить переменные сеанса для JavaScript несколькими способами:
- скрытое поле ввода, сохраняющее переменную как ее значение и считывающее ее через DOM API
- атрибут данных HTML5, который вы можете прочитать через DOM
- сохранение его как файла cookie и доступа к нему через JavaScript
- вводя его непосредственно в JS-код, если у вас есть встроенный
В JSP у вас есть что-то вроде:
<input type="hidden" name="pONumb" value="${sessionScope.pONumb} />
или
<div id="product" data-prodnumber="${sessionScope.pONumb}" />
Тогда в JS:
// you can find a more efficient way to select the input you want
var inputs = document.getElementsByTagName("input"), len = inputs.length, i, pONumb;
for (i = 0; i < len; i++) {
if (inputs[i].name == "pONumb") {
pONumb = inputs[i].value;
break;
}
}
или
var product = document.getElementById("product"), pONumb;
pONumb = product.getAttribute("data-prodnumber");
Пример inline является самым простым, но если вы хотите сохранить свой код JavaScript в качестве внешнего ресурса (рекомендуемый способ), он будет невозможным.
<script>
var pONumb = ${sessionScope.pONumb};
[...]
</script>
Ответ 2
<%
String session_val = (String)session.getAttribute("sessionval");
System.out.println("session_val"+session_val);
%>
<html>
<head>
<script type="text/javascript">
var session_obj= '<%=session_val%>';
alert("session_obj"+session_obj);
</script>
</head>
</html>
Ответ 3
Ниже код может помочь вам получить атрибуцию сеанса внутри java script:
var name = '<%= session.getAttribute("username") %>';
Ответ 4
<?php
$sessionDetails = $this->Session->read('Auth.User');
if (!empty($sessionDetails)) {
$loginFlag = 1;
# code...
}else{
$loginFlag = 0;
}
?>
<script type="text/javascript">
var sessionValue = '<?php echo $loginFlag; ?>';
if (sessionValue = 0) {
//model show
}
</script>