底层Servlet及深入理解MVC到SpringMVC

Servlet 简介

开发动态JavaWeb工程时,用到的技术主要有两种Servlet和jsp ,开发Servlet 需要引入tomcat 下lib 包,其中有个 servlet-api.jar,开发Servlet 需要引入这个jar。开发JSP 需要引入tomcat中的 JSP-api.jar 文件。

Servlet 主要处理 http 的请求 和 响应。

创建代码
public class HelloworldServlet extends HttpServlet {

}

查看 servlet-api.jar 中的HttpServlet 这个类,如下所示
public abstract class HttpServlet extends GenericServlet {
    private static final long serialVersionUID = 1L;
    private static final String METHOD_DELETE = "DELETE";
    private static final String METHOD_HEAD = "HEAD";
    private static final String METHOD_GET = "GET";
    private static final String METHOD_OPTIONS = "OPTIONS";
    private static final String METHOD_POST = "POST";
    private static final String METHOD_PUT = "PUT";
    private static final String METHOD_TRACE = "TRACE";
    private static final String HEADER_IFMODSINCE = "If-Modified-Since";
    private static final String HEADER_LASTMOD = "Last-Modified";
    private static final String LSTRING_FILE = "javax.servlet.http.LocalStrings";
    private static final ResourceBundle lStrings = ResourceBundle.getBundle("javax.servlet.http.LocalStrings");

    public HttpServlet() {
    }

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String protocol = req.getProtocol();
        String msg = lStrings.getString("http.method_get_not_supported");
        if (protocol.endsWith("1.1")) {
            resp.sendError(405, msg);
        } else {
            resp.sendError(400, msg);
        }

    }

    protected long getLastModified(HttpServletRequest req) {
        return -1L;
    }

    protected void doHead(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        if (DispatcherType.INCLUDE.equals(req.getDispatcherType())) {
            this.doGet(req, resp);
        } else {
            NoBodyResponse response = new NoBodyResponse(resp);
            this.doGet(req, response);
            response.setContentLength();
        }

    }
  .........  
}

这个类中封装了各种http协议请求,get.post.........

Servlet和JSP两者最大的区别就是,Servlet以Java程序为主, 输出HTML代码时需要使用out.println函数,也就是说Java中内嵌HTML; 而JSP则以HTML页面为主,需要写Java代码时则在页面中直接插入Java代码, 即HTML中内嵌Java。典型的例子如下:

JSP文件

复制代码代码如下:

<html>  
   <body>  
     <h1>  
     <% out.println("JSP"); %>  
     </h1>  
   </body>  
 </html> 

Servlet

复制代码代码如下:

public class MyServlet ... {  
   ...  
   out.println("<html>");  
   out.println("<body>");  
   out.println("<h1>");  

   out.println("Servlet);  

   out.println("</h1>");  
   out.println("</body>");  
   out.println("</html>");  
 } 

MVC简介  ----MVC 框架由底层的Servlet 发展而来

MVC是三个单词的首字母缩写,它们是Model(模型)、View(视图)和Controller(控制)。

所谓MVC模型就是将数据、逻辑处理、用户界面分离的一种方法。

  • M(Model, 模型):用于数据处理、逻辑处理。
  • V(View,视图):用于显示用户界面。
  • C(Controller,控制器):根据客户端的请求控制逻辑走向和画面。

而在Java中,MVC这三个部分则分别对应于 JavaBeans、JSP和Servlet。

  • M = JavaBeans:用于传递数据,拥有与数据相关的逻辑处理。
  • V = JSP:从Model接收数据并生成HTML
  • C = Servlet:接收HTTP请求并控制Model和View

MVC 更详细的简介 https://blog.csdn.net/qq_21225505/article/details/81666986

常见的 MVC 框架有Struts1/2,Spring MVC等,实际上都是在最底层的Servlet规范中发展而来的。而不同MVC框架其M(对应JAVA的POJO类)和V(如JSP,HTML等)一般是相同的,最主要的区别在C,它是HTTP处理请求、响应的关键。

SpringMVC和Struts 的发展历程及其之间的区别 https://www.cnblogs.com/doit8791/p/5847498.html

SpringMVC常见注解https://www.cnblogs.com/sunniest/p/4555801.html

原文地址:https://www.cnblogs.com/Shunia123/p/10617028.html