java - 编写单个 servlet 来添加/编辑/删除项目以及列出项目

标签 java jsp servlets

我需要创建一个 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);
    }

}

不知道这样是否可行,如有错误请指正。

最佳答案

您可以通过网址传递参数,例如:

myapp/item?action=get

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

您需要小心使用 HTTP GET 和 POST 的操作。像在示例中那样使用 GET(添加项目)是不好的,您不想使用 GET 执行任何修改数据的操作。特别是不要使用 GET 进行删除,否则出现的第一个网络爬虫可能会清除您的数据库。 :-O 另请查看名为 Post-Redirect-Get 的内容,这是避免重复表单提交并使页面可添加书签的常见模式。

我建议查看快速开发框架,例如 Play 。这里的原始 jsp/servlet 内容太乏味了,无法进行研究。你已经经历过一次艰难的路了,所以你不会错过任何东西。

关于java - 编写单个 servlet 来添加/编辑/删除项目以及列出项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6946358/

相关文章:

java - spring中如何使用表单将数据从jsp发送到 Controller

java - 通过 UCanAccess 插入时出现 "invalid character value for cast"错误

java - 如何查找由 javax.servlet.http.Cookie 创建的客户端 cookie

java.sql.SQLException : Duplicate entry 'sd' for key 'PRIMARY' 异常

java - Web APP中添加Service层,在jsp上显示DB内容

java - 关于将纳秒转换为秒后显示的输出的问题

java - 如何让 WebLogic 使用多处理器机器上的所有处理器

java - 如何使用JavaScript函数重定向到Struts2中的另一个jsp页面

java - JSP Tomcat 和 chrome:net::ERR_INCOMPLETE_CHUNKED_ENCODING 200

java - GWT 用 Ja​​va 类替换 JSP