Java 调用Servlet';JSP中的s方法

Java 调用Servlet';JSP中的s方法,java,html,jsp,servlets,Java,Html,Jsp,Servlets,我正在使用JSP和servlet开发一个web应用程序 当用户单击更新按钮时,我想从JSP页面调用servlet的方法 <input type="button" value="Update" onclick="<%MyServletName.Update(request, response);%>"></input> 当我单击Update按钮时,这个方法调用servlet,但问题是当加载表单时,这个方法会自动调用 提前谢谢 源代码 <%@page

我正在使用JSP和servlet开发一个web应用程序

当用户单击更新按钮时,我想从JSP页面调用servlet的方法

<input type="button" value="Update" onclick="<%MyServletName.Update(request, response);%>"></input>

当我单击Update按钮时,这个方法调用servlet,但问题是当加载表单时,这个方法会自动调用

提前谢谢

源代码

<%@page import="MyPackageName.MyServletName"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Update</title>
</head>
<body>
<form>
<%
String[][] data = (String[][])request.getAttribute("data");
String[] columnNames = (String[])request.getAttribute("columnNames");
//fill the table data
if(columnNames.length!=0 && data.length!=0)
{
%><table><%
}
for(int i=0;i<data.length;i++){
%>
<tr> <td><%= columnNames[0] %></td> <td><input type="text" name="text1" value="<%= data[i][0] %>"></td> </tr>
<tr> <td><%= columnNames[1] %></td> <td><input type="text" name="text2" value="<%= data[i][1] %>"></td> </tr>
<tr> <td><%= columnNames[2] %></td> <td><input type="text" name="text3" value="<%= data[i][2] %>"></td> </tr>
<%
}
%>
<tr>
<td></td>
<td><input type="button" value="Update" onclick="<%PlanProtocolEdit.Update(request, response);%>"></input></td>
</tr>
</table>
</form>
</body>
</html>

更新

除了dogGet()和doPost()之外,有没有其他方法可以调用servlet方法而不调用servlet dogGet()和doPost()方法?

您应该在表单本身上指定操作,而不是实际的输入按钮

如果在表单上定义操作。例如

表单提交按钮将表单提交到该URL。例如

<form action="/mypath/someurl">
    <input type="submit" value="Submit" />
</form>
如果要发送post请求,则可以使用
handlePost
方法在Servlet中获取该请求

应该使用上述方法,目前您正试图在javascript onclick事件上调用Java方法。这是不正确的,它没有做你认为它是

PlanProtocolEdit
中的代码。更新应该使用servlet的
doGet
doPost
方法,通过如上所述配置表单将触发该方法。

jsp中的这一行将被计算为

HTML页面中的
。如果要在单击时调用servlet,请首先将servlet映射到url路径,例如web.xml中的/myservletpath,然后 使用

通过创建jsp的useBean,可以调用除doPost()和doGet()之外的servlet方法

<jsp:useBean id="someid" class="SomePackageName.PlanProtocolEdit">

并将servlet方法onclick调用为:

<input type="button" value="Update" onclick="<% someid.Update(args[0], args[1]); %>" />

这个jspbean将标识您的servlet类,您现在可以使用useBean标记中给定的id在jsp页面中访问该类


不要忘记关闭useBean标签。

感谢@cowls的快速响应。但是我也尝试过这种方法,即使我尝试从那时起调用这个方法,当页面被加载时也会调用它。编辑可能是调用这个方法的其他东西。你有javascript运行吗?尝试禁用JS,看看它是否仍然发生。没有javascript正在运行。因为客户端只接收HTML-CSS等而不接收java代码,所以它不工作吗?还是我的代码中有错误?您是否尝试禁用JS并尝试?此外,如果您将表单HTMLTANKS@Subin S发布以获得回复,也可能会有所帮助。但是我想调用servlet的一个方法。我应该如何映射servlet的方法?上面的代码将创建一个按钮。单击该按钮后,
get请求将发送到/myservletpath
。在web.xml中,您将此url映射到servlet。该servlet应该有一个将被调用的重写的
doGet
方法。在doGet中,你可以调用任何你想要的方法。是的,我也可以这样做。但问题是doGet()方法和doPost()方法已经有了一些源代码。。所以我不想调用这些方法。(如果我创建了一个单独的servlet,并将Update mathod的代码放在servlet doGet()或doPost()方法中,那么它就会工作。但我想将该代码放在同一个servlet中)我更新了我的答案,您需要更改代码以使用我下面的答案中描述的表单。这不是javascript onClick函数的用途。感谢cowls提出正确的方法。
<input type="button" value="Update" onclick="<% someid.Update(args[0], args[1]); %>" />