有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java编写一个servlet来添加/编辑/删除一个项目,并列出项目

我需要创建一个Servlet来处理一些Item的列表、添加新项、编辑现有项以及删除项

我编写了JSP页面,用于编辑项目并显示项目列表。在itemslisting.jsp中,我为每个项目添加了删除和编辑链接,但我不太确定如何在Servlet中构造方法

itemslisting.jsp

...
<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>
...

在我们的培训中,我们被要求创建单独的servlet来添加、编辑、列出和删除项目。在这种情况下,可以将这些URL中的每一个映射到适当的servlet,但创建这么多servlet感觉很傻。如何将上述jsp中的不同URL配置为单个ItemServlet?我是否必须传递一些额外的参数来指示操作,比如edititem以及edititemurl

我试图创建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);
    }

}

我不知道这是否是解决问题的方法,如果我错了,请纠正我


共 (1) 个答案

  1. # 1 楼答案

    您可以通过url传递参数,如:

    myapp/item?action=get
    

    不过,为这些内容使用单独的URL更容易,也不容易出错。这可能就是为什么你一开始就被这样教的原因

    你需要小心使用HTTP GET和POST。像您在示例中那样使用GET(添加项)是不好的,您不想用GET做任何修改数据的事情。尤其是不要让删除成为一种手段,否则出现的第一个webcrawler可能会毁掉你的数据库-O还可以查看名为Post-Redirect-Get的东西,这是一种常见的模式,可以避免重复提交表单,并使页面成为书签

    我建议检查一下快速开发框架,比如Play。这里的原始jsp/servlet内容实在是太单调乏味了。你已经经历过一次艰难的道路,所以你不会错过任何东西