2011-08-04 20 views
1

Itemのリストを処理したり、新しいアイテムを追加したり、既存のアイテムを編集したり、アイテムを削除したりする単一のサーブレットを作成する必要があります。単一のサーブレットを作成してアイテムを追加/編集/削除したり、アイテムをリストしたりする

アイテムを編集してアイテムのリストを表示するJSPページを作成しました。 itemslisting.jspでは、私は各項目の削除と編集のリンクを入れましたが、私はServletでメソッドを構築する方法についてはあまりよく分かりません。

... 
<table> 
<c:forEach var="item" items="${items}" varStatus="listCount"> 

<tr><td>${listCount.count} </td> 
<c:url value="edititem" var="edititemurl"> 

    <c:param name="itemId" value="${item.item_id}" /> 

</c:url> 
<td><a href="${edititemurl }" >${item.name}</a></td> 
<c:url value="deleteitem" var="deleteitemurl"> 

    <c:param name="itemId" value="${item.item_id}" /> 

</c:url> 

<td><a href="${deleteitemurl}" >DELETE</a></td> 

</tr> 

</c:forEach> 

</table> 
... 
<a href="<c:url value="addItem"/>">add new item </a> 
... 

itemslisting.jsp

は、私たちのトレーニングでは、我々は、追加、編集、リストやアイテムを削除するために、別のサーブレットを作成するように求めていました。そのような場合、これらのURLごとにマッピングを適切なサーブレットに行うことはできますが、多くのサーブレットを作成することは愚かなことです。どのように上記のjspの異なるURLを単一の に設定するのですか?ItemServlet? edititemurlと一緒に edititemのように、操作を指示するために追加のパラメータを渡す必要がありますか?

私はdoGet()メソッドのスケルトンを作成しようとしました:

public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException { 
    String additemop = req.getParameter("additemoperation"); 
    String edititem = req.getParameter("additemoperation"); 
    String itemId = req.getParameter("itemId"); 
    ... 
    if(additemop!=null){ 
     showAddItemPage(req,resp); 
    } 
    else if((edititemop!=null) && (itemId != null)){ 
     showEditItemPage(req,resp); 
    } 
    else{ 
     showListItemsPage(req,resp); 
    } 

} 

これは、これを行う方法であれば、私は知らない私は間違っている場合、私を修正してください。

+0

これはおそらくあなたが探している答えではありませんが、誰もこれ以上これをしません。典型的なものはspringframeworkのようなフレームワークを使用することです。 MVCマッピングコントローラのビューへのサポートが組み込まれています。 – Kevin

+0

私はそれを修正しましたが、FYI:コンマの前に空白はなく、後ろにスペースが1つあります。リストに2つの項目しかない場合は、コンマの代わりに*と*を使用してください。 –

答えて

2

あなたが好き、あなたのURLにパラメータを渡すことができます。これらのために別々のURLを使用

myapp/item?action=get 

は、しかし、簡単かつ少ないエラーが発生しやすいです。それが、あなたが最初にそのように教えられた理由です。

あなたはHTTP GETを使って何をしているのか、POSTを使って何をするのか注意する必要があります。あなたの例題(項目を追加する)のようにGETを使うのは悪いですが、GETを使ってデータを変更する必要はありません。特に、削除をGETにしないでください。あるいは、最初に出てくるWebクローラーがデータベースを抹消することができます。 :-Oまた、Post-Redirect-Getと呼ばれるものをチェックします。これは、重複したフォームの提出を避け、ページをブックマークできるようにする一般的なパターンです。

Playのような高速開発フレームワークをチェックすることをおすすめします。生のJSP /サーブレットは、あまりにも面倒です。あなたはすでに一度苦労してしまったので、何かを逃すことはありません。

関連する問題