元素和元素完成。元素用于注冊Servlet,它包含有兩個主要的子元素:,分別用于設置Servlet的注冊名稱和Servlet" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

(No.32)

系統 2609 0

一:Servlet的一些細節:

1、由于客戶端是通過 URL 地址訪問 web 服務器中的資源,所以 Servlet 程序若想被外界訪問,必須把 servlet 程序映射到一個 URL 地址上,這個工作在 web.xml 文件中使用 <servlet> 元素和 <servlet-mapping> 元素完成。

<servlet> 元素用于注冊 Servlet ,它包含有兩個主要的子元素: <servlet-name> <servlet-class> ,分別用于設置 Servlet 的注冊名稱和 Servlet 的完整類名。

一個 <servlet-mapping> 元素用于映射一個已注冊的 Servlet 的一個對外訪問路徑,它包含有兩個子元素: <servlet-name> <url-pattern> ,分別用于指定 Servlet 的注冊名稱和 Servlet 的對外訪問路徑。

例如:

(No.32)

2、同一個 Servlet 可以被映射到多個 URL 上,即多個 <servlet-mapping> 元素的 <servlet-name> 子元素的設置值可以是同一個 Servlet 的注冊名。

Servlet 映射到的 URL 中也可以使用 * 通配符,但是只能有兩種固定的格式:一種格式是“ *. 擴展名”,另一種格式是以正斜杠( / )開頭并以“ /* ”結尾。

例如:

(No.32)

3 Servlet1 映射到 /abc/*

Servlet2 映射到 /*

Servlet3 映射到 /abc

Servlet4 映射到 *.do

其中 URL 請求與哪個最相像,就歸為哪一類,強調: /* *.do 優先級高

4 、針對客戶端的多次 Servlet 請求,通常情況下,服務器只會創建一個 Servlet 實例對象,也就是說 Servlet 實例對象一旦創建,它就會駐留在內存中,為后續的其它請求服務,直至 web 容器退出, servlet 實例對象才會銷毀。

Servlet 的整個生命周期內, Servlet init 方法只被調用一次。而對一個 Servlet 的每次訪問請求都導致 Servlet 引擎調用一次 servlet service 方法。對于每次訪問請求, Servlet 引擎都會創建一個新的 HttpServletRequest 請求對象和一個新的 HttpServletResponse 響應對象,然后將這兩個對象作為參數傳遞給它調用的 Servlet service() 方法, service 方法再根據請求方式分別調用 doXXX 方法。

例子代碼:

(No.32)

5 、在 <servlet> 元素中配置了一個 <load-on-startup> 元素,那么 WEB 應用程序在啟動時,就會裝載并創建 Servlet 的實例對象、以及調用 Servlet 實例對象的 init() 方法。

例子:

5、缺省 Servlet

6、線程安全:

例子代碼:

(No.32)

二、ServletConfig對象

Servlet 的配置文件中,可以使用一個或多個 <init-param> 標簽為 servlet 配置一些初始化參數

(No.32)

servlet 配置了初始化參數后, web 容器在創建 servlet 實例對象時,會自動將這些初始化參數封裝到 ServletConfig 對象中,并在調用 servlet init 方法時,將 ServletConfig 對象傳遞給 servlet 。進而,程序員通過 ServletConfig 對象就可以得到當前 servlet 的初始化參數信息

例子:

packagecn.csdn.web.servlet;

importjava.io.IOException;

importjava.io.PrintWriter;

importjava.util.Enumeration;

importjavax.servlet.ServletConfig;

importjavax.servlet.ServletException;

importjavax.servlet.ServletRequest;

importjavax.servlet.ServletResponse;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

publicclassDemoServletextendsHttpServlet{

intx=1;

@Override

publicvoiddestroy(){

//TODOAuto-generatedmethodstub

super.destroy();

System.out.println("銷毀");

}

publicDemoServlet(){

super();

System.out.println("創建對象");

}

@Override

publicvoidinit()throwsServletException{

//TODOAuto-generatedmethodstub

super.init();

System.out.println("---------初始化------------");

}

@Override

publicvoidinit(ServletConfigconfig)throwsServletException{

super.init(config);

System.out.println("================"+config);

}

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

this.doPost(request,response);

}

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

/*設置編碼*/

request.setCharacterEncoding("UTF-8");

Stringversion=this.getServletConfig().getInitParameter("version");

StringcharacterEncoding=this.getServletConfig().getInitParameter("characterEncoding");

request.setCharacterEncoding(characterEncoding);

/*獲取一下PrintWriter對象*/

PrintWriterout=response.getWriter();

out.print("=-"+version);

Enumeration<String>enumer=this.getServletConfig().getInitParameterNames();

/*遍歷*/

while(enumer.hasMoreElements()){

Stringname=enumer.nextElement();

Stringvalue=this.getServletConfig().getInitParameter(name);

System.out.println(name+"===="+value);

}

}

}

三、ServletContext應用

----》在MyEclipse中的開發

---->首先建立

--->Demo01Servlet.java中寫入:

packagecn.csdn.web.servlet;

importjava.io.IOException;

importjava.io.PrintWriter;

importjavax.servlet.ServletContext;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

publicclassDemo01ServletextendsHttpServlet{

@Override

protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

this.doPost(request,response);

}

@Override

protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

request.setCharacterEncoding("UTF-8");

/* 怎么樣獲取 ServletContext 對象 */

ServletContextcontext=this.getServletConfig().getServletContext();

context=this.getServletContext();

context.setAttribute("date","ddd");

response.sendRedirect("./data.html");

}

}

--->Demo02Servlet.java中寫入:

packagecn.csdn.web.servlet;

importjava.io.IOException;

importjavax.servlet.ServletContext;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

publicclassDemo02ServletextendsHttpServlet{

@Override

protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)

throwsServletException,IOException{

this.doPost(req,resp);

}

@Override

protectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)

throwsServletException,IOException{

/* 怎么獲取共享數據 */

ServletContextcontext=this.getServletContext();

Stringdata=(String)context.getAttribute("data");

resp.getWriter().write(data);

}

}

--->在web.xml中寫入:

<servlet>

<servlet-name>Demo01Servlet</servlet-name>

<servlet-class>cn.csdn.web.servlet.Demo01Servlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>Demo01Servlet</servlet-name>

<url-pattern>/demo01</url-pattern>

</servlet-mapping>

<servlet>

<servlet-name>Demo02Servlet</servlet-name>

<servlet-class>cn.csdn.web.servlet.Demo02Servlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>Demo02Servlet</servlet-name>

<url-pattern>/demo02</url-pattern>

</servlet-mapping>

----->建立一個data.html:添加

<body>

<div>

<ahref="./demo02">查看共享數據</a>

</div>

</body>

---->ok

(No.32)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 蓬安县| 大渡口区| 东丰县| 宁陕县| 汉源县| 浦县| 田阳县| 德保县| 日照市| 伊金霍洛旗| 泾源县| 陆川县| 鄯善县| 锡林浩特市| 南雄市| 滦平县| 卢湾区| 长泰县| 盐边县| 壶关县| 平昌县| 冷水江市| 香港 | 上林县| 易门县| 哈密市| 墨竹工卡县| 哈尔滨市| 平果县| 濮阳县| 浠水县| 柘荣县| 湖州市| 虹口区| 大名县| 公安县| 平邑县| 黔南| 大渡口区| 土默特左旗| 化隆|