zoukankan      html  css  js  c++  java
  • 底层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

  • 相关阅读:
    重构二叉树
    LeetCode-Construct Binary Tree from Preorder and Inorder Traversal
    二叉平衡树
    二叉树的三种递归与非递归遍历算法
    Jump Game
    Ubuntu中安装最新 Node.js 和 npm
    ORACLE查看并修改最大连接数
    设计模式之工厂模式
    设计模式之单例模式
    设计模式之模板方法模式
  • 原文地址:https://www.cnblogs.com/Shunia123/p/10617028.html
Copyright © 2011-2022 走看看