JavaWeb-Servlet(一)
2)平臺獨立,性能優良,能以線程方式運行 3)Servlet API為Servlet提供了通用的編程接口 4)Servlet一般在容器中運行,對外統一接口,由容器來調用。 常見的Servlet容器:Tomcat 二 Tomcat與Servlet的關系 上面說過,Servlet需要對外統一接口,那麽誰來統一這些接口呢?這個時候就需要容器來調用。 Tomcat是一個Web應用輕量級服務器,同時也是一個Servlet\JSP容器。其作為Servlet容器,有三種工作模式:獨立的Servlet容器、進程內的Servlet容器和進程外的Servlet容器。
web服務器收到客戶端的Servlet訪問請求後,若是服務器裝載並創建了Servlet的實列對象
1) Tomcat將http請求文本進行解析,然後封裝稱為HttpServletRequest類型的Requset對象
2) Tomcat將要響應的信息封裝為HttpServletResponse類型的response對象進行返回
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { request; HttpServletResponse response;try { request = (HttpServletRequest)req; response = (HttpServletResponse)res; } catch (ClassCastException var6) { throw new ServletException("non-HTTP request or response"); } this.service(request, response); }
三 創建一個Servlet
3.1 Servlet的執行流程
首先,如果瀏覽器由這樣一個輸入:http://localhost:8080/demo/MyServlet
http:http協議
統一資源定位符URL。
格式:<協議>://<主機>:<端口>/<路徑>
localhost:域名
8080:Tomcat端口號
demo: web應用的名稱,在webapps下找是否存在demo的目錄。
MyServlet:web資源,在demoweb的應用的應用下查找是否存在此資源。
/MyServlet資源就是我們的一個Servlet
-> 得到/MyServlet字符串
-> 使用/MyServlet到web.xml文件中查找每一個<servlet-mapping>下的<url-pattern>標簽裏的內容,然後得到sevlet-name
-> 使用sevlet-name去servlet標簽中找到對應的相同名稱的servlet配置。
-> 得到servlet配置中的servlet-class內容。
<servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
3.2 DIEA開發Servlet
1 新建JAVA EE Web Appication工程。
2 新建一個Servlet類。
3 導入需要依賴的tomcat目錄下的servlet-api.jar包
4 編寫FirstServlet的代碼.
package javademo; import java.io.IOException; import java.io.PrintWriter; public class FirstrServlet extends javax.servlet.http.HttpServlet { protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException { } protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException { response.setContentType("text/html"); PrintWriter pw = response.getWriter(); pw.write("<h1> hello first servlet!</h1>"); } }
5 編寫web,xml配置文件 dom4j才能正確解析
<servlet> <servlet-name>FirstrServlet</servlet-name> <servlet-class>javademo.FirstrServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>FirstrServlet</servlet-name> <!-- 響應所有請求--> <url-pattern>/FirstrServlet</url-pattern> </servlet-mapping>
3.3 詳解Servlet實現原理
JavaWeb-Servlet(一)