??xml version="1.0" encoding="utf-8" standalone="yes"?>91精品国产91久久综合,国产成人精品一区二区三区四区,国产一区高清在线http://www.aygfsteel.com/hitlang/category/11573.html学以致用zh-cnFri, 02 Mar 2007 02:33:51 GMTFri, 02 Mar 2007 02:33:51 GMT60servlet学习(fn)W记http://www.aygfsteel.com/hitlang/articles/71851.htmlliulangliulangMon, 25 Sep 2006 15:09:00 GMThttp://www.aygfsteel.com/hitlang/articles/71851.htmlhttp://www.aygfsteel.com/hitlang/comments/71851.htmlhttp://www.aygfsteel.com/hitlang/articles/71851.html#Feedback0http://www.aygfsteel.com/hitlang/comments/commentRss/71851.htmlhttp://www.aygfsteel.com/hitlang/services/trackbacks/71851.html2004-9-16 (tng) (tng) (tng) (tng) (tng) 星期四?tng) (tng) (tng) (tng)??/p>

Servlet的基概念

1. (tng) Servlet是什?
{:(x)1) 模块化的E序Q运行在服务器端Q增Z(jin)h/响应导向服务;
 (tng) (tng) (tng) 2) 应用CZQ?br /> (tng) (tng) (tng) (tng) (tng) (tng) a. 讉Kq端对象;
 (tng) (tng) (tng) (tng) (tng) (tng) b. 跟踪大量信息;
 (tng) (tng) (tng) (tng) (tng) (tng) c. 多用户协?/p>

2. (tng) HTTP和Servlets
{:(x)1) Servlet是HTTP协议中作为CGI的一个替代品;
 (tng) (tng) (tng) 2) HttpServletcȝ于开发HTTP为基的Servlet

3. (tng) HttpServlet
{:(x)1) l承抽象cjavax.servlet.GenericServletQ实现接口java.io.Serializable;
 (tng) (tng) (tng) 2) 用以开发Http协议为基的Servlet

4. (tng) 服务Ҏ(gu)
{:(x)1) 每当服务接收到对Servlet的请求时Q服务器׃(x)产生一个新U程Qƈ调用Service。serviceҎ(gu)(g)查HTTPhcd(GET、POST、PUT、DELETE{?,q相应地调用doGet、doPost、doPut、doDelete{?br /> (tng) (tng) (tng) 2) doGet/doPostҎ(gu)接收HttpServletRequest和HttpServletResponse对象?br /> (tng) (tng) (tng) 3) 99%的时间里Q只需注意GET?或POSTh;
 (tng) (tng) (tng) 4) 没有MdoHeadҎ(gu)?/p>

5. (tng) q回响应
{:(x)1) PrintWriter out = response.getWriter (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) // 用于q回文本数据l客L(fng)
 (tng) (tng) (tng) 2) ServletOutputStream out = response.getOutputStream (tng) (tng) // 用于q回二进制数据给客户?/p>

6. (tng) 支持Servlet的Web服务?br />{:(x)1) J2EE应用服务器包括:(x)Web Container和EJB Container;
 (tng) (tng) (tng) 2) Web Container的Servlet Engine提供对Servlet的运行支?

 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
2004-9-17 (tng) (tng) (tng) (tng) (tng) 星期五?tng) (tng) (tng) (tng)??

用Servlet处理表单数据

1. Form元素的属?br />{:(x)1) ACTION: 用来指定要处理FORM数据的Servlet的URLQ也可以指定FORM数据要发送到的电(sh)子邮?
 (tng) (tng) (tng) 2) METHOD: 指定数据传送给HTTP服务器的Ҏ(gu);
 (tng) (tng) (tng) 3) ENCTYPE: 指定数据在传输之前进行编码的方式, 例multipart/form-data ~码每个字D作为MIME可兼容的文档的单独部分传输?/p>

