Java 如何在scriplet中使用脚本变量

Java 如何在scriplet中使用脚本变量,java,javascript,jsp,Java,Javascript,Jsp,有人能帮我从name变量中获取值并将其存储在name_val中吗 <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page&l

有人能帮我从name变量中获取值并将其存储在name_val中吗

 <%@page contentType="text/html" pageEncoding="UTF-8"%>
 <!DOCTYPE html>
 <html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>

     <script type="text/javascript">
       function dropdelete(ev)
        {
            var name=document.getElementById("user"+stringToArray[1]).value;
        }
   <% String name_val ; %>
    </script>
</head>
<body>
</html>

JSP页面
函数删除(ev)
{
var name=document.getElementById(“用户”+stringToArray[1])值;
}

您无法获取JavaScript值并将其存储到Java变量中,因为JavaScript在客户端执行,而Java变量在服务器端执行。在这种情况下,首先执行服务器端,然后执行客户端

或者,您可以使用表单将值存储在隐藏字段中,并通过foorm提交返回使用

<input type="hidden" id="hiddenField"/>

你不能那样做。那没有任何意义。您的
name\u val
声明在服务器端JSP脚本中。当页面生成并发送到客户端时,它在服务器上执行。这种情况在客户端在页面上执行Javascript之前很久就发生了,并且与此无关

当页面被发送到客户端时,您的JSP代码已经运行并完成。JSP就是这样工作的


你必须重新考虑一下你的设计。您可以将相关逻辑移到客户端Javascript中,或将数据提交回服务器进行处理(AJAX风格或通过表单等新请求,或在重定向中获取参数),或其他方式,但无论如何,您必须找到另一种方式。

您无法直接获取数据,当然,如果该值是由服务器端预先填充的,并且您要将
name\u val
的值存储在隐藏字段或其他DOM元素中,那么您可以使用javscript或jquery来访问它

<input type="hidden" id="nameValue" value=${nameValue}>
更新

为了给我的答案添加一点上下文,我假设上面的JSP是从一个控制servlet调用(重定向)的

这个servlet可以设置发送到JSP页面的请求参数

JSP页面可以读取请求参数并将其存储在隐藏字段中

加载页面后,Javascript或Jquery可以从隐藏字段读取值并使用它


我想这就是OP想要做的,即使用值,而不仅仅是将其存储在变量中。

javascript是客户端,jsp是服务器端。因此您不能像这样存储

字符串名称\u val=document.getElementById(“用户”+stringToArray[1]).value

用以下方法尝试ajax

var name=document.getElementById("user"+stringToArray[1]).value;
$.ajax(
               {
                   type: "POST",
                   url: "store.jsp", //Your full URL goes here
                   data: { name: name},
                   success: function(data, textStatus, jqXHR){
                       alert(data);                  
                   },
                   error: function(jqXHR){
                       alert(jqXHR.responseStatus);
                   }
               });
现在在store.jsp中

<%String name_val =request.getparameter("name");%>


这个问题是如何获得3张选票的,令人难以置信。这对不知道工具如何工作的网络程序员的数量产生了令人不安的影响。哈哈……问这个问题的人可能很幸运。这类选举的得票率越来越高question@Downvoter-别害怕-告诉我为什么,然后我会给这个网站增加价值。你实际上有5个投票人不支持你,主要是因为你的答案没有多大意义,我不确定一条评论是否合适。OP将你的答案标记为正确的事实表明,你们两人可能在用密码交流,或者可能有一种心灵纽带。我无法解释,但这是一个非常阴暗的地带。我相信OP是想走另一条路
name\u val=name
,其中
name
是用户在页面元素中动态输入的内容,而不是静态内容。您的回答是否意味着建议一种AJAX风格的方法,在这种方法中,动态客户端内容在后台由当前页面发送到服务器进行进一步处理?如果是这样的话,Java初学者的回答就是一个很好的例子,它清楚地解释了这种技术。嗯,如果OP真的想去另一个,那么它确实表明了对事物的流动缺乏理解。我的回答并不意味着OP将如何使用该值。也许是Ajax,也许是进一步的DOM处理,也许是修改值并将其发布到servlet——问题中没有这个,谁知道呢?你的推理是有道理的,我已经删除了我的否决票。
var name=document.getElementById("user"+stringToArray[1]).value;
$.ajax(
               {
                   type: "POST",
                   url: "store.jsp", //Your full URL goes here
                   data: { name: name},
                   success: function(data, textStatus, jqXHR){
                       alert(data);                  
                   },
                   error: function(jqXHR){
                       alert(jqXHR.responseStatus);
                   }
               });
<%String name_val =request.getparameter("name");%>