天天看點

servlet的工作原理及常用對象

servlet工作原理

原理:
   1.當使用者請求一個servlet
   2.伺服器會查找web.xml檔案,掃描該檔案中servlet-mapping的url-pattern
   3.找到比對的url-pattern
   4.找到與url-pattern綁定的servlet的邏輯名稱
   5.根據servlet邏輯名稱查找servlet的聲明部分,找到與之比對的邏輯名
   6.根據該邏輯名稱找到對應的servlet-class
   7.更加servlet-class提供的類的全名加載servlet
   8.執行個體化和初始化servlet
   9.調用該servlet方法提供對應的服務
   
   注意:servlet是由程式員定義的,使用者隻需要去通路,其他的工作(建立執行個體、初始化、接受請求)全部由伺服器完成      

servletConfig

servletConfig:代表servlet的配置資訊,每一個servlet都有一個servletConfig對象
​
servletConfig對象是什麼?
   封裝了servlet在web.xml檔案中配置
   
   方法:
       1.getServletName():擷取配置檔案中<servlet-name>元素的内容
       2.getInitParameter():根據<init-param>中的<param-name>擷取<param-value>
        <init-param>
           <param-name>name</param-name>
           <param-value>tom</param-value>
​
       </init-param>
       3.getInitParameterNames:表示傳回所有的<param-name>
       4.getServletContext();
       
       功能:
          讀取servlet的初始化配置參數,
          getInitParameter:根據servlet的初始化參數擷取初始化參數的值
          getInitParameterNames:傳回servlet初始化參數的名稱
​
​
例如:通過servletConfig擷取初始化參數

​
/**
 * Created by Administrator on 2017/7/12.
 * //擷取初始化參數
 */
public class InitParmaServletDemo extends HttpServlet{
    public void doGet(HttpServletRequest request, HttpServletResponse response){
        response.setContentType("text/html;charset=UTF-8");
        //擷取servletConfig
        ServletConfig config=getServletConfig();
        //根據參數的名稱擷取對應的值
        String paramValue=config.getInitParameter("driver");
        //擷取所有的參數的名稱的枚舉
        Enumeration<String> paramNames=config.getInitParameterNames();
        //周遊名稱的枚舉
        while (paramNames.hasMoreElements()){
            //取得一個參數的名稱
            String paramName=paramNames.nextElement();
            //根據參數名擷取值
            String value=config.getInitParameter(paramName);
        }
    }
public void doPost(HttpServletRequest request, HttpServletResponse response){
        doGet(request,response);
​
}
}
​
通過servletconfig擷取servletContext
​
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Enumeration;
​
/**
 * Created by Administrator on 2017/7/12.
 * 通過servletconfig擷取servletContext
 */
public class ServletConfigGetServletContext extends HttpServlet{
    public void doGet(HttpServletRequest request, HttpServletResponse response){
​
        response.setContentType("text/html;charset=UTF-8");
​
        //擷取servletConfig
        ServletConfig config=getServletConfig();
        //通過servletconfig擷取servletContext
        ServletContext context=config.getServletContext();
    }
public void doPost(HttpServletRequest request, HttpServletResponse response){
      doGet(request,response);
}
}      

ServletContext

定義:
   代表目前的web應用(一個web應用隻有一個servletContext對象),該對象随着web應用被伺服器加載而建立
  
  作用:
    擷取應用程式的配置資訊
    
    例如:

/**
 * Created by Administrator on 2017/7/12.
 * 通過servletContext擷取配置資訊
 */
public class InitParamServletContext extends HttpServlet{
    public void doGet(HttpServletRequest request, HttpServletResponse response){
​
        response.setContentType("text/html;charset=UTF-8");
​
        //擷取servletConfig
        ServletConfig config=getServletConfig();
        //通過servletconfig擷取servletContext
        ServletContext context=config.getServletContext();
        //擷取參數(第一種)
        String url=context.getInitParameter("url");
        String user=context.getInitParameter("user");
//第二種擷取servletContext的方法
        ServletContext context1=getServletContext();
        Enumeration<String> names=context.getInitParameterNames();
        while (names.hasMoreElements()){
            String name=names.nextElement();
            String value=context.getInitParameter(name);
​
​
        }
​
    }
public void doPost(HttpServletRequest request, HttpServletResponse response){
      doGet(request,response);
}
}
​
   
   
   
         

繼續閱讀