2. 解析h
{:(x)1) 对于所有的hQ?br /> (tng) (tng) (tng) (tng) (tng) (tng) a. getParameterNames: 以Enumeration形式获取表单中清? 每一w可以转换成String;
 (tng) (tng) (tng) (tng) (tng) (tng) b. getParameter: q回表单中参数名(区分大小?对应的?没有q样的参敎ͼq回null;没有M|q回IString);
 (tng) (tng) (tng) (tng) (tng) (tng) c. getParameterValues: q回表单中参数名(区分大小?对应的字W串数组(没有q样的参敎ͼq回null;只有一个|q回gؓ(f)单一元素l?;


Servlet的生命周?/p>

1. (tng) Servlet的生命周?br />{:(x)1) 通过web Container装蝲(J2EE的组仉是被动地装蝲入Container)q实例化Servlet对象;
 (tng) (tng) (tng) 2) 调用init()Ҏ(gu)(在整个生命周期中只被调用一?;
 (tng) (tng) (tng) 3) 调用service()Ҏ(gu)(在整个生命周期中可被调用多次);
 (tng) (tng) (tng) 4) 调用destroy()Ҏ(gu)(在整个生命周期中只被调用一?;

2. (tng) initҎ(gu)
{:(x)1) 当首ơ创建Servlet时就?x)调用initҎ(gu), 而不是每个用戯求都?x)调用该?gu)?br /> (tng) (tng) (tng) 2) 除非被destroyҎ(gu)U除Q否则不能被重蝲;
 (tng) (tng) (tng) 3) initҎ(gu)一l束Qservlet卛_接受客户端请?
 (tng) (tng) (tng)
3. (tng) initҎ(gu)实例
{:(x)1) 在编写接受ServletConfig作ؓ(f)参数的initҎ(gu)Ӟ应该L在首行调用super.init;
 (tng) (tng) (tng) 2) initҎ(gu)接受ServletConfig作ؓ(f)参数, 用以下方法获得参数|(x)
 (tng) (tng) (tng) (tng) (tng) (tng) a. getInitParameter: q回指定参数名称对应的|如果参数不存在,q回null;
 (tng) (tng) (tng) (tng) (tng) (tng) b. getInitParameterNames: q回指定参数名称对应的值枚举,如果参数不存在,q回的空枚D;

2004-9-20 (tng) (tng) (tng) (tng) (tng) 星期一 (tng) (tng) (tng) (tng) (tng) ?/p>

3. (tng) serviceҎ(gu)
{:(x)1) 每当服务器接收到对Servlet的请求时Q服务器׃(x)产生一个新U程, q调用service。serviceҎ(gu)(g)查HTTPhcdQ请相应地调用doGet、doPost、doPut、doDelete?br /> (tng) (tng) (tng) 2) 被container调用d?ServletResponse)来自客户端的h(ServletRequest);

4. (tng) Servlets的多U程安全
{:(x)1) 多线E占用资源少Q处理速度快,提高?sh)(jin)效率?br /> (tng) (tng) (tng) 2) 一些编码徏议:(x)
 (tng) (tng) (tng) (tng) (tng) (tng) a. 对变量和Ҏ(gu)定义适当的访问方? 例如单纯取值操作不?x)有多线E安全问?
 (tng) (tng) (tng) (tng) (tng) (tng) b. 同步化所有访问重要数据的实例变量;
 (tng) (tng) (tng) (tng) (tng) (tng) c. 创徏讉Kcd量的讉KҎ(gu)?/p>

5. (tng) SingleThreadModel接口
{:(x)1) 如果希望止多线E访问,可以让Servlet使用SingleThreadModel接口:
 (tng) (tng) (tng) (tng) (tng) (tng) public class YourServlet extends HttpServlet implements SingleThreadModel{
 (tng) (tng) (tng) (tng) (tng) (tng) ...
 (tng) (tng) (tng) (tng) (tng) (tng) }
 (tng) (tng) (tng) 2) 使用此接口,pȝ保证不?x)存在多个请求线E同时访问Servlet的单个实例。但是仍焉要同步对存储在Servlet外部的类变量或共享字D늚讉K?br /> (tng) (tng) (tng) 3) 如Servlet频繁被访问,则Servlet讉K的同步将严重影响性能(延时)?/p>

