2

I am developing a web application using JSP and Servlets.

I wants to call servlet's method from JSP page when user click's on the Update button.

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

When I click on Update button then this method is calling the servlet, But the problem is that when form is loaded then this method is called automatically.

Thanks in advance.....

Source Code....

<%@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>

Is there any way that I can call the servlet method other than dogGet() and doPost() without invoking the servlets dogGet() and doPost() methods?

4

3 に答える 3

7

実際の入力ボタンではなく、フォーム自体でアクションを指定する必要があります。

フォームでアクションを定義する場合。例えば

フォーム送信ボタンは、その URL にフォームを送信します。例えば

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

タグに属性を追加してform、リクエストを にするか にするかを指定できgetますpost

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

handlePost投稿リクエストを送信すると、メソッドを使用してサーブレットでこれを取得できます

上記のアプローチを使用する必要があります。現在、javascript onclick イベントで Java メソッドを呼び出そうとしています。これは正しくなく、あなたが思っていることをしていません。

のコードPlanProtocolEdit。更新は、上記のようにフォームを構成することによってトリガーされるサーブレットのdoGetまたはメソッド内にある必要があります。doPost

于 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ページで。クリック時にサーブレットを呼び出す場合は、最初にサーブレットを web.xml の /myservletpath などの URL パスにマップしてから、 <input type="button" value="Update" onclick="location.href='/myservletpath'"></input>

于 2012-12-20T09:33:31.330 に答える
0

jspのuseBeanを作成することで、doPost()、doGet()以外のサーブレットメソッドを呼び出すことができます。

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

サーブレット メソッド onclick を次のように呼び出します。

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

この jsp Bean は、useBean タグで指定された ID を使用して、jsp ページでアクセスできるサーブレット クラスを識別します。

useBean タグを閉じることを忘れないでください。

于 2016-01-06T16:31:53.240 に答える