美好的一天!
我打算做一个简单的CRUD应用程序。我打算让我的添加,编辑,删除和查看由一个控制器处理。像这样:
@WebServlet(name="ControllerServlet",
urlPatterns = {"/add","/edit","/delete","/view"}
然后在我的控制器中使用此代码:
String userPath = request.getServletPath();
if (userPath.equals("/add")) {
}
但我不确定这是否是一种常见做法。无论如何,我想知道这是什么最好的做法?这样做的优点和缺点是什么,而不是分离每个控制器?
提前谢谢。
答案 0 :(得分:6)
坦率地说,常规练习是采用MVC框架。 Java EE 6提供了JSF 2.0作为基于组件的MVC框架。使用单个bean和单个视图可以实现CRUD。您可以在this answer中找到一个基本示例。唯一的控制器由JSF本身提供,FacesServlet
。其他MVC框架遵循的意识形态越来越少。
如果您不想采用MVC框架,因为您希望首先学习JSP / Servlet和/或您的项目不会超出CRUD表单,那么很难指出“正确”的方法。至少,使用多个URL模式和if / else语句是一个不好的标志。你基本上有2个选择。
只需使用4个独立的servlet即可。使用Servlet 3.0,您不再需要使用web.xml
,并且添加另一个servlet类非常容易。每个servlet类都充当一个“动作”类,每个类都有明确的责任。
使用单个servlet,但不要使用多个URL模式,也不要使用if/else
块来确定操作。将其映射到单个网址格式,例如/action/*
或*.do
,以便您可以通过action/create
,action/read
等网址或create.do
来调用它, read.do
等。然后创建如下的界面
public interface Action {
void execute(HttpServletRequest request, HttpServletResponse response);
}
根据此界面CreateAction
,ReadAction
等实施所有操作,并在您的servlet中添加Map<String, Action>
,您在init()
方法期间填写如下:
actions.put("create", new CreateAction());
actions.put("read", new ReadAction());
// ...
并按如下方式调用它(假设已使用/action/*
的URL模式)
actions.get(request.getPathInfo().substring(1)).execute(request, response);
这也是普通MVC框架深入研究的方式。
答案 1 :(得分:3)
您是否考虑过使用JAX-RS框架(如Jersey)将其作为RESTful服务?然后你利用URI和HTTP操作:PUD,GET,POST,DELETE for CRUD:
例如:
获取http://www.example.com/customer/1
删除http://www.example.com/customer/1