servlet是一個專門用於處理HTTP請求和響應的java程序。也能夠說一個實現方法方案和標準。html
全部servlet的類名都帶有servlet後綴。通常咱們就是新建一個繼承於HttpServlet類的子類,並重寫doGet和doPost兩個函數!這兩個函數最終都會調用process方法,該方法是整個servlet控制器的核心。前端
1. Servlet 可使用 javax.servlet 和 javax.servlet.http 包建立java
2. Servlet 是服務 HTTP 請求並實現 javax.servlet.Servlet 接口的 Java 類。Web 應用程序開發人員一般編寫 Servlet 來擴展 javax.servlet.http.HttpServlet,並實現 Servlet 接口的抽象類專門用來處理 HTTP 請求。web
3. servlet原生方法編寫demo參考:http://www.runoob.com/servlet/servlet-first-example.htmlspring
// 導入必需的 java 庫 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; // 擴展 HttpServlet 類 public class HelloWorld extends HttpServlet { private String message; public void init() throws ServletException { // 執行必需的初始化 message = "Hello World"; } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 設置響應內容類型 response.setContentType("text/html"); // 實際的邏輯是在這裏 PrintWriter out = response.getWriter(); out.println("<h1>" + message + "</h1>"); } public void destroy() { // 什麼也不作 } }
springMVC使用一個Servlet做爲調度器,每個HTTP請求都會發送給調度器,也就是這個servlet。而咱們在springMVC配置的時候,就時候用<servlet>標籤來聲明一個servlet調度器。而後在配置文件中聲明一個bean來注入。把他們所有變成dispatcher servlet(調度器)。(關於spring的配置請看個人另一篇博客:SpringMVC的配置)編程
1. 咱們基於原生的方法,繼承於HttpServlet類的子類,並重寫doGet和doPost兩個函數實現,而後在這兩個函數中處理咱們的業務以後,響應給了前端。這樣的耦合性很是的大!那pring框架的出發點就是經過解耦的方式實現簡化POJO的編程。服務器
2. 如今把原生的servlet程序拆分一下,拆分紅一個專門負責接收(dispatcher[調度器])和多個專門負責響應(以業務區分的controller)的對象。dispatcher接收到HTTP請求以後,調用對應的業務員(controller)進行處理,而後把處理完的數據交付給到dispatcher,再由它響應給客戶端。其實這些controller業務員對象也能夠把一些任務分攤給各個部門如倉庫管理員DAO或者IT中心email,controller主要負責調度這些部門的資源,整合以後交給領導controller,controller主管再由HTTP渠道調度員把信息響應發出去。因此,以下圖:mvc
3. 以上都是沒有spring的狀況下提煉出來的方案。那如今咱們一塊兒來看下spring中如何實現以上的方法。app
由第2種方案咱們知道至少須要手寫兩個程序:一個調度器dispatcher和一個controller。而在springMVC的框架就直接包含了dispatcher servlet。你只須要進行簡單的配置,spring框架便幫你實現了一個調度器dispatcher(其實就是servlet)。用戶只須要去考慮業務的事也就是controller及其如下的各個實現。框架
在spring2.5以前寫controller類必須實現org.springframework.web.servlet.mvc.controller接口!spring3.0能夠基於註解的方式來實現controller!
1. @Controller和@RequestMapping是springMVC API最重要的兩個類型!
由@Controller註釋的類就是一個controller類就成了一個controller,而這個類就是一個POJO。
由@RequestMapping註釋的方法就是一個請求處理方法。而這個方法也是一個普普統統的方法。
由此能夠看出spring的高明,就是一個隱者的身份去利用POJO來實現本身的目的,而又不會對POJO帶來打擾,這些POJO在不爲spring服務的時候,完徹底全能夠當成一個普通的Java類程序和別人進行交互,和spring沒有什麼大的糾纏關係。
2. spring使用掃描機制來找到應用程序中全部基於註解的控制器。這個掃描的配置就在調度器配置文件中dispatcher-servlet.xml中進行配置的。這就造成了一個調度器dispatcher和多個controller的綁定!也就是組合好了一個如上圖的業務部門!
3. 註解進行spring的依賴注入!@Autowired和@Service!
有關spring和依賴注入,請查閱我另一個博客:http://www.javashuo.com/article/p-bgcqibpu-da.html