Java Servlet Dispatcher生命周期

时间:2015-03-06 10:48:56

标签: java jsp servlets controller requestdispatcher

我是Java Web Development的新手,我脑子里有很多困惑。我试图用Java开发一个小项目,但我不知道如何连接MVC模式的组件。

我有一个与数据库通信的DAO,能够很好地进行正常的CRUD操作。 DAO使用包Model,它反映了我在DB中的表。另一方面,我有我的JSP页面,在WEB-INF文件夹中。

我读了这个关于servlets https://stackoverflow.com/tags/servlets/info的信息标签,但它对我不起作用。如下所述: How to develop JSP/Servlets Web App using MVC pattern?

MVC模式由

组成
  1. 模型(java classes / beans):反映数据库数据(带属性,getter / setter方法)。
  2. 查看(JSP页面),这是我的HTML,表示级别。
  3. 映射的
  4. 控制器(servlet) urls to JSP pages,对吧?
  5. 所以模型工作,视图工作,控制器应该做什么?实际上我得到了这个错误:

      

    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对象。你必须收集,转换和验证   请求参数(大多数)自己。可以表示视图   通过简单的vanilla HTML / CSS / JS,它不会保持状态   要求。这就是Spring MVC,Struts和Stripes等   的工作原理。

    我必须将每个url映射到JSP页面和带有Request / Response的Servlet内部或那里应该是一个处理所有请求/响应的Servlet? 我应该在哪里追踪会话? 我应该在哪里设置cookie? 我应该在哪里开展业务流程?例如,将数据从Web表单插入数据库,或将数据显示到JSP页面?

    我试图连接点,但有人失踪了。问题是模型和视图应该如何与控制器对话?你能提供一些例子吗?

0 个答案:

没有答案