繁体   English   中英

从JSP调用Servlet的方法

[英]calling Servlet's method from JSP

我正在使用JSP和Servlets开发Web应用程序。

我想在用户点击Update按钮时从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>

您可以向form标记添加其他属性,以指定您是希望请求是get还是post

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

发送一个post请求,然后你可以使用handlePost方法在你的Servlet中选择它

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

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

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

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

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

您可以通过创建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标记。

暂无
暂无

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

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