6. (tng) destroyҎ(gu)
{:(x)1) 服务器决定删除已l加载的Servlet实例之前调用Servlet的destroyҎ(gu);
 (tng) (tng) (tng) 2) 该方法允许Servlet:
 (tng) (tng) (tng) (tng) (tng) (tng) a. 关闭数据库连?
 (tng) (tng) (tng) (tng) (tng) (tng) b. 中止后台U程;
 (tng) (tng) (tng) (tng) (tng) (tng) c. CookieE序清单或访问计数写到磁盘(sh)?qing)执行其他类似的收尾工作?/p>

7. 在Servletl止时处理ServiceU程
{:(x)1) 在destroy()Ҏ(gu)中:(x)如有服务(通过一个同步化的实例方法取得当前线E数大于0)Q则|关闭状态ؓ(f)true(通过一个同步化的实例方法实?。然后@环等待服务线E数?.
 (tng) (tng) (tng) 2) 在Service()Ҏ(gu)? 如见关闭状态ؓ(f)trueQ便不执行具体逻辑Ҏ(gu)Q直接退出?/p>

2004-9-21 (tng) (tng) (tng) (tng) (tng) 星期二?tng) (tng) (tng) (tng)??/p>

资源讉K

1. 分布式JAVA技?br />{:(x)1) JDBC;
 (tng) (tng) (tng) (tng) (tng) (tng) a. 实现?jin)Data和Client的分开;
 (tng) (tng) (tng) (tng) (tng) (tng) b. 通过单的配置可以适用不同U类的数据库?br /> (tng) (tng) (tng) 2) RMI(RMI使用的协议ؓ(f)Internet Inter ORB Protocol);
 (tng) (tng) (tng) 3) CORBA(核心(j)技术ؓ(f)ORBQ相应的你的h转ؓ(f)另一个物理地址另一个不同语a对象的请求。纯Java的情况下Ҏ(gu)不用CORBA);

2. (tng) 转发l果臛_视页?br />{:(x)1) 用JavaBean(用来装蝲一l|遵从一定协议的class)装l果;
 (tng) (tng) (tng) 2) 每个JVM中的每一个应用程序里都存在一个上下文;
 (tng) (tng) (tng) 3) servletContext在servletConfig的对象中;
 (tng) (tng) (tng) 4) ServletContext.getRequestDispatcher(String path)Q返回一个RequestDispatcher
 (tng) (tng) (tng) 5) 通过RequestDispatcher的forward()或include()Ҏ(gu)传送请求?/p>

3. 转发hx(chng)的资?br />{:(x)1) request dispatcher的二U传送请求方?br /> (tng) (tng) (tng) (tng) (tng) (tng) a. Forward: 请求从一个servlet传到服务器上的其他资?servlet、JSP、HTML);
 (tng) (tng) (tng) (tng) (tng) (tng) b. Include: 包括?rn)态或动态内?
 (tng) (tng) (tng) 2) 获得request dispatcher的二U方式:(x)
 (tng) (tng) (tng) (tng) (tng) (tng) a. ServletRequest.getRequestDispatcher() (tng) (tng) (tng) (tng) (tng) (tng) // 相对路径
 (tng) (tng) (tng) (tng) (tng) (tng) b. ServletContext.getRequestDispatcher() (tng) (tng) (tng) (tng) (tng) (tng) // l对路径
 (tng) (tng) (tng) 3) 四种资源范围
 (tng) (tng) (tng) (tng) (tng) (tng) a. javax.servlet.ServletContext: 整个应用E序范围?
 (tng) (tng) (tng) (tng) (tng) (tng) b. javax.servlet.http.HttpSession: ?x)话期?
 (tng) (tng) (tng) (tng) (tng) (tng) c. javax.servlet.ServletRequest: 一个请求期?
 (tng) (tng) (tng) (tng) (tng) (tng) d. javax.servlet.jsp.PageContext: 一个JSP面;

