Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我想在单个jsp页面中使用java变量_Java_Jsp - Fatal编程技术网

我想在单个jsp页面中使用java变量

我想在单个jsp页面中使用java变量,java,jsp,Java,Jsp,我从html调用函数,就像 <%! public void runJavaMethod(int id) { %> <% try{ String icd = request.getParameter("icd"); String inm = request.getParameter("inm"); String istk = request.getParamet

我从html调用函数,就像

<%!
    public void runJavaMethod(int id)
    {
    %>
    <%
        try{
            String icd = request.getParameter("icd");
            String inm = request.getParameter("inm");
            String istk = request.getParameter("istock");
            String sstk = request.getParameter("sstock");
            String upr = request.getParameter("uprice");
            String spr = request.getParameter("sprice");

            r = s.executeQuery("select * from itemsyncdata");
            while(r.next())
            {
                s.executeUpdate("update itemsyncdata set itemcode='"+icd+"',itemname='"+inm+"',instock='"+istk+"',storestock='"+sstk+"',unitprice='"+upr+"',storeprice='"+spr+"' where id='"+a+"'");
            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

    %>
    <%!} %>

所以我们需要runJavaMethod参数。

onclick=“”/>
<input type="submit" id="btnSync" value="Sync" class="button" name="Sync" onclick="<%runJavaMethod(r.getInt(1));%>"/>
HTML/Javascript在客户端播放,而JSP/Java在服务器端播放

你不能。您可能会误解JSP和
HTML/JavaScript
存在于同一文档中。是的,但JSP部分是在服务器端编译的,而客户端本身就是。
您可以做的是必须发出服务器请求。最有可能是Ajax请求。

您试图将两种语言混为一谈,即Java和Javascript/html,即,
onclick
是一个Javascript事件,您无法从Javascript调用
runJavaMethod

简单地说,您不能使用Javascript直接调用Java方法(存在于scriptlet中),因为所有JSP代码在从服务器加载时都会生成(变成)html

因此,如果您必须解决这个问题,那么在点击
onclick
时,您需要调用一个URL,该URL点击服务器上的servlet/controller方法来执行该任务(即执行业务逻辑)

更重要的一点是,scriptlet是遗留代码,我强烈建议不要使用它们来生成或管理html内容,而是使用JSTL,以便在关注点(即业务逻辑和用户界面需求)之间有一个清晰的分离


另外,我强烈建议您阅读并遵循其中的JSP最佳实践。

您正在混合两种不同的东西。JSP是服务器端代码,它的呈现响应是发送回浏览器的HTML。在您的例子中,Javascript是纯客户端

如果您真的想调用服务器端处理,那么可以使用Ajax调用创建一个简单的Java脚本函数,并获取您可以使用它的响应


我建议将JSP的所有逻辑都发送到后端类中,而不是将其放入JSP中。JSP是UI设计的理想选择。

您的问题是什么?
onclick="<%runJavaMethod(r.getInt(1));%>"/>