Как передать значения JavaScript в Scriptlet в JSP?

может ли кто-нибудь сказать мне, как передать значения JavaScript в Scriptlet в JSP?

8 ответов


ваши значения javascript являются клиентскими, ваш скриптлет работает на стороне сервера. Так что если вы хотите использовать JavaScript переменные в сценарий, вам нужно будет представить их.

для этого либо сохраните их в полях ввода и отправьте форму, либо выполните запрос ajax. Я предлагаю вам изучить JQuery для этого.


Я могу предложить два способа,

а.ССП,

<html>
    <script language="javascript" type="text/javascript">
        function call(){
            var name = "xyz";
            window.location.replace("a.jsp?name="+name);
        }
    </script>
    <input type="button" value="Get" onclick='call()'>
    <%
        String name=request.getParameter("name");
        if(name!=null){
            out.println(name);
        }
    %>
</html>

б.ССП,

<script>
    var v="xyz";
</script>
<% 
    String st="<script>document.writeln(v)</script>";
    out.println("value="+st); 
%>

просто, вы не можете!

JSP-серверная сторона, javascript-клиентская сторона, что означает, что во время оценки javascript больше нет "кода jsp".


я интерпретировал этот вопрос как:

"кто может сказать мне, как передать значения на JavaScript для использования в JSP?"

Если это так, этот HTML-файл передаст вычисляемую сервером переменную JavaScript в JSP.

<html>
    <body>
        <script type="text/javascript">
            var serverInfo = "<%=getServletContext().getServerInfo()%>";
            alert("Server information " + serverInfo);
        </script>
    </body>
</html>

Если вы говорите, что хотите передать значение javascript из одного jsp в другой в javascript, то используйте метод URLRewriting для передачи переменной javascript в следующий файл jsp и доступа к нему в следующем JSP в объекте запроса.

другие мудрые вы не могу сделать это.


Это невозможно, как вы ожидаете. Но ты можешь сделать что-то подобное. Передайте значение вашего Java-скрипта сервлету / контроллеру, выполните обработку, а затем передайте это значение на страницу jsp, поместив его в какой-то объект в качестве вашего требования. Затем вы можете использовать это значение, как вы хотите.


вы не можете этого сделать, но вы можете сделать наоборот:

в вашем jsp вы можете

<%
String name = "John Allepe";    
request.setAttribute("CustomerName", name);
%> 

доступ к переменной в js

<script> 
var name = "<%= request.getAttribute("name") %>";
alert(name); 
</script>

Это для других людей, высадившихся здесь. Прежде всего вам нужен сервлет. Я использовал запрос @POST. Теперь в вашем файле jsp у вас есть два способа сделать это:

  1. сложный способ с AJAX, если вы новичок в jsp: Вам нужно сделать сообщение с javascript var, который вы хотите использовать в своем java-классе, и использовать JSP для вызова функции java из вашего запроса:

    $(document).ready(function() {
        var sendVar = "hello";
        $('#domId').click(function (e)
        {                               
            $.ajax({
                type: "post",
                url: "/", //or whatever your url is
                data: "var=" + sendVar ,
                success: function(){      
                        console.log("success: " + sendVar );                            
                      <% 
                          String received= request.getParameter("var");
    
                          if(received == null || received.isEmpty()){
                              received = "some default value";
                          }
                          MyJavaClass.processJSvar(received); 
                      %>;                            
    
                }
            });
        });
    
    });
    
  2. легкий путь как раз с JSP:

    <form id="myform" method="post" action="http://localhost:port/index.jsp">
         <input type="hidden" name="inputName" value=""/>
                   <% 
                          String pg = request.getParameter("inputName");
    
                          if(pg == null || pg.isEmpty()){
                              pg = "some default value";
                          }
                          DatasyncMain.changeToPage(pg); 
                      %>;     
    </form>
    

конечно, в этом случае вам все равно придется загрузить входное значение из JS (до сих пор я не придумал другой способ его загрузки).