2004-9-22 (tng) (tng) (tng) (tng) (tng) 星期三?tng) (tng) (tng) (tng)??/p>

Servlets中的持久状?/p>

1. HTTP协议中无状态的优缺点:(x)
{:(x)优点Q可以服务很多客L(fng);
 (tng) (tng) (tng) ~点Q不能在多个h之间׃n信息(通过Cookie和Session解决);

2. Cookies
{:(x)1) Cookies是Web服务器发送到览器的短文本信息,以后在访问同一个Web站点或域时浏览器׃(x)毫无更改地返回该文本信息?br /> (tng) (tng) (tng) 2) 用户可以军_是否接受Cookie?br /> (tng) (tng) (tng) 3) 一个Cookie׃下内容组成:(x)
 (tng) (tng) (tng) (tng) (tng) (tng) a. 名称;
 (tng) (tng) (tng) (tng) (tng) (tng) b. 单个?
 (tng) (tng) (tng) (tng) (tng) (tng) c. 一些操作属性:(x)路径或所在域、有效期以及(qing)版本受?br /> (tng) (tng) (tng) 4) 每个站点Q浏览器通常只接?0条Cookie,d接受300条,以及(qing)每条Cookie限制?KB?/p>

3. (tng) 讄Cookie
{:(x)1) 创徏Cookie:
 (tng) (tng) (tng) (tng) (tng) (tng) Cookie c = new Cookie("CookieName", "CookieValue");
 (tng) (tng) (tng) 2) 讄有效期:(x)
 (tng) (tng) (tng) (tng) (tng) (tng) c.setMaxAge(int lifetime); 黙认|只作用于当前?x)话Q不能存储在盘?sh)?如ؓ(f)0DC删除CookieQ有效gؓ(f)Uؓ(f)单位?br /> (tng) (tng) (tng) 3) 在响应头中放|Cookie:
 (tng) (tng) (tng) (tng) (tng) (tng) response.addCookie(c);
 (tng) (tng) (tng) 4) 从客L(fng)dCookie:
 (tng) (tng) (tng) (tng) (tng) (tng) Cookie[] cookies = request.getCookies();
 (tng) (tng) (tng) (tng) (tng) (tng) Cookie cookie;
 (tng) (tng) (tng) (tng) (tng) (tng) for(int i=0; i<cookies.length; i++)
 (tng) (tng) (tng) (tng) (tng) (tng) {
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) cookie = cookies[i];
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) out.println("<tr><td>" + cookie.getName() + "</td><td>" + cookie.getValue());
 (tng) (tng) (tng) (tng) (tng) (tng) }

4. Sessions
{:(x)1) 一个客L(fng)和一个服务器端一ơ连接信息的所有集合,通过brower发出Q由服务器端的servlet调用;
 (tng) (tng) (tng) 2) 提供一U方式在多个面h间确认用h者储存关于用L(fng)信息;
 (tng) (tng) (tng) 3) 实现?x)话跟踪的三U方式:(x)a. cookie; b. URL重写; c. 隐藏的表单段

5. 讄Sessions
{:(x)1) 创徏Sessions:
 (tng) (tng) (tng) (tng) (tng) (tng) HttpSession session = request.getSession(true); (tng) (tng) (tng) (tng) (tng) // true表示如不存在则创Z个新的session
 (tng) (tng) (tng) 2) 用指定名U将一个对象绑定到session:
 (tng) (tng) (tng) (tng) (tng) (tng) public void setAttribute(String name, Object value);
 (tng) (tng) (tng) 3) 删除与指定名U相关的所有|(x)
 (tng) (tng) (tng) (tng) (tng) (tng) public void removeAttribute(String name);
 (tng) (tng) (tng) 4) q回?x)话中所有属性名
 (tng) (tng) (tng) (tng) (tng) (tng) public Enumeration getAttributeNames();
 (tng) (tng) (tng) 5) q回指定名称对象
 (tng) (tng) (tng) (tng) (tng) (tng) public Object getAttribute(String name);

