天天看點

servlet與Web.xml配置關聯

【servlet與Web.xml配置】

【關聯01:處理類與請求的關聯】

web.xml配置為:

<!--  定義如何在浏覽器中通路此serlvet 如下即:通過/abc可以通路到demo類去處理-->  
  <servlet-mapping>
    <servlet-name>demo</servlet-name>
    <url-pattern>*.gdy</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>GenericServletone</servlet-name>
    <servlet-class>ServerByGenerServlet</servlet-class>
  <!-- 啟動時加載,即伺服器啟動時就加載該類,數組代表啟動時,啟動的順序 -->
    <load-on-startup>3</load-on-startup>
  </servlet>      

java對應的類代碼為:

public class GServletConfig extends HttpServlet {
  public void service(ServletRequest req, ServletResponse res)
      throws ServletException, IOException {
  }
 }      

【關聯02:通過ServletConfig擷取配置資訊】

web.xml配置為:

<!-- GServletConig處理類 -->
  <servlet>
    <servlet-name>Gconfig</servlet-name>
    <servlet-class>GServletConfig</servlet-class>
    <!-- 定義類的全局變量 -->
    <init-param>
      <param-name>name</param-name>
      <param-value>你猜猜我是誰</param-value>
    </init-param>
    <init-param>
      <param-name>gdy</param-name>
      <param-value>我是gdy</param-value>
    </init-param>
    <load-on-startup>5</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Gconfig</servlet-name>
    <url-pattern>*.gan</url-pattern>
  </servlet-mapping>      

對應的java擷取配置代碼為:

/**
 * 處理【*.gan】請求
 * 功能:學習ServletConfig
 * @author Administrator
 * 
 * 擷取ServletConfig的方法
 *     1.采用帶參數的init方法
 *     2.采用servlet執行個體擷取,(但不要寫在帶參數的init方法裡面)
 *
 */
public class GServletConfig extends HttpServlet {
  @Override
  public void service(ServletRequest req, ServletResponse res)
      throws ServletException, IOException {
//    //擷取web.xml配置檔案中的單個配置資訊
//    String name=this.getServletConfig().getInitParameter("name");
//    System.out.println(name);
    
    //擷取多個配置資訊
    Enumeration<String> enumer = this.getInitParameterNames();
    while (enumer.hasMoreElements()) {
      String wname = (String) enumer.nextElement();
      System.out.println(wname+":"+this.getServletConfig().getInitParameter(wname));
    }
    
  }
}      

【關聯03:通過ServletContext擷取定義的全局變量】

web.xml配置為:

<!-- 定義應用程式的全局的變量 -->
  <context-param>
    <param-name>name1</param-name>
    <param-value>全局标量01</param-value>
  </context-param>
  <context-param>
    <param-name>name2</param-name>
    <param-value>全局變量02</param-value>
  </context-param>
  
  <!-- com.gdy.Servlet.GServletContext 處理類 處理請求為*.ggt -->
  <servlet>
    <servlet-name>Gggt</servlet-name>
    <servlet-class>com.gdy.Servlet.GServletContext</servlet-class>
    <load-on-startup>7</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Gggt</servlet-name>
    <url-pattern>*.ggt</url-pattern>
  </servlet-mapping>      

java類擷取方法為:

/**
 * 通過ServletContext擷取定義的全局變量
 * @author Administrator
 *
 */
public class GServletContext extends HttpServlet {
  
  @Override
  protected void service(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    Enumeration<String> genum = this.getServletConfig().getServletContext().getInitParameterNames();
    while (genum.hasMoreElements()) {
      String str = (String) genum.nextElement();
      System.out.println(str + ":" +this.getServletContext().getInitParameter(str));
    }
  }
}      

【關聯04:請求轉發處理】

web.xml代碼為:

<!-- com.gdy.Servlet.GservletRealy類的建立 -->
  <servlet>
    <servlet-name>Grealy</servlet-name>
    <servlet-class>com.gdy.Servlet.GservletRealy</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Grealy</servlet-name>
    <url-pattern>*.realy</url-pattern>
  </servlet-mapping>
  
  <!-- com.gdy.Servlet.GservletGetRealy類的建立 -->
  <servlet>
    <servlet-name>Gdd</servlet-name>
    <servlet-class>com.gdy.Servlet.GservletGetRealy</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Gdd</servlet-name>
    <url-pattern>*.gdd</url-pattern>
  </servlet-mapping>      

Java請求轉發,和轉發後處理代碼為:

[請求轉發類]

/**
 * 請求轉發執行個體,
 * 處理請求為【*.realy】
 * 功能:将帶*。realy的請求轉發到*。getregly上處理
 *
 */
public class GservletRealy extends HttpServlet{
  @Override
  protected void service(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    //擷取全局變量
    ServletContext context = this.getServletContext();
    //添加值
    context.setAttribute("age", "13");
    req.setAttribute("gname", "你猜我是什麼");
    System.out.println("開始轉發");
    //擷取請求轉發器
    RequestDispatcher rd = context.getRequestDispatcher("/aa.gdd");
    //轉發請求
    rd.forward(req, resp);
    
  }
}      

[轉發後處理類為]

/**
 * 處理請求類為【*.gdd】
 * @author Administrator
 *
 */
public class GservletGetRealy extends HttpServlet{

  @Override
  protected void service(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    System.out.println("成功接收");
    //擷取context傳遞過來的值
    String contname=(String)this.getServletContext().getAttribute("age");
    //擷取servletrequest傳遞過來的值
    String sername=(String)req.getAttribute("gname");
    System.out.println("context傳遞過來的值:"+contname);
    System.out.println("servletrequest傳遞過來的值:"+sername);
  }
}