1. 程式人生 > >servlet(JavaWeb核心)、HttpServlet

servlet(JavaWeb核心)、HttpServlet

1、servlet(JavaWeb核心)
(1)建立類實現Servlet介面implement Servlet import javax.servlet.Servlet;
(2)覆蓋尚未實現的方法
(3)在web.xml進行servlet的配置
舉個例子:
[<servlet-mapping></servlet-mapping>裡面的]的ServletQuick和
<servlet-name>ServletQuick</servlet-name>[ <servlet></servlet>裡面的]的ServletQuick
名字必須一致;

<servlet>
<servlet-name>ServletQuick</servlet-name>
<servlet-class>com.oracle.web.ServletQuick</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletQuick</servlet-name>
<url-pattern>/ServletQuick</url-pattern>
</servlet-mapping
>

(4)Servlet介面中的方法
init(ServletConfig config)何時執行:servlet物件建立的時候執行
ServletConfig : 代表的是該servlet物件的配置資訊
service(ServletRequest request,ServletResponse response)何時執行:每次請求都會執行
ServletRequest :代表請求 認為ServletRequest 內部封裝的是http請求的資訊
ServletResponse :代表響應 認為要封裝的是響應的資訊
destroy()何時執行:servlet銷燬的時候執行

package
com.oracle.web; import java.io.IOException; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class ServletQuick implements Servlet{ @Override public void destroy() { // TODO Auto-generated method stub System.out.println("destroy方法正在執行"); } @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 //ServletConfig裡面封裝的是該Servlet在web.xml裡面的配置資訊 System.out.println("init方法正在執行"); ServletContext servletContext = arg0.getServletContext(); } @Override public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { // TODO Auto-generated method stub System.out.println("service方法正在執行"); arg1.getWriter().write("service方法正在執行"); } }

當再次執行時:

當直接點選紅色方塊時:

當點選stop時:

(5)Tomcat引擎
解析請求的資源地址;
舉個例子:localhost:8080/WEB02/ServletQuick
先找到WEB02檔案的web.xml
然後找到 <url-pattern>/ServletQuick</url-pattern>裡面的ServletQuick
進而找到<servlet-name>ServletQuick</servlet-name>[<servlet-mapping></servlet-mapping>裡面的]的ServletQuick
再找到<servlet-name>ServletQuick</servlet-name>[ <servlet></servlet>裡面的]的ServletQuick
最後找到<servlet-class>com.oracle.web.ServletQuick</servlet-class>的com.oracle.web.ServletQuick

 

 

建立Servlet物件;
建立代表請求的request物件和代表響應的response物件;
response響應物件注意是否為空;
每次訪問service方法都會建立一對新的request和response物件;

 


(6)基本配置:
完全匹配:/aaa
目錄匹配:/aaa/bbb/ccc/*
副檔名匹配:*.abcd
(7)何時建立:預設第一次訪問時建立
當在servlet的配置時 加上一個配置 <load-on-startup>3</load-on-startup>[中間的“3”代表優先順序] servlet物件在伺服器啟動時就建立

 

(8)預設Servlet:
url-pattern配置一個/,/代表該servlet是預設的servlet
當你訪問資源地址所有的servlet都不匹配時,預設的servlet負責處理[D:\javaEE\tomcat-7.0.52(x86)\conf\web.xml]

<servlet-mapping>
     <servlet-name>default</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

注:靜態資源舉例比如HTML、CSS等;
2、HttpServlet
(1)繼承 GenericServlet 實現 Servlet, ServletConfig,java.io.Serializable

 

(2)重寫service()方法:
在該方法中先將ServletRequest和ServletResponse強轉為了HttpServletRequest和HttpServletResponse;
然後呼叫過載的service()方法,並將剛剛強轉得到物件傳遞到過載的方法中;