为添加/编辑/列表项构造servlet的正确方法

时间:2011-06-28 12:18:11

标签: servlets java-ee structure

我需要一些关于如何在我的Web应用程序中构建类的建议。我有一个webstore,可以添加,编辑,列出和删除项目。当我尝试为此编写servlet时,它就像

    ItemAddServlet ,ItemEditServlet,ItemsListServlet,ItemDeleteServlet,
ManufacturerAddServlet,ManufacturerEditServlet,ManufacturerListServlet

ItemAddServlet是

public class ItemAddServlet extends HttpServlet {
    private ItemDaoFactory bfactory = ItemDaoFactory.getInstance();
    private ItemDaoImpl itemdaoimpl = (ItemDaoImpl) bfactory.getDao();
    private ManufacturerDaoFactory mfactory = ManufacturerDaoFactory.getInstance();
    private ManufacturerDaoImpl mandaoimpl = (ManufacturerDaoImpl) mfactory.getDao();

    public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        List<Manufacturer> manufacturers = mandaoimpl.findAllManufacturers();
        request.setAttribute("manufacturers",manufacturers);
        RequestDispatcher dispatcher = request.getRequestDispatcher("itemaddedit.jsp");     
        dispatcher.forward(request, response);
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{   
        String name = request.getParameter("name");     
        String price = request.getParameter("price");
        String manId = request.getParameter("manufacturer");
        Manufacturer manufacturer = mandaoimpl.findManufacturerById(Long.parseLong(manufacturerId));    
        Item item = new Item();
        item.setName(name);     
        item.setPrice(Float.parseFloat(price));
        item.setManufacturer(manufacturer);     
        itemdaoimpl.saveOrUpdateItem(item);     
        response.sendRedirect("listitems");
    }
}

其他servlet类似,根据所涉及的逻辑进行更改。

我已将url-patterns映射到servlet,如下所示

...
<servlet-mapping>
  <servlet-name>itemaddservlet</servlet-name>
  <url-pattern>/createitem</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>itemeditservlet</servlet-name>
  <url-pattern>/edititem</url-pattern>
 </servlet-mapping>
  <servlet-mapping>
  <servlet-name>itemlistservlet</servlet-name>
  <url-pattern>/listitems</url-pattern>
 </servlet-mapping>
...

我知道这里有太多的servlet ..它看起来不是一个好的设计..我可以使用一个servlet来执行添加/编辑/列表/删除功能吗?这会将我的servlet缩小为< / p>

ItemServlet,ManufacturerServlet

这是正确的做法吗?在这种情况下我如何映射网址模式?所有/createitem /edititem /listitems都将映射到ItemServlet?

如果有人能指出构建代码的更好方法,我将不胜感激。

感谢

标记

1 个答案:

答案 0 :(得分:1)

有几个框架可以帮助解决这种模式。如果您想使用纯servlet,最简单的方法是将参数传递给servlet,指示您尝试执行的操作(即创建,编辑,列表)。

您可能会发现有用的几个框架位于

之下
  • 春天
  • MVC Struts