web-dev-qa-db-fra.com

En utilisant Javascript, vous pouvez obtenir la valeur d'un attribut de session défini par servlet dans la page HTML

J'ai un servlet qui transfère à une page HTML, en utilisant la redirection. Parce que j'utilise ajax et php sur la page html pour effectuer d'autres fonctions. Peut se transformer en jsp. Existe-t-il un moyen d'obtenir le nom - "poNumber" obtenu dans la servlet dans les attributs de session Je devais l'obtenir et afficher sa valeur.

Je suis nouveau en programmation.

Peut obtenir ce travail dans JSP.

Cependant, il faut que cela fonctionne dans une page HTML. Puis-je le faire avec javascript?

J'ai essayé:

      <script type="text/javascript">
      var purchaseOrderNo = session.getAttribrute("pONumb");
      document.write("pONumb");
      </script> [

Cela ne génère aucune valeur sur la page HTML.

A tenté:

       <script type="text/javascript">
       var purchaseOrderNo = (String) session.getAttribrute("pONumb");
           document.write("pONumb");
           </script> 

Encore une fois, pas de sortie sur la page.

A tenté:

            <script type="text/javascript">
            String purchaseOrderNo = (String) session.getAttribrute("pONumb");
            document.write("pONumb");
            </script> 

Encore une fois pas de sortie sur la page?

Impossible de penser à autre chose à essayer. Le servlet qui redirige vers cette page HTML crée et définit l'attribut de session pONumb.

29
user878195

Non, tu ne peux pas. JavaScript est exécuté côté client (navigateur), tandis que les données de session sont stockées sur le serveur.

Cependant, vous pouvez exposer les variables de session pour JavaScript de plusieurs manières:

  • un champ d'entrée caché stockant la variable comme valeur et la lisant via l'API DOM
  • un attribut de données HTML5 que vous pouvez lire à travers le DOM
  • le stocker en tant que cookie et y accéder via JavaScript
  • l'injecter directement dans le code JS, si vous l'avez en ligne

Dans JSP, vous auriez quelque chose comme:

<input type="hidden" name="pONumb" value="${sessionScope.pONumb} />

ou:

<div id="product" data-prodnumber="${sessionScope.pONumb}" />

Puis en 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;
    }
}

ou:

var product = document.getElementById("product"), pONumb;
pONumb = product.getAttribute("data-prodnumber");

L'exemple en ligne est le plus simple, mais si vous souhaitez ensuite stocker votre code JavaScript en tant que ressource externe ( comme recommandé ), cela ne sera pas réalisable.

<script>
    var pONumb = ${sessionScope.pONumb};
    [...]
</script>
37
Alex Ciminian
<%
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>
4
user2552572

Le code ci-dessous peut vous aider à atteindre l'attribut de session à l'intérieur de Javascript:

var name = '<%= session.getAttribute("username") %>';
3
Nimesh Dadhaniya
<?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>
0
Amit Vishwakarma