6. Cookies和Sessions的比?br />{:(x)1) Cookies可由用户军_是否需? Sessions不能; (tng)
 (tng) (tng) (tng) 2) Cookies是一U装载sessionID的可?
 (tng) (tng) (tng) 3) Cookies存储在客L(fng), Sessions存储于服务器?
 (tng) (tng) (tng) 4) Cookies可以构造,可以由Request取出Q由Responseq回

2004-9-23 (tng) (tng) (tng) (tng) (tng) 星期四?tng) (tng) (tng) (tng)??/p>

qo(h)?/p>

1. (tng) 什么是qo(h)?
{:(x)与Servlet怼Q过滤器是一些Web应用E序lgQ可以绑定到一个Web应用E序档案中。但是与其他Web应用E序lg不同的是Q过滤器是“链”在容器的处理过E中的。这意味着它们?x)在servlet处理器之前访问一个进入的hQƈ且在外发的响应信息返回到客户前访问这些响应信息。这U访问得过滤器可以(g)查ƈ修改h和响应的内容?/p>

2. (tng) qo(h)器可以用于:(x)
{:(x)1) Z个Web应用E序的新功能建立原型(可被d到Web应用E序中或者从Web应用E序中删除而不需重写基层应用E序代码);
 (tng) (tng) (tng) 2) 向过ȝ代码中添加新功能?/p>

3. (tng) qo(h)器放在容器结构什么位|?
{:(x)qo(h)器放在Web资源之前Q可以在h抵达它所应用的Web资源(可以是一个servlet、一个JSP面Q甚x(chng)一个HTML面q样的静(rn)态内?之前截获q入的请求,q且在它q回到客户之前截莯?gu)求?/p>

4. (tng) qo(h)器的存活周期
{:(x)qo(h)器有四个阶段(与servletcM)Q?br /> (tng) (tng) (tng) 1) 实例?
 (tng) (tng) (tng) 2) 初始?调用init()Ҏ(gu));
 (tng) (tng) (tng) 3) qo(h)(调用doFilter()Ҏ(gu));
 (tng) (tng) (tng) 4) 销?调用destroy()Ҏ(gu));

5. qo(h)器类和接?br />{:(x)所有的qo(h)器都必须实现javax.servlet.Filter接口:
 (tng) (tng) (tng) 1) 容器调用init()Ҏ(gu)初始化过滤器实例Q?br /> (tng) (tng) (tng) (tng) (tng) (tng) public void init(FilterConfig config) throws ServletException
 (tng) (tng) (tng) 2) doFilter()Ҏ(gu)包含qo(h)器逻辑Q?br /> (tng) (tng) (tng) (tng) (tng) (tng) public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException
 (tng) (tng) (tng) 3) destroy()Ҏ(gu)由容器在销毁过滤器实例之前调用Q?br /> (tng) (tng) (tng) (tng) (tng) (tng) public void destroy();
 (tng) (tng) (tng) 4) FilterChain的doFilter()Ҏ(gu)之后的代码构成了(jin)后期处理qo(h)器调用?/p>

