I need a little advise as to how to structure classes in my web application.I have a webstore where items can be added,edited,listed and deleted.When I tried to write servlets for this,it came out like
ItemAddServlet ,ItemEditServlet,ItemsListServlet,ItemDeleteServlet,
ManufacturerAddServlet,ManufacturerEditServlet,ManufacturerListServlet
ItemAddServlet is
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");
}
}
The other servlets are similar,with changes according to the logic involved..
I have mapped the url-patterns to servlets as below
...
<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>
...
I am aware that there are too many servlets here ..It doesn't look like a good design..Can I do the add/edit /list/delete functionalities using just one servlet?That would shrink my servlets to
ItemServlet,ManufacturerServlet
Is that the correct way of doing this?How would I map the url-patterns in this case? /createitem /edititem /listitems
all will map to ItemServlet?
I would be grateful if someone can point out better ways of structuring the code..
thanks
mark