2011-08-04 2 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처럼 작업을 나타 내기 위해 몇 가지 추가 매개 변수를 전달해야합니까? 만약 내가 잘못

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); 
    } 

} 

이이 작업을 수행 할 수있는 방법이면 나도 몰라, 나를 수정하시기 바랍니다 :

은 내가 doGet() 방법의 골격을 만들려고. 하지만이 쉽고 오류가 발생하기 쉬운 작에 대해 별도의 URL을 사용

myapp/item?action=get 

:

+0

이것은 아마도 당신이 찾고있는 대답은 아니지만 아무도 이런 식으로 더 이상하지 않습니다. 전형적으로 springframework와 같은 프레임 워크를 사용합니다. 그렇다면 뷰에 대한 MVC 매핑 컨트롤러에 대한 지원 기능이 매우 훌륭합니다. – Kevin

+0

나는 그것을 고쳤지만 FYI : 쉼표 앞에는 공백이없고 그 뒤에 공백이 하나있다. 목록에 두 개의 항목 만있는 경우 쉼표 대신 * 및 *를 사용하십시오. –

답변

2

당신처럼, 당신의 URL에 매개 변수를 전달할 수 있습니다. 이것이 처음에 그렇게 가르쳐 진 이유 일 것입니다.

HTTP GET으로 무엇을하는지 그리고 POST로 무엇을하는지 조심해야합니다. 예를 들어 항목을 추가 할 때처럼 GET을 사용하면 GET으로 데이터를 수정하는 작업을 수행하고 싶지 않습니다. 특히 삭제를 GET으로 만들지 마십시오. 그렇지 않으면 함께 제공되는 첫 번째 웹 크롤러가 데이터베이스를 완전히 지울 수 있습니다. : -O 또한 Post-Redirect-Get이라는 항목을 확인하십시오. 중복 된 양식 제출을 피하고 페이지를 북마크 할 수있는 일반적인 패턴입니다.

Play과 같은 빠른 개발 프레임 워크를 확인하는 것이 좋습니다. raw jsp/servlet stuff은 너무 지루 해지기 쉽지 않다. 당신은 이미 한 번 힘든 길을 걸어 왔으므로 아무 것도 놓치지 않을 것입니다.