底層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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM