1、通用初級階段html
1. 得寫一個 web 工程,一個服務器java
切換另外一個工做空間 -------- File ------- switchworkspace 。 修改字體,Genernl 中 app 中 color 中 basic 中 test ,改編碼。 再配服務器,右鍵 new 一個 server ,按着感受來,再而後 open ,點擊第二個,保存all。 創建一個 Dymamic web Servlet,輸入名字, 3.0 改爲 2.5 。 在工程裏創建一個 html 文件,如何在其餘電腦訪問這個 html 文件。在工程處右鍵點擊 Run as ... 就能夠在其餘電腦上訪問了: http://localhost:8080/HelloServlet/index.html
2. 測試運行 web 工程。web
1. 新建一個類, 實現Servlet接口瀏覽器
public class HelloServlet implements Servlet{ @Override public void destroy() { // TODO Auto-generated method stub } @Override public ServletConfig getServletConfig() { // TODO Auto-generated method stub return null; } @Override public String getServletInfo() { // TODO Auto-generated method stub return null; } @Override public void init(ServletConfig arg0) throws ServletException { // TODO Auto-generated method stub } @Override public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { System.out.println("hello,zhangkaijian"); } }
只在 service 中添加語句。tomcat
2. 配置Servlet , 用意: 告訴服務器,咱們的應用有這麼些個servlet服務器
在webContent/WEB-INF/web.xml裏面寫上如下內容。 <!-- 向tomcat報告, 我這個應用裏面有這個servlet, 名字叫作HelloServlet , 具體的路徑是com.itheima.servlet.HelloServlet --> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>com.itheima.servlet.HelloServlet</servlet-class> </servlet> 全路徑就是包名+類名 <!-- 註冊servlet的映射。 servletName : 找到上面註冊的具體servlet, url-pattern: 在地址欄上的path 必定要以/打頭 --> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/a</url-pattern> </servlet-mapping> 3. 在地址欄上輸入 http://localhost:8080/項目名稱/a
</welcome-file-list> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>com.heima.servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/a</url-pattern> </servlet-mapping> </web-app>
先後的 servlet -name 必須相同app
a.(向tomcat報告, 我這個應用裏面有這個servlet, 名字叫作HelloServlet , 具體的路徑是com.itheima.servlet.HelloServlet)前面一段修改的內容eclipse
b.(註冊servlet的映射。 servletName : 找到上面註冊的具體servlet, url-pattern: 在地址欄上的path 必定要以/打頭) -------後面一段ide
配置好了以後,重置Tomcat服務器,在瀏覽器中輸入 http://localhost:8080/HelloServlet/a ,回頭看 eclipse 中的 setup 信息 。有信息出現就說明成功了。post
在 弄全路徑時,
<servlet-class>com.heima.servlet.HelloServlet02</servlet-class>
在類的下線點擊,再複製全路徑。
2、利用繼承關係,重寫方法。
<servlet> <servlet-name>HelloServlet02</servlet-name> <servlet-class>com.heima.servlet.HelloServlet02</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet02</servlet-name> <url-pattern>/HelloServlet02</url-pattern> </servlet-mapping>
繼承類
public class HelloServlet02 extends HttpServlet { // @Override // protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { // System.out.println("hellodaishiqi02-----"); // } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub super.doGet(req, resp); System.out.println("get--"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub super.doPost(req, resp); System.out.println("post--"); } }
在瀏覽器裏輸入:http://localhost:8080/HelloServlet/HelloServlet02,便可。
3、Servlet 生命週期
在其中 doGet 和 doPost 方法中 ,都不用 super 中父類的方法。,直接刪掉。
init方法
在建立該servlet的實例時,就執行該方法。 一個servlet只會初始化一次, init方法只會執行一次 默認狀況下是 : 初次訪問該servlet,纔會建立實例
service方法
只要客戶端來了一個請求,那麼就執行這個方法了。 該方法能夠被執行不少次。 一次請求,對應一次 service 方法的調用
destroy方法
servlet 銷燬的時候,就會執行該方法 1. 該項目從 tomcat 的裏面移除。 2. 正常關閉 tomcat 就會執行 shutdown.bat
doGet 和 doPost不算生命週期方法,所謂的生命週期方法是指,從對象的建立到銷燬必定會執行的方法, 可是這兩個方法,不必定會執行。
讓Servlet建立實例的時機 提早。
<servlet> <servlet-name>HelloServlet04</servlet-name> <servlet-class>com.itheima.servlet.HelloServlet04</servlet-class> <load-on-startup>2</load-on-startup> </servlet>
ServletConfig
在測試類中
public class HelloServletConfig extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 獲得servlet配置對象 。 專門用於在配置servlet的信息 ServletConfig config = getServletConfig(); //獲取到的是配置servlet裏面 servlet-name 的文本內容 String servletName = config.getServletName(); System.out.println("servletName"+servletName); //二、。 能夠獲取具體的某一個參數。 String address = config.getInitParameter("address"); System.out.println("address="+address); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req,resp); } }
在上面 doGet 方法中 ,還能夠遍歷出全部參數和名稱。
Enumeration<String> names = config.getInitParameterNames(); //遍歷取出全部的參數名稱 while (names.hasMoreElements()) { String key = (String) names.nextElement(); String value = config.getInitParameter(key); System.out.println("key==="+key + " value="+value); }
在 web.xml 中
<servlet> <servlet-name>aa</servlet-name> <servlet-class>com.heima.servlet.HelloServletConfig</servlet-class> <init-param> <param-name>address</param-name> <param-value>beijing...</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>aa</servlet-name> <url-pattern>/HelloServletConfig</url-pattern> </servlet-mapping>