new*_*bie 6 java jsp servlets crud
美好的一天!
我打算做一个简单的CRUD应用程序.我打算让我的添加,编辑,删除和查看由一个控制器处理.像这样的东西:
@WebServlet(name="ControllerServlet",
urlPatterns = {"/add","/edit","/delete","/view"}
Run Code Online (Sandbox Code Playgroud)
然后在我的控制器中使用此代码:
String userPath = request.getServletPath();
if (userPath.equals("/add")) {
}
Run Code Online (Sandbox Code Playgroud)
但我不确定这是否是一种常见做法.无论如何,我想知道这是什么最好的做法?这样做的优点和缺点是什么,而不是分离每个控制器?
先感谢您.
坦率地说,通常的做法是采用MVC框架.Java EE 6提供了JSF 2.0作为基于组件的MVC框架.使用单个bean和单个视图可以实现CRUD.您可以在此答案中找到一个基本示例.唯一的控制器由JSF本身提供FacesServlet
.其他MVC框架遵循更少或更多相同的意识形态.
如果您不想采用MVC框架,因为您希望首先学习JSP/Servlets和/或您的项目不会超出CRUD表单,那么很难指出"正确"的方法.至少,使用多个URL模式和if/else语句是一个不好的标志.你基本上有2个选择.
只需使用4个独立的servlet.使用Servlet 3.0,您不再需要web.xml
操作,并且添加另一个servlet类非常容易.每个servlet类都充当一个"动作"类,每个类都有明确的责任.
使用单个servlet,但不要使用多个URL模式,也不要使用if/else
块来确定操作.地图它在一个单一的URL模式,例如/action/*
或*.do
让你可以像URL调用它action/create
,action/read
等或者通过create.do
,read.do
等于是像下面创建一个接口
public interface Action {
void execute(HttpServletRequest request, HttpServletResponse response);
}
Run Code Online (Sandbox Code Playgroud)
实现基于该接口,所有的动作CreateAction
,ReadAction
等,并在你的servlet一个Map<String, Action>
您填写期间,按如下init()
方法:
actions.put("create", new CreateAction());
actions.put("read", new ReadAction());
// ...
Run Code Online (Sandbox Code Playgroud)
并按如下方式调用它(假设使用了URL模式/action/*
)
actions.get(request.getPathInfo().substring(1)).execute(request, response);
Run Code Online (Sandbox Code Playgroud)
这也是普通MVC框架深入研究的方式.
归档时间: |
|
查看次数: |
5727 次 |
最近记录: |