我是 Java Web 开发的新手,脑子里有很多困惑。我正在尝试用 Java 开发一个小项目,但我不知道应该如何连接 MVC 模式的组件。
我有一个与数据库对话的 DAO,并且能够很好地进行正常的 CRUD 操作。DAO 与包模型一起使用,它反映了我在数据库中的表。O 另一边我有我的 JSP 页面,在 WEB-INF 文件夹中。
我阅读了有关 servlet https://stackoverflow.com/tags/servlets/info的信息标签,但它对我不起作用。如此处所述: 如何使用 MVC 模式开发 JSP/Servlets Web App?
MVC 模式由
- 模型(java 类/bean):反映 DB 数据(带有属性、getter/setter 方法)。
- 在这里查看(JSP 页面),我的 HTML,表示级别。
- 将 url 映射到 JSP 页面的控制器(servlet),对吗?
那么模型工作,视图工作,控制器应该怎么做呢?实际上我得到了这个错误:
HTTP 状态 404 - /crm/hello.jsp 类型。状态报告消息。/crm/hello.jsp 描述。请求的资源不可用。
但是WEB-INF里面的资源是存在的,文件hello.jsp是存在的。这里的代码片段:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Preprocess request: we actually don't need to do any business stuff, so just display JSP.
request.getRequestDispatcher("hello.jsp").forward(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Postprocess request: gather and validate submitted data and display result in same JSP.
request.getRequestDispatcher("hello.jsp").forward(request, response);
}
}
我正在使用 @WebServlet 表示法,它应该替换 web.xml,对吗?我还阅读了答案:Design Patterns web based applications,并在那里解释:
基于请求(动作)的 MVC:这是最容易实现的。(业务)模型直接与 HttpServletRequest 和 HttpServletResponse 对象一起工作。您必须(主要)自己收集、转换和验证请求参数。视图可以用普通的 HTML/CSS/JS 表示,它不会跨请求维护状态。这就是 Spring MVC、Struts 和 Stripes 的工作方式。
我必须将每个 url 映射到 JSP 页面和内部带有请求/响应的 Servlet,或者应该有一个处理所有请求/响应的 Servlet?我应该在哪里跟踪会话?我应该在哪里设置 cookie?我应该在哪里做业务流程?例如将数据从 Web 表单插入到数据库,或者将数据库数据显示到 JSP 页面?
我试图连接点,但有人失踪。问题是模型和视图应该如何与控制器对话?你能提供一些例子吗?