Используя 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>