繁体   English   中英

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

[英]I want to use java variable in single jsp page

<%!
    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();
        }

    %>
    <%!} %>

我从html像

<input type="submit" id="btnSync" value="Sync" class="button" name="Sync" onclick="<%runJavaMethod(r.getInt(1));%>"/>

因此,我们需要runJavaMethod参数。

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调用一个在服务器上命中servlet / controller方法的URL来完成该工作(即执行业务逻辑)。

更为重要的一点是Scriptlet是遗留代码,我强烈建议不要使用Scriptlet来生成或管理html内容,而应使用JSTL,以便在关注点(即业务逻辑和用户界面要求)之间明确的区分

另外,我强烈建议您从此处阅读JSP最佳实践并遵循它们。

您正在混合两种不同的事物。 JSP是服务器端代码,其呈现的响应是发送回浏览器的HTML。在您的情况下,Javascript是纯客户端。

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

我建议在后端类中发送JSP的所有逻辑,而不是放在jsp中的好习惯。 JSP是UI设计的理想选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM