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

黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

(No.32)

系統(tǒng) 3052 0

一:Servlet的一些細(xì)節(jié):

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

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

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

例如:

(No.32)

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

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

例如:

(No.32)

3 Servlet1 映射到 /abc/*

Servlet2 映射到 /*

Servlet3 映射到 /abc

Servlet4 映射到 *.do

其中 URL 請求與哪個(gè)最相像,就歸為哪一類,強(qiáng)調(diào): /* *.do 優(yōu)先級高

4 、針對客戶端的多次 Servlet 請求,通常情況下,服務(wù)器只會(huì)創(chuàng)建一個(gè) Servlet 實(shí)例對象,也就是說 Servlet 實(shí)例對象一旦創(chuàng)建,它就會(huì)駐留在內(nèi)存中,為后續(xù)的其它請求服務(wù),直至 web 容器退出, servlet 實(shí)例對象才會(huì)銷毀。

Servlet 的整個(gè)生命周期內(nèi), Servlet init 方法只被調(diào)用一次。而對一個(gè) Servlet 的每次訪問請求都導(dǎo)致 Servlet 引擎調(diào)用一次 servlet service 方法。對于每次訪問請求, Servlet 引擎都會(huì)創(chuàng)建一個(gè)新的 HttpServletRequest 請求對象和一個(gè)新的 HttpServletResponse 響應(yīng)對象,然后將這兩個(gè)對象作為參數(shù)傳遞給它調(diào)用的 Servlet service() 方法, service 方法再根據(jù)請求方式分別調(diào)用 doXXX 方法。

例子代碼:

(No.32)

5 、在 <servlet> 元素中配置了一個(gè) <load-on-startup> 元素,那么 WEB 應(yīng)用程序在啟動(dòng)時(shí),就會(huì)裝載并創(chuàng)建 Servlet 的實(shí)例對象、以及調(diào)用 Servlet 實(shí)例對象的 init() 方法。

例子:

5、缺省 Servlet

6、線程安全:

例子代碼:

(No.32)

二、ServletConfig對象

Servlet 的配置文件中,可以使用一個(gè)或多個(gè) <init-param> 標(biāo)簽為 servlet 配置一些初始化參數(shù)

(No.32)

當(dāng) servlet 配置了初始化參數(shù)后, web 容器在創(chuàng)建 servlet 實(shí)例對象時(shí),會(huì)自動(dòng)將這些初始化參數(shù)封裝到 ServletConfig 對象中,并在調(diào)用 servlet init 方法時(shí),將 ServletConfig 對象傳遞給 servlet 。進(jìn)而,程序員通過 ServletConfig 對象就可以得到當(dāng)前 servlet 的初始化參數(shù)信息

例子:

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("創(chuàng)建對象");

}

@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{

/*設(shè)置編碼*/

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應(yīng)用

----》在MyEclipse中的開發(fā)

---->首先建立

--->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{

/* 怎么獲取共享數(shù)據(jù) */

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>

----->建立一個(gè)data.html:添加

<body>

<div>

<ahref="./demo02">查看共享數(shù)據(jù)</a>

</div>

</body>

---->ok

(No.32)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論