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

时间:2017-04-08 07:22:38

标签: java jsp

String string = "today is a (happy) day, I would like to (explore) more about Java.";
string = string.replaceAll("\\(happy\\)", "good");
string = string.replaceAll("\\(explore\\)", "learn");
System.out.println(string);`

我正在从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参数。

3 个答案:

答案 0 :(得分:1)

onclick="<%runJavaMethod(r.getInt(1));%>"/>

HTML / Javascript 在客户端播放, JSP / Java 在服务器端播放。

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

答案 1 :(得分:1)

您正在尝试将两种语言混合即Java和Javascript / html,即onclick是一个Javascript事件,您无法调用runJavaMethod来自Javascript。

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

因此,如果你必须解决问题,在onclick之后,你需要调用服务器上的servlet / controller方法的URL来完成这项工作(即,执行业务逻辑。)

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

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

答案 2 :(得分:1)

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

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

我建议在后端类中发送JSP的所有逻辑不是放在jsp中的好习惯。 JSP非常适合用户界面设计。