2

我正在使用 JSP 和 Servlet 开发一个 Web 应用程序。

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

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

当我单击更新按钮时,此方法正在调用 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() 方法?

4

3 回答 3

7

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

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

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

<form action="/mypath/someurl">
    <input type="submit" value="Submit" />
</form>

您可以向标记添加附加属性以form指定您希望请求是 aget还是 a post

<form action="/mypath/someurl" method="POST">

将发送一个发布请求,然后您可以使用该handlePost方法在您的 Servlet 中获取它

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

中的代码PlanProtocolEdit。更新应该在 servlet 的doGetordoPost方法中,该方法将通过如上所述配置您的表单来触发。

于 2012-12-20T09:30:13.660 回答
5

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

您的 jsp 中的这一行将被评估为

<input type="button" value="Update" onclick=""></input>在 HTML 页面中。如果你想在点击时调用你的servlet,首先将你的servlet映射到一个url路径,比如web.xml中的/myservletpath,然后使用 <input type="button" value="Update" onclick="location.href='/myservletpath'"></input>

于 2012-12-20T09:33:31.330 回答
0

您可以通过创建 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]); %>" />

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

不要忘记关闭 useBean 标记。

于 2016-01-06T16:31:53.240 回答