6. (tng) 配置qo(h)?br />{:(x)使用<filter>?lt;filter-mapping>元素来配|:(x)
 (tng) (tng) (tng) <filter>
 (tng) (tng) (tng) (tng) (tng) (tng) <filter-name>XSLTFilter</filter-name> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) //qo(h)器名
 (tng) (tng) (tng) (tng) (tng) (tng) <filter-class>filters.SmartXSLFilter</filter-class> (tng) (tng) (tng) (tng) //具体qo(h)器类
 (tng) (tng) (tng) (tng) (tng) (tng) <init-param> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) //初始化参?br /> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) <param-name>xsltfile</param-name>
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) <param-value>/xsl/stockquotes.xsl</param-value>
 (tng) (tng) (tng) (tng) (tng) (tng) </init-param>
 (tng) (tng) (tng) </filter>
 (tng) (tng) (tng) <filter-mapping> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) //过滤器应用于Web应用E序中的每个Web资源
 (tng) (tng) (tng) (tng) (tng) (tng) <filter-name>Logger</filter-name>
 (tng) (tng) (tng) (tng) (tng) (tng) <url-pattern>/*</url-pattern>
 (tng) (tng) (tng) </filter-mapping>


2004-9-24 (tng) (tng) (tng) (tng) (tng) 星期五?tng) (tng) (tng) (tng)??/p>

Web应用E序生命周期事g?qing)监听?Servlet V2.3版本以后新增功能)

1. 什么是事g监听?
{:(x)1) 支持ServletContext、HttpSession(since v2.3)?qing)ServletRequest(since v2.4)中状态改变的事g通知;
 (tng) (tng) (tng) 2) 实现?jin)一个或多个servlet事g监听器接口的cd;
 (tng) (tng) (tng) 3) 控制ServletContext、HttpSession(since v2.3)?qing)ServletRequest(since v2.4)中的生命周期;

2. Servlet Context事g监听?br />{:(x)1) 对于应用E序而言在JVM层别理资源或保存状?br /> (tng) (tng) (tng) 2) 有二U类型的事g监听器:(x)
 (tng) (tng) (tng) (tng) (tng) (tng) a. ServletContextListener(以下是该监听器的Ҏ(gu))
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) contextDestroyed(ServletContextEvent sce)
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) contextInitialized(ServletContextEvent sce)
 (tng) (tng) (tng) (tng) (tng) (tng) b. ServletContextAttributeListener(以下是该监听器的Ҏ(gu))
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) attributeAdded(ServletContextAttributeEvent scab)
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) attributeRemoved(ServletContextAttributeEvent scab)
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) attributeReplaced(ServletContextAttributeEvent scab)

3. HTTP Session事g监听?br />{:(x)1) 理从同一个客L(fng)或用户向一个Web应用E序发出的一pdh相关的状态或资源;
 (tng) (tng) (tng) 2) 有二U类型的事g监听?
 (tng) (tng) (tng) (tng) (tng) (tng) a. HttpSessionListener(以下是该监听器的Ҏ(gu))
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) sessionCreated(HttpSessionEvent se)
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) sessionDestroyed(HttpSessionEvent se)
 (tng) (tng) (tng) (tng) (tng) (tng) b. HttpSessionAttributeListener(以下是该监听器的Ҏ(gu))
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) attributeAdded(HttpSessionBindingEvent se)
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) attributeRemoved(HttpSessionBindingEvent se)
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) attributeReplaced(HttpSessionBindingEvent se)

4. Servlet Requst事g监听?br />{:(x)1) 理整个request生命周期的状?br /> (tng) (tng) (tng) 2) 有二U类型的事g监听?br /> (tng) (tng) (tng) (tng) (tng) (tng) a. ServletRequestListener(以下是该监听器的Ҏ(gu))
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) requestDestroyed(ServletRequestEvent sre)
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) requestInitialized(ServletRequestEvent sre)
 (tng) (tng) (tng) (tng) (tng) (tng) b. ServletRequestAttributeListener(以下是该监听器的Ҏ(gu))
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) attributeAdded(ServletRequestAttributeEvent srae)
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) attributeRemoved(ServletRequestAttributeEvent srae)
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) attributeReplaced(ServletRequestAttributeEvent srae)

5. 监听器类的规?br />{:(x)1) 必须在部|描q符中配|实现类;

 (tng)



liulang 2006-09-25 23:09 发表评论
]]>
վ֩ģ壺 | | հ| Т| | | ƽ| | ٽ| | | ɽ| | ϲ| ½| ϸ| ֿ| Ӫ| ͭ| | | | | | | ѽ| ˳| | | | ɽ| | | Խ| | ɶ| | | ɽ| | |