﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-小小六</title><link>http://www.blogjava.net/pengjunxlx/</link><description>学无止境</description><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 09:02:20 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 09:02:20 GMT</pubDate><ttl>60</ttl><item><title>servlet&amp;jsp学习告一段落</title><link>http://www.blogjava.net/pengjunxlx/archive/2009/01/11/250890.html</link><dc:creator>peterJ</dc:creator><author>peterJ</author><pubDate>Sun, 11 Jan 2009 14:37:00 GMT</pubDate><guid>http://www.blogjava.net/pengjunxlx/archive/2009/01/11/250890.html</guid><wfw:comment>http://www.blogjava.net/pengjunxlx/comments/250890.html</wfw:comment><comments>http://www.blogjava.net/pengjunxlx/archive/2009/01/11/250890.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengjunxlx/comments/commentRss/250890.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengjunxlx/services/trackbacks/250890.html</trackback:ping><description><![CDATA[从5楼搬回了三楼，屁股还没坐热，又被通知调到手机office开发部去了。从此告别了天天泡在网上查资料看猫扑的生活~~有开始暗无天日的封闭式开发了<br />
<br />
无知者无惧啊，这次用的是C++在Ubuntu进行电子表格的绘制，C++要学，GTKmm也要学，搞不懂为什么好好的QT不用，说是为了省钱，说QT要钱``` ```真是~~<br />
<br />
昨天接到南京文思创新的offer，过完年再去那边看看。下午的时候和同事几个在街边晒太阳看美女聊打算，形势很不乐观哪~哈哈
<img src ="http://www.blogjava.net/pengjunxlx/aggbug/250890.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengjunxlx/" target="_blank">peterJ</a> 2009-01-11 22:37 <a href="http://www.blogjava.net/pengjunxlx/archive/2009/01/11/250890.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Servlet&amp;amp;JSP学习之会话管理</title><link>http://www.blogjava.net/pengjunxlx/archive/2008/12/24/248016.html</link><dc:creator>peterJ</dc:creator><author>peterJ</author><pubDate>Wed, 24 Dec 2008 02:26:00 GMT</pubDate><guid>http://www.blogjava.net/pengjunxlx/archive/2008/12/24/248016.html</guid><wfw:comment>http://www.blogjava.net/pengjunxlx/comments/248016.html</wfw:comment><comments>http://www.blogjava.net/pengjunxlx/archive/2008/12/24/248016.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengjunxlx/comments/commentRss/248016.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengjunxlx/services/trackbacks/248016.html</trackback:ping><description><![CDATA[<p> WEB服务器没有短期记忆。一旦发送了响应，web服务器就会忘记你是谁。下一次你请求的时候，它不会认识你的，也就是说不记得你曾经做过的请求。</p> <p>那是用什么机制来保存这些记忆呢？</p> <p>Cookie</p> <p><a href="http://www.blogjava.net/images/blogjava_net/pengjunxlx/WindowsLiveWriter/ServletJSP_92A6/image_2.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="585" alt="image" src="http://www.blogjava.net/images/blogjava_net/pengjunxlx/WindowsLiveWriter/ServletJSP_92A6/image_thumb.png" width="280" border="0"></a></p><img src ="http://www.blogjava.net/pengjunxlx/aggbug/248016.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengjunxlx/" target="_blank">peterJ</a> 2008-12-24 10:26 <a href="http://www.blogjava.net/pengjunxlx/archive/2008/12/24/248016.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Servlet&amp;amp;JSP学习之servlet属性和监听(2)_八大太监（监听）</title><link>http://www.blogjava.net/pengjunxlx/archive/2008/12/23/247955.html</link><dc:creator>peterJ</dc:creator><author>peterJ</author><pubDate>Tue, 23 Dec 2008 10:48:00 GMT</pubDate><guid>http://www.blogjava.net/pengjunxlx/archive/2008/12/23/247955.html</guid><wfw:comment>http://www.blogjava.net/pengjunxlx/comments/247955.html</wfw:comment><comments>http://www.blogjava.net/pengjunxlx/archive/2008/12/23/247955.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengjunxlx/comments/commentRss/247955.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengjunxlx/services/trackbacks/247955.html</trackback:ping><description><![CDATA[<p>Servlet的8大太监（监听）</p> <table cellspacing="0" cellpadding="2" width="702" border="1"> <tbody> <tr> <td valign="top" width="149">场景</td> <td valign="top" width="361">监听者接口</td> <td valign="top" width="191">事件类型</td></tr> <tr> <td valign="top" width="149">&nbsp;</td> <td valign="top" width="361">&nbsp;</td> <td valign="top" width="191">&nbsp;</td></tr> <tr> <td valign="top" width="147">你想知道一个WEB应用是否<strong>添加</strong>，<strong>删除</strong>或<strong>替换</strong>了一个<strong>上下文属性</strong></td> <td valign="top" width="361">Javax.servlet.ServletContextAttributeListener<br><u>attributeAdded<br>attributeRemoved<br>attributeReplaced</u></td> <td valign="top" width="191">ServletContextAttributeEvent</td></tr> <tr> <td valign="top" width="145">你想知道什么时候<strong>添加</strong>，<strong>删除</strong>或者<strong>替换</strong>一个<strong>请求属性</strong></td> <td valign="top" width="361">Javax.servlet.ServletRequestAttributeListener<br><u>attributeAdded<br>attributeRemoved<br>attributeReplaced</u></td> <td valign="top" width="191">ServletRequestEvent</td></tr> <tr> <td valign="top" width="145">你想知道什么时候<strong>添加</strong>，<strong>删除</strong>或者<strong>替换</strong>一个<strong>会话属性</strong></td> <td valign="top" width="361">javax.servlet.http.HttpSessionAttributeListener<br><u>attributeAdded<br>attributeRemoved<br>attributeReplaced</u></td> <td valign="top" width="191">HttpSessionBindingEvent</td></tr> <tr> <td valign="top" width="144">&nbsp;</td> <td valign="top" width="361">&nbsp;</td> <td valign="top" width="191">&nbsp;</td></tr> <tr> <td valign="top" width="144">每次<strong>请求</strong>到来你都想知道，以便建立日志记录或者干点初始化之类的事情</td> <td valign="top" width="361">Javax.servlet.ServletRequestListener<br><u>requestInitialized<br>requeseDestoryed</u></td> <td valign="top" width="191">ServletRequestEvent</td></tr> <tr> <td valign="top" width="144">你想知道有多少个并发用户，也就是说，你想跟踪活动<strong>会话</strong></td> <td valign="top" width="361">javax.servlet.http.HttpSessionListener<br><u>sessionCreated<br>sessionDestoryed</u><br></td> <td valign="top" width="191">HttpSessionEvent</td></tr> <tr> <td valign="top" width="144">你想知道是否创建或者撤销了一个<strong>上下文</strong></td> <td valign="top" width="361">javax.servlet.ServletContextListener<br><u>contextInitialized<br>contextDestoryed</u></td> <td valign="top" width="191">ServletContextEvent</td></tr> <tr> <td valign="top" width="144">&nbsp;</td> <td valign="top" width="361">&nbsp;</td> <td valign="top" width="191">&nbsp;</td></tr> <tr> <td valign="top" width="144">你有一个属性类（这个属性类的对象将被放在一个属性中），而且你希望这个类型的对象绑定到一个会话或从一个会话删除时得到通知</td> <td valign="top" width="361">javax.servlet.http.HttpSessionBindingListener<br><u>valueBound<br>valueUnbound</u></td> <td valign="top" width="191">HttpSessionBindingEvent</td></tr> <tr> <td valign="top" width="144">你有一个属性类，而且你喜欢子属性对象绑定的会话迁移到另一个JVM时得到通知</td> <td valign="top" width="361">javax.servlet.http.HttpSessionActivationListener<br>sessionDidActivate<br>sessionWillPassivate</td> <td valign="top" width="191">HttpSessionEvent</td></tr></tbody></table><img src ="http://www.blogjava.net/pengjunxlx/aggbug/247955.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengjunxlx/" target="_blank">peterJ</a> 2008-12-23 18:48 <a href="http://www.blogjava.net/pengjunxlx/archive/2008/12/23/247955.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Servlet&amp;amp;JSP学习之servlet属性和监听(1)_servletConfig和servletContext</title><link>http://www.blogjava.net/pengjunxlx/archive/2008/12/22/247751.html</link><dc:creator>peterJ</dc:creator><author>peterJ</author><pubDate>Mon, 22 Dec 2008 06:19:00 GMT</pubDate><guid>http://www.blogjava.net/pengjunxlx/archive/2008/12/22/247751.html</guid><wfw:comment>http://www.blogjava.net/pengjunxlx/comments/247751.html</wfw:comment><comments>http://www.blogjava.net/pengjunxlx/archive/2008/12/22/247751.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengjunxlx/comments/commentRss/247751.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengjunxlx/services/trackbacks/247751.html</trackback:ping><description><![CDATA[<p>&nbsp;</p> <h3>servletConfig方法列表</h3> <table cellspacing="0" cellpadding="2" width="702" border="1"> <tbody> <tr> <td valign="top" width="328"> <p><code><a href="http://java.sun.com/j2se/1.5/docs/api/java/lang/String.html"><strong>String</strong></a></code><code><strong>&nbsp;</strong><a href="http://127.0.0.1:8082/javax/servlet/ServletConfig.html#getInitParameter(java.lang.String)"><strong>getInitParameter</strong></a>(<a href="http://java.sun.com/j2se/1.5/docs/api/java/lang/String.html">String</a> name)</code></p></td> <td valign="top" width="371">返回name的实际初始化值</td></tr> <tr> <td valign="top" width="328"> <p><code><a href="http://java.sun.com/j2se/1.5/docs/api/java/util/Enumeration.html"><strong>Enumeration</strong></a></code><code><b>&nbsp;<a href="http://127.0.0.1:8082/javax/servlet/ServletConfig.html#getInitParameterNames()">getInitParameterNames</a></b>()</code></p></td> <td valign="top" width="371">以数组的形式返回所有的初始化值</td></tr> <tr> <td valign="top" width="328"> <p><code><a href="http://127.0.0.1:8082/javax/servlet/ServletContext.html"><strong>ServletContext</strong></a></code><code><b>&nbsp;<a href="http://127.0.0.1:8082/javax/servlet/ServletConfig.html#getServletContext()">getServletContext</a></b>()</code></p></td> <td valign="top" width="371">返回上下文</td></tr> <tr> <td valign="top" width="328"> <p><code><a href="http://java.sun.com/j2se/1.5/docs/api/java/lang/String.html"><strong>String</strong></a></code><code><strong>&nbsp;</strong><a href="http://127.0.0.1:8082/javax/servlet/ServletConfig.html#getServletName()"><strong>getServletName</strong></a>()</code></p></td> <td valign="top" width="371">返回这个servlet实例的名称</td></tr></tbody></table> <p>在XMl中的代码表现形式是这样滴：</p> <p>&lt;servlet&gt;</p> <blockquote> <p>&lt;init_param&gt;</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param_name&gt;myEmailAddress&lt;/param_name&gt;</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param_value&gt;pengjunxlx@yahoo.com.cn&lt;/param_value&gt;</p> <p>&lt;/init_param&gt;</p></blockquote> <p>&lt;/servlet&gt;</p> <p>在servlet代码中：</p> <p>String emailAddress = getServletconfig().getInitparameter("myEmailAddress");//这里的myEmailAddress也就是上面在XML中定义的&lt;param_name&gt;myEmailAddress&lt;/param_name&gt;</p> <p>&nbsp;</p> <p>容器初始化一个servlet的时候，他会读DD，就是XML配置文件，并为servletConfig创建名/值对。具体的步骤是这样：</p> <ol> <li>容器读取这个servlet的部署描述文件，包括servlet初始化参数（&lt;init_param&gt;&lt;/init_param&gt;）  <li>容器为这个servlet创建一个新的servletConfig实例  <li>容器为每个servlet初始化参数创建一个String 名/值对。  <li>容器想servletConfig提供String 名/值初始化参数的引用  <li>容器为servlet类创建一个实例  <li>容器调用servlet的init（）方法，传如servletConfig引用</li></ol> <p>问题来了：这个数据要是JSP也想用怎么办呢？</p> <p>在servlet中：request.setAttribute("jspEmail",emailAddress );</p> <p>然后在JSP中：request.getAttribute("jspEmail");</p> <p>但是，如果想这样一个属性，需要在很多地方用到，那就最好用上下文初始化参数了：servletContext</p> <h2></h2> <h3>servletContext</h3> <p>servletContext与servletConfig的比较学习：</p> <table cellspacing="0" cellpadding="2" width="752" border="1"> <tbody> <tr> <td valign="top" width="135">&nbsp;</td> <td valign="top" width="293">servletConfig</td> <td valign="top" width="322">servletContext</td></tr> <tr> <td valign="top" width="135">适用范围</td> <td valign="top" width="293">只对配置了&lt;init_param&gt;响应的servlet适用</td> <td valign="top" width="322">适用于整个web项目</td></tr> <tr> <td valign="top" width="135">部署表述文件</td> <td valign="top" width="293"><br>&lt;web_app&gt;<br>... ...<br>&lt;servlet&gt;<br><strong>&lt;init_param&gt;<br>&nbsp;&nbsp;&nbsp; &lt;param_name&gt;&lt;/param_name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;param_value&gt;&lt;/param_value&gt;<br>&lt;/init_param&gt;</strong><br>&lt;/servlet&gt;<br>......<br>&lt;/web_app&gt;</td> <td valign="top" width="322"><u><br></u>&lt;web_app&gt;<br>... ...<br>&nbsp;&nbsp; &lt;servlet&gt;<br>&nbsp;&nbsp; ... ...<br>&nbsp;&nbsp; &lt;/servlet&gt;<br>&nbsp; <strong>&lt;context_param&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param_name&gt;&lt;/param_name&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param_value&gt;&lt;/param_value&gt;<br>&nbsp;&nbsp; &lt;/context_param&gt;<br></strong>... ...<br>&lt;/web_app&gt;</td></tr> <tr> <td valign="top" width="135">servlet代码中的表现</td> <td valign="top" width="293">getServletconfig().getInitparameter("&nbsp; ")</td> <td valign="top" width="322">getServletContext().getInitParameter("&nbsp; );</td></tr></tbody></table> <p>&nbsp;</p> <p>servletContext还能做什么？看看servletContext主要的一些方法吧：</p> <p>servletContext是JSP活着servlet与容器及WEB应用其他部分的一个连接。</p> <table cellspacing="0" cellpadding="2" width="750" border="1"> <tbody> <tr> <td valign="top" width="420"> <p><code><a href="http://java.sun.com/j2se/1.5/docs/api/java/lang/Object.html">Object</a></code><code><b>&nbsp;<a href="http://127.0.0.1:8082/javax/servlet/ServletContext.html#getAttribute(java.lang.String)">getAttribute</a></b>(<a href="http://java.sun.com/j2se/1.5/docs/api/java/lang/String.html">String</a> name)</code></p></td> <td valign="top" width="326">通过name得到属性</td></tr> <tr> <td valign="top" width="420"> <p><code><a href="http://java.sun.com/j2se/1.5/docs/api/java/util/Enumeration.html">Enumeration</a></code><code><b>&nbsp;<a href="http://127.0.0.1:8082/javax/servlet/ServletContext.html#getAttributeNames()">getAttributeNames</a></b>()</code></p></td> <td valign="top" width="326">得到属性数组</td></tr> <tr> <td valign="top" width="420"> <p><code><a href="http://java.sun.com/j2se/1.5/docs/api/java/lang/String.html">String</a></code><code><b>&nbsp;<a href="http://127.0.0.1:8082/javax/servlet/ServletContext.html#getInitParameter(java.lang.String)">getInitParameter</a></b>(<a href="http://java.sun.com/j2se/1.5/docs/api/java/lang/String.html">String</a> name)</code></p></td> <td valign="top" width="326">得到初始化参数</td></tr> <tr> <td valign="top" width="420"> <p><code><a href="http://java.sun.com/j2se/1.5/docs/api/java/util/Enumeration.html">Enumeration</a></code><code><b>&nbsp;<a href="http://127.0.0.1:8082/javax/servlet/ServletContext.html#getInitParameterNames()">getInitParameterNames</a></b>()</code></p></td> <td valign="top" width="326">得到初始化参数数组</td></tr> <tr> <td valign="top" width="420"> <p><code>void </code><code><b><a href="http://127.0.0.1:8082/javax/servlet/ServletContext.html#setAttribute(java.lang.String, java.lang.Object)">setAttribute</a></b>(<a href="http://java.sun.com/j2se/1.5/docs/api/java/lang/String.html">String</a> name, <a href="http://java.sun.com/j2se/1.5/docs/api/java/lang/Object.html">Object</a> object)</code></p></td> <td valign="top" width="326">设置属性</td></tr> <tr> <td valign="top" width="420"> <p><code>void </code><code><b><a href="http://127.0.0.1:8082/javax/servlet/ServletContext.html#removeAttribute(java.lang.String)">removeAttribute</a></b>(<a href="http://java.sun.com/j2se/1.5/docs/api/java/lang/String.html">String</a> name)</code></p></td> <td valign="top" width="326">删除属性</td></tr> <tr> <td valign="top" width="420"> <p><code><a href="http://127.0.0.1:8082/javax/servlet/RequestDispatcher.html">RequestDispatcher</a></code><code><b>&nbsp;<a href="http://127.0.0.1:8082/javax/servlet/ServletContext.html#getRequestDispatcher(java.lang.String)">getRequestDispatcher</a></b>(<a href="http://java.sun.com/j2se/1.5/docs/api/java/lang/String.html">String</a> path)</code></p></td> <td valign="top" width="326">请求分派</td></tr></tbody></table><img src ="http://www.blogjava.net/pengjunxlx/aggbug/247751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengjunxlx/" target="_blank">peterJ</a> 2008-12-22 14:19 <a href="http://www.blogjava.net/pengjunxlx/archive/2008/12/22/247751.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Servlet中文API文档</title><link>http://www.blogjava.net/pengjunxlx/archive/2008/12/18/247163.html</link><dc:creator>peterJ</dc:creator><author>peterJ</author><pubDate>Thu, 18 Dec 2008 08:44:00 GMT</pubDate><guid>http://www.blogjava.net/pengjunxlx/archive/2008/12/18/247163.html</guid><wfw:comment>http://www.blogjava.net/pengjunxlx/comments/247163.html</wfw:comment><comments>http://www.blogjava.net/pengjunxlx/archive/2008/12/18/247163.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengjunxlx/comments/commentRss/247163.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengjunxlx/services/trackbacks/247163.html</trackback:ping><description><![CDATA[<p><strong>一、javax.servlet.Servlet接口</strong>  <p>&nbsp;&nbsp;&nbsp; servlet抽象集是javax.servlet.Servlet接口，它规定了必须由Servlet类实现由servlet引擎识别和管理的方法集。  <p>&nbsp;&nbsp;&nbsp; Servlet接口的基本目标是提供生命期方法<u>init()</u> ,<u>service()</u>和<u>destroy()</u>方法。  <p>&nbsp;&nbsp;&nbsp; servlet接口中的方法  <p>&nbsp;&nbsp;&nbsp; <u>void init(ServletConfig config)throws ServletException</u> 在servlet被载入后和实施服务前由servlet引擎进行?次性调用。如果init()产生溢出UnavailableException，则 servle退出服务。  <p>&nbsp;&nbsp;&nbsp; <u>ServletConfig getServletConfig()</u> 返回传递到servlet的init()方法的ServletConfig对象  <p>&nbsp;&nbsp;&nbsp; <u>void service(ServletRequest request, ServletResponse response)throws ServletException,IOException</u> 处理request对象中描述的请求，使用response对象返回请求结果  <p>&nbsp;&nbsp;&nbsp; <u>String getServletInfo()</u> 返回描述servlet的一个字符串  <p>&nbsp;&nbsp;&nbsp; <u>void destory()</u> 当servlet将要卸载时由servlet引擎调用  <p><strong>&nbsp;&nbsp;&nbsp; 二、javax.servlet.GenericServlet类（<a href="http://cisco.chinaitlab.com/List_11.html">协议</a>无关版本）</strong>  <p>&nbsp;&nbsp;&nbsp; GenericServlet是一种与<a href="http://cisco.chinaitlab.com/List_11.html">协议</a>无关的servlet，是一种跟本不对请求提供服务的servlet，而是简单地从init()方法启动后台线程并在destory()中杀死。它可以用于模拟操作系统的端口监控进程。  <p>&nbsp;&nbsp;&nbsp; servlet API提供了Servlet接口的直接实现，称为GenericServlet。此类提供除了service()方法外所有接口中方法的缺省实现。这意味着通过简单地扩展GenericServlte可以编写一个基本的servlet。  <p>&nbsp;&nbsp;&nbsp; 除了Servlet接口外，GenericServlet也实现了ServletConfig接口，处理初始化参数和servlet上下文，提供对授权传递到init()方法中的ServletConfig对象的方法。  <p>&nbsp;&nbsp;&nbsp; GenericServlet类中的方法  <p>&nbsp;&nbsp;&nbsp; void destory() 编飞组成单词“destory”的一个注册入口  <p>&nbsp;&nbsp;&nbsp; String getInitParameter(String name) 返回具有指定名称的初始化参数值。通过凋用config.getInitParameter(name)实现。  <p>&nbsp;&nbsp;&nbsp; Enumeration getInitParameterNames() 返回此serv]et已编码的所有初始化参数的?个枚举类型值。调用config.getInitParameterNames()获得列表。如果未提供初始化参数，则返回?个空的枚举类型值（但不是null）  <p>&nbsp;&nbsp;&nbsp; ServletConfig getServletConfig() 返回传递到init()方法的ServletConfig对象  <p>&nbsp;&nbsp;&nbsp; ServletContext getServletContext() 返回在config对象中引用的ServletContext  <p>&nbsp;&nbsp;&nbsp; String getServletInfo() 返回空字符串  <p>&nbsp;&nbsp;&nbsp; void init(ServletConfig config)throws ServletException 在一实例变量中保存config对象。编写组成单词“init”的注册入口,然后调用方法init()  <p>&nbsp;&nbsp;&nbsp; void init()throws ServletException 可以被跳过以处理servlet初始化.在config对象被保存后init(ServletConfig config)的结尾处自动被调用.servlet作者经常会忘记调用super.init(config)  <p>&nbsp;&nbsp;&nbsp; void log(String msg) 编写注册servlet的入口.为此调用servlet上下文的log()方法.servlet的名字被加到消息文本的开头。  <p>&nbsp;&nbsp;&nbsp; void log(String msg,Throwable t) 编写一个入口和servlet注册的栈轨迹。此方法也是ServletContext中相应方法的一个副本。  <p>&nbsp;&nbsp;&nbsp; abstract void service(Request request,Response response)throws ServletException,IOException 由servlet引擎调用为请求对象描述的请求提供服务。这是GenericServlet中唯一的抽象方法。因此它也是唯一必须被子类所覆盖的方法。  <p>&nbsp;&nbsp;&nbsp; String getServletName() 返回在Web应用发布描述器（web.xml）中指定的servlet的名字。  <p><strong>&nbsp;&nbsp; 三、javax.servlet.http.HttpServlet类（HTTP版本）</strong>  <p>&nbsp;&nbsp;&nbsp; 虽然servlet API允许扩展到其它<a href="http://cisco.chinaitlab.com/List_11.html">协议</a>，但最终所有的servlet均在Web环境下实施操作，只有几种servlet直接扩展了GenericServlet。对servlet更一般的是扩展其HTTP子类HttpServlet。  <p>&nbsp;&nbsp;&nbsp; HttpServlet 类通过调用指定到HTTP请求方法的方法实现service()，亦即对DELETE、HEAD、GET、OPTIONS、POST、PUT和 TRACE，分别调用doDelete()、doHead()、doGet()、doOptions()、doPost()、doPut()和 doTrace()方法，将请求和响应对象置入其HTTP指定子类。  <p>&nbsp;&nbsp;&nbsp; HttpServlet类中的方法  <p>&nbsp;&nbsp;&nbsp; Void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎调用用处理一个HTTP GET请求。输入参数、HTTP头标和输入流可从request对象、response头标和response对象的输出流中获得。  <p>&nbsp;&nbsp;&nbsp; Void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎调用用处理一个HTTP POST请求。输入参数、HTTP头标和输入流可从request对象、response头标和response对象的输出流中获得。  <p>&nbsp;&nbsp;&nbsp; Void doPut(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎调用用处理一个HTTP PUT请求。本方法中请求URI指出被载入的文件位置。  <p>&nbsp;&nbsp;&nbsp; Void doDelete(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎调用用处理一个HTTP DELETE请求。请求URI指出资源被删除。  <p>&nbsp;&nbsp;&nbsp; Void doOptions(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎调用用处理一个HTTP OPTIONS请求。返回一个Allow响应头标表明此servlet支持的HTTP方法。一个servlet不需要覆盖此方法，因为 HttpServlet方法已经实现规范所需的功能。  <p>&nbsp;&nbsp;&nbsp; Void doTrace(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎调用用处理一个HTTP TRACE请求。使得请求头标被反馈成响应关标。一个servlet不需要覆盖此方法，因为HttpServlet方法已经实现HTTP规范所需的功能。  <p>&nbsp;&nbsp;&nbsp; Void service(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException Service(Request request,Response response)调用的一个立即方法，带有指定HTTP请求和响应。此方法实际上将请求导向doGet()、doPost()等等。不应该覆盖此方法。  <p>&nbsp;&nbsp;&nbsp; Void service(Request request,Response response)throws ServletException,IOException 将请求和响应对象置入其指定的HTTP子类，并调用指定HTTP的service()方法。  <p>&nbsp;</p> <p><strong>四、javax.servlet.ServletRequest类（协议无关版本）</strong>  <p>&nbsp;&nbsp;&nbsp; ServletRequest接口封装了客户端请求的细节。它与协议无关，并有一个指定HTTP的子接口。  <p>&nbsp;&nbsp;&nbsp; ServletRequest主要处理：  <p>&nbsp;&nbsp;&nbsp; 1.找到客户端的主机名和IP地址  <p>&nbsp;&nbsp;&nbsp; 2.检索请求参数  <p>&nbsp;&nbsp;&nbsp; 3.取得和设置属性  <p>&nbsp;&nbsp;&nbsp; 4.取得输入和输出流  <p>&nbsp;&nbsp;&nbsp; ServletRequest类中的方法  <p>&nbsp;&nbsp;&nbsp; Object getAttribute(String name) 返回具有指定名字的请求属性，如果不存在则返回null。属性可由servlet引擎设置或使用setAttribute()显式加入。  <p>&nbsp;&nbsp;&nbsp; Enumeration getAttributeName() 返回请求中所有属性名的枚举。如果不存在属性，则返回一个空的枚举。  <p>&nbsp;&nbsp;&nbsp; String getCharacteEncoding() 返回请求所用的字符编码。  <p>&nbsp;&nbsp;&nbsp; Int getContentLength() 指定输入流的长度，如果未知则返回-1。  <p>&nbsp;&nbsp;&nbsp; ServletInputStream getInputStream()throws IOException 返回与请求相关的（二进制）输入流。可以调用getInputStream()或getReader()方法之一。  <p>&nbsp;&nbsp;&nbsp; String getParameter(String name) 返回指定输入参数，如果不存在，返回null。  <p>&nbsp;&nbsp;&nbsp; Enumeration getParameterName() 返回请求中所有参数名的一个可能为空的枚举。  <p>&nbsp;&nbsp;&nbsp; String[] getParameterValues(String name) 返回指定输入参数名的取值数组，如果取值不存在则返回null。它在参数具有多个取值的情况下十分有用。  <p>&nbsp;&nbsp;&nbsp; String get Protocol() 返回请求使用协议的名称和版本。  <p>&nbsp;&nbsp;&nbsp; String getScheme() 返回请求URI的子串，但不包含第一个冒号前的内容。  <p>&nbsp;&nbsp;&nbsp; String getServerName() 返回处理请求的<a href="http://server.chinaitlab.com/">服务器</a>的主机名。  <p>&nbsp;&nbsp;&nbsp; String getServerPort() 返回接收主机正在侦听的端口号。  <p>&nbsp;&nbsp;&nbsp; BufferedReader getReader()throws IOException 返回与请求相关输入数据的一个字符解读器。此方法与getInputStream()只可分别调用，不能同时使用。  <p>&nbsp;&nbsp;&nbsp; String getRemoteAddr() 返回客户端主机的数字型IP地址。  <p>&nbsp;&nbsp;&nbsp; String getRemoteHost() 如果知道，返回客户端主机名。  <p>&nbsp;&nbsp;&nbsp; void setAttribute(String name,Object obj) 以指定名称保存请求中指定对象的引用。  <p>&nbsp;&nbsp;&nbsp; void removeAttribute(String name) 从请求中删除指定属性  <p>&nbsp;&nbsp;&nbsp; Locale getLocale() 如果已知，返回客户端的第一现场或者为null。  <p>&nbsp;&nbsp;&nbsp; Enumeration getLocales() 如果已知，返回客户端的第一现场的一个枚举，否则返回<a href="http://server.chinaitlab.com/">服务器</a>第一现场。  <p>&nbsp;&nbsp;&nbsp; boolean isSecure() 如果请求使用了如HTTPS<a href="http://security.chinaitlab.com/">安全</a>隧道，返回true  <p>&nbsp;&nbsp;&nbsp; RequestDispatcher getRequestDispatcher(String name) 返回指定源名称的RequsetDispatcher对象。  <p>&nbsp;&nbsp;&nbsp; Trackback: <a href="http://tb.blog.csdn.net/TrackBack.aspx?PostId=1681301">http://tb.blog.csdn.net/TrackBack.aspx?PostId=1681301</a>  <p><strong>&nbsp;&nbsp;&nbsp; 五、javax.servlet.http.HttpServletRequest接口（HTTP版本）</strong>  <p>&nbsp;&nbsp;&nbsp; HttpServletRequest类主要处理：  <p>&nbsp;&nbsp;&nbsp; 1.读取和写入HTTP头标  <p>&nbsp;&nbsp;&nbsp; 2.取得和设置cookies  <p>&nbsp;&nbsp;&nbsp; 3.取得路径信息  <p>&nbsp;&nbsp;&nbsp; 4.标识HTTP会话。  <p>&nbsp;&nbsp;&nbsp; HttpServletRequest接口中的方法  <p>&nbsp;&nbsp;&nbsp; String getAuthType() 如果servlet由一个鉴定方案所保护，如HTTP基本鉴定，则返回方案名称。  <p>&nbsp;&nbsp;&nbsp; String getContextPath() 返回指定servlet上下文（web应用）的URL的前缀。  <p>&nbsp;&nbsp;&nbsp; Cookie[] getCookies() 返回与请求相关cookie的一个数组。  <p>&nbsp;&nbsp;&nbsp; Long getDateHeader(String name) 将输出转换成适合构建Date对象的long类型取值的getHeader()的简化版。  <p>&nbsp;&nbsp;&nbsp; String getHeader(String name) 返回指定的HTTP头标指。如果其由请求给出，则名字应为大小写不敏感。  <p>&nbsp;&nbsp;&nbsp; Enumeration getHeaderNames() 返回请求给出的所有HTTP头标名称的权举值。  <p>&nbsp;&nbsp;&nbsp; Enumeration getHeaders(String name) 返回请求给出的指定类型的所有HTTP头标的名称的枚举值，它对具有多取值的头标非常有用。  <p>&nbsp;&nbsp;&nbsp; int getIntHeader(String name) 将输出转换为int取值的getHeader()的简化版。  <p>&nbsp;&nbsp;&nbsp; String getMethod() 返回HTTP请求方法（例如GET、POST等等）  <p>&nbsp;&nbsp;&nbsp; String getPathInfo() 返回在URL中指定的任意附加路径信息。  <p>&nbsp;&nbsp;&nbsp; String getPathTranslated() 返回在URL中指定的任意附加路径信息，被子转换成一个实际路径。  <p>&nbsp;&nbsp;&nbsp; String getQueryString() 返回查询字符串，即URL中?后面的部份。  <p>&nbsp;&nbsp;&nbsp; String getRemoteUser() 如果用户通过鉴定，返回远程用户名，否则为null。  <p>&nbsp;&nbsp;&nbsp; String getRequestedSessionId() 返回客户端的会话ID  <p>&nbsp;&nbsp;&nbsp; String getRequestURI() 返回URL中一部分，从“/”开始，包括上下文，但不包括任意查询字符串。  <p>&nbsp;&nbsp;&nbsp; String getServletPath() 返回请求URI上下文后的子串  <p>&nbsp;&nbsp;&nbsp; HttpSession getSession() 调用getSession(true)的简化版。  <p>&nbsp;&nbsp;&nbsp; HttpSession getSession(boolean create) 返回当前HTTP会话，如果不存在，则创建一个新的会话，create参数为true。  <p>&nbsp;&nbsp;&nbsp; Principal getPrincipal() 如果用户通过鉴定，返回代表当前用户的java.security.Principal对象，否则为null。  <p>&nbsp;&nbsp;&nbsp; boolean isRequestedSessionIdFromCookie() 如果请求的会话ID由一个Cookie对象提供，则返回true，否则为false。  <p>&nbsp;&nbsp;&nbsp; boolean isRequestedSessionIdFromURL() 如果请求的会话ID在请求URL中解码，返回true，否则为false  <p>&nbsp;&nbsp;&nbsp; boolean isRequestedSessionIdValid() 如果客户端返回的会话ID仍然有效，则返回true。  <p>&nbsp;&nbsp;&nbsp; Boolean isUserInRole(String role) 如果当前已通过鉴定用户与指定角色相关，则返回true，如果不是或用户未通过鉴定，则返回false。  <p>&nbsp;</p> <p><strong>六、javax.servlet.ServletResponse接口（协议无关版本）</strong>  <p>&nbsp;&nbsp;&nbsp; ServletResponse对象将一个servlet生成的结果传到发出请求的客户端。ServletResponse操作主要是作为输出流及其内容类型和长度的包容器，它由servlet引擎创建.  <p>&nbsp;&nbsp;&nbsp; ServletResponse接口中的方法  <p>&nbsp;&nbsp;&nbsp; void flushBuffer()throws IOException 发送缓存到客户端的输出内容。因为HTTP需要头标在内容前被发送，调用此方法发送状态行和响应头标，以确认请求。  <p>&nbsp;&nbsp;&nbsp; int getBufferSize() 返回响应使用的缓存大小。如果缓存无效则返加0。  <p>&nbsp;&nbsp;&nbsp; String getCharacterEncoding() 返回响应使用字符解码的名字。除非显式设置，否则为ISO-8859-1  <p>&nbsp;&nbsp;&nbsp; Locale getLocale() 返回响应使用的现场。除非用setLocale()修改，否则缺省为服务器现场。  <p>&nbsp;&nbsp;&nbsp; OutputStream getOutputStream()throws IOException 返回用于将返回的二进制输出写入客户端的流，此方法和getWrite()方法二者只能调用其一。  <p>&nbsp;&nbsp;&nbsp; Writer getWriter()throws IOException 返回用于将返回的文本输出写入客户端的一个字符写入器，此方法和getOutputStream()二者只能调用其一。  <p>&nbsp;&nbsp;&nbsp; boolean isCommitted() 如果状态和响应头标已经被发回客户端，则返回true，在响应被确认后发送响应头标毫无作用。  <p>&nbsp;&nbsp;&nbsp; void reset() 清除输出缓存及任何响应头标。如果响应已得到确认，则引发事件IllegalStateException。  <p>&nbsp;&nbsp;&nbsp; void setBufferSize(int nBytes) 设置响应的最小缓存大小。实际缓存大小可以更大，可以通过调用getBufferSize()得到。如果输出已被写入，则产生IllegalStateException。  <p>&nbsp;&nbsp;&nbsp; void setContentLength(int length) 设置内容体的长度。  <p>&nbsp;&nbsp;&nbsp; void setContentType(String type) 设置内容类型。在HTTP servlet中即设置Content-Type头标。  <p>&nbsp;&nbsp;&nbsp; void setLocale(Locale locale) 设置响应使用的现场。在HTTP servlet中，将对Content-Type头标取值产生影响。  <p><strong>&nbsp;&nbsp;&nbsp; 七、javax.servlet.http.HttpServletResponse接口（HTTP版本）</strong>  <p>&nbsp;&nbsp;&nbsp; HttpServletResponse加入表示状态码、状态信息和响应头标的方法，它还负责对URL中写入一Web页面的HTTP会话ID进行解码。  <p>&nbsp;&nbsp;&nbsp; HttpServletResponse接口中的方法  <p>&nbsp;&nbsp;&nbsp; void addCookie(Cookie cookie) 将一个Set-Cookie头标加入到响应。  <p>&nbsp;&nbsp;&nbsp; void addDateHeader(String name,long date) 使用指定日期值加入带有指定名字（或代换所有此名字头标）的响应头标的方法。  <p>&nbsp;&nbsp;&nbsp; void setHeader(String name,String value) 设置具有指定名字和取值的一个响应头标。  <p>&nbsp;&nbsp;&nbsp; void addIntHeader(String name,int value) 使用指定整型值加入带有指定名字的响应头标（或代换此名字的所有头标）。  <p>&nbsp;&nbsp;&nbsp; boolean containsHeader(String name) 如果响应已包含此名字的头标，则返回true。  <p>&nbsp;&nbsp;&nbsp; String encodeRedirectURL(String url) 如果客户端不知道接受cookid，则向URL加入会话ID。第一种形式只对在sendRedirect()中使用的URL进行调用。其他被编码的 URLs应被传递到encodeURL()  <p>&nbsp;&nbsp;&nbsp; String encodeURL(String url)  <p>&nbsp;&nbsp;&nbsp; void sendError(int status) 设置响应状态码为指定值（可选的状态信息）。HttpServleetResponse定义了一个完整的整数常量集合表示有效状态值。  <p>&nbsp;&nbsp;&nbsp; void sendError(int status,String msg)  <p>&nbsp;&nbsp;&nbsp; void setStatus(int status) 设置响应状态码为指定指。只应用于不产生错误的响应，而错误响应使用sendError()。  <p><strong>&nbsp;&nbsp;&nbsp; 八、javax.servlet.ServletContext接口</strong>  <p>&nbsp;&nbsp;&nbsp; 一个servlet上下文是servlet引擎提供用来服务于Web应用的接口。Servlet上下文具有名字（它属于Web应用的名字）唯一映射到文件系统的一个目录。  <p>&nbsp;&nbsp;&nbsp; 一个servlet可以通过ServletConfig对象的getServletContext()方法得到servlet上下文的引用，如果servlet直接或间接调用子类GenericServlet，则可以使用getServletContext()方法。  <p>&nbsp;&nbsp;&nbsp; Web应用中servlet可以使用servlet上下文得到：  <p>&nbsp;&nbsp;&nbsp; 1.在调用期间保存和检索属性的功能，并与其他servlet共享这些属性。  <p>&nbsp;&nbsp;&nbsp; 2.读取Web应用中文件内容和其他静态资源的功能。  <p>&nbsp;&nbsp;&nbsp; 3.互相发送请求的方式。  <p>&nbsp;&nbsp;&nbsp; 4.记录错误和信息化消息的功能。  <p>&nbsp;&nbsp;&nbsp; ServletContext接口中的方法  <p>&nbsp;</p> <p>Object getAttribute(String name) 返回servlet上下文中具有指定名字的对象，或使用已指定名捆绑一个对象。从Web应用的标准观点看，这样的对象是全局对象，因为它们可以被同一 servlet在另一时刻访问。或上下文中任意其他servlet访问。  <p>&nbsp;&nbsp;&nbsp; void setAttribute(String name,Object obj) 设置servlet上下文中具有指定名字的对象。  <p>&nbsp;&nbsp;&nbsp; Enumeration getAttributeNames() 返回保存在servlet上下文中所有属性名字的枚举。  <p>&nbsp;&nbsp;&nbsp; ServletContext getContext(String uripath) 返回映射到另一URL的servlet上下文。在同一服务器中URL必须是以“/”开头的绝对路径。  <p>&nbsp;&nbsp;&nbsp; String getInitParameter(String name) 返回指定上下文范围的初始化参数值。此方法与ServletConfig方法名称不一样，后者只应用于已编码的指定servlet。此方法应用于上下文中所有的参数。  <p>&nbsp;&nbsp;&nbsp; Enumeration getInitParameterNames() 返回（可能为空）指定上下文范围的初始化参数值名字的枚举值。  <p>&nbsp;&nbsp;&nbsp; int getMajorVersion() 返回此上下文中支持servlet API级别的最大和最小版本号。  <p>&nbsp;&nbsp;&nbsp; int getMinorVersion()  <p>&nbsp;&nbsp;&nbsp; String getMimeType(String fileName) 返回指定文件名的MIME类型。典型情况是基于文件扩展名，而不是文件本身的内容（它可以不必存在）。如果MIME类型未知，可以返回null。  <p>&nbsp;&nbsp;&nbsp; RequestDispatcher getNameDispatcher(String name) 返回具有指定名字或路径的servlet或JSP的RequestDispatcher。如果不能创建RequestDispatch，返回null。如果指定路径，必须心“/”开头，并且是相对于servlet上下文的顶部。  <p>&nbsp;&nbsp;&nbsp; RequestDispatcher getNameDispatcher(String path)  <p>&nbsp;&nbsp;&nbsp; String getRealPath(String path) 给定一个URI，返回文件系统中URI对应的绝对路径。如果不能进行映射，返回null。  <p>&nbsp;&nbsp;&nbsp; URL getResource(String path) 返回相对于servlet上下文或读取URL的输入流的指定绝对路径相对应的URL，如果资源不存在则返回null。  <p>&nbsp;&nbsp;&nbsp; InputStream getResourceAsStream(String path)  <p>&nbsp;&nbsp;&nbsp; String getServerInfo() 返顺servlet引擎的名称和版本号。  <p>&nbsp;&nbsp;&nbsp; void log(String message)  <p>&nbsp;&nbsp;&nbsp; void log(String message,Throwable t) 将一个消息写入servlet注册，如果给出Throwable参数，则包含栈轨迹。  <p>&nbsp;&nbsp;&nbsp; void removeAttribute(String name) 从servlet上下文中删除指定属性。  <p><strong>&nbsp;&nbsp;&nbsp; 九、javax.servlet.http.HttpSession接口</strong>  <p>&nbsp;&nbsp;&nbsp; HttpSession类似于哈希表的接口，它提供了setAttribute ()和getAttribute()方法<a href="http://www.storworld.com/">存储</a>和检索对象。HttpSession提供了一个会话ID关键字，一个参与会话行为的客户端在同一会话的请求中<a href="http://www.storworld.com/">存储</a>和返回它。servlet引擎查找适当的会话对象，并使之对当前请求可用。  <p>&nbsp;&nbsp;&nbsp; HttpSession接口中的方法  <p>&nbsp;&nbsp;&nbsp; Object getAttribute(String name) 将会话中一个对象保存为指定名字，返回或删除前面保存的此名称对象。  <p>&nbsp;&nbsp;&nbsp; void setAttribute(String name,Object value)  <p>&nbsp;&nbsp;&nbsp; void removeAttribute(String name)  <p>&nbsp;&nbsp;&nbsp; Enumeration getAttributeName() 返回捆绑到当前会话的所有属性名的枚举值。  <p>&nbsp;&nbsp;&nbsp; long getCreationTime() 返回表示会话创建和最后访问日期和时间的一个长整型，该整型形式为java.util.Date()构造器中使用的形式。  <p>&nbsp;&nbsp;&nbsp; long getLastAccessedTime()  <p>&nbsp;&nbsp;&nbsp; String getId() 返回会话ID，servlet引擎设置的一个唯一关键字。  <p>&nbsp;&nbsp;&nbsp; ing getMaxInactiveInterval() 如果没有与客户端发生交互，设置和返回会话存活的最大秒数。  <p>&nbsp;&nbsp;&nbsp; void setMasInactiveInterval(int seconds)  <p>&nbsp;&nbsp;&nbsp; void invalidate() 使得会话被终止，释放其中任意对象。  <p>&nbsp;&nbsp;&nbsp; boolean isNew() 如果客户端仍未加入到会话，返回true。当会话首次被创建，会话ID被传入客户端，但客户端仍未进行包含此会话ID的第二次请示时，返回true。  <img src ="http://www.blogjava.net/pengjunxlx/aggbug/247163.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengjunxlx/" target="_blank">peterJ</a> 2008-12-18 16:44 <a href="http://www.blogjava.net/pengjunxlx/archive/2008/12/18/247163.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Servlet&amp;amp;JSP学习之Servlet的请求和响应</title><link>http://www.blogjava.net/pengjunxlx/archive/2008/12/18/247149.html</link><dc:creator>peterJ</dc:creator><author>peterJ</author><pubDate>Thu, 18 Dec 2008 08:14:00 GMT</pubDate><guid>http://www.blogjava.net/pengjunxlx/archive/2008/12/18/247149.html</guid><wfw:comment>http://www.blogjava.net/pengjunxlx/comments/247149.html</wfw:comment><comments>http://www.blogjava.net/pengjunxlx/archive/2008/12/18/247149.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/pengjunxlx/comments/commentRss/247149.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengjunxlx/services/trackbacks/247149.html</trackback:ping><description><![CDATA[<ol> <li>Servlet的请求</li></ol> <p>假如你已经安装好了Eclipse或者其他IDE，现在就建一个Servlet文件试试看，你会发现建立的Servlet会默认继承javax.servlet.http.HttpServlet类，就算你没有安装Eclipse也无所谓，知道我们编写的Servlet是需要继承javax.servlet.http.HttpServlet类就可以啦。<br>&nbsp;&nbsp;&nbsp;&nbsp; 现在打开这个类看看，看看Servlet的老爸长得如何，public abstract class HttpServlet extends GenericServlet implements Serializable; 从这看得出，Servlet还有一个爷爷，它是javax.servlet.GenericServlet，还实现了一个序列化的功能（java.io.Serializable），序列化的就不说啦，老实说，我也没用过序列化这功能，仅处于知道有这个地球上有这么一个东西而已。再接着看看Servlet爷爷长得是啥样，public abstract class GenericServlet extends Object implements Servlet, ServletConfig, Serializable; 我们这需要留意的是Servlet的爷爷是实现了Servlet的接口的，你打开Servlet接口，里面有这样一句话：Defines methods that all servlets must implement. 换一句话，它是Servlet的老祖宗，所有的Servlet必须要实现这个接口，要不就不能称之为Servlet。我们Web用的HTTP协议所以就是HttpServlet，同样的道理，如果将来出现XTTP协议，也许你会看到一个XttpServlet，它必定也是实现了Servlet接口（当然啦，技术出现了大变革除外）。Servlet的爸爸，爷爷的方法这么多，不可能每一个都说。就挑一些常用的（也就是Servlet生命周期的几个函数）说说：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void init(); //Servlet初始化<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void service (ServletRequest req, ServletResponse res); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void doGet (ServletRequest req, ServletResponse res);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void doPost (ServletRequest req, ServletResponse res);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; …………<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Servlet各种服务<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void destroy(); //Servlet的销毁 </p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 记得李兴华老师当时是这样说的：Servlet的生命周期其实就是人一生的写照，Tomcat就是这个社会。人的经历首先是从出生开始的，对Servlet而言就是调用init（）方法，想想看，人的一生能出生多少次啊？就一次，Servlet中init（）的方法也只能调用一次，一般都是在Servlet第一次运行时加载init（）方法，你也可以设置为服务器启动的时候加载。人出生后，随着年纪的增长，你就必须得投入到工作去，身体有缺陷的例外，而且工作不是说你只做一次，只要有需要，你就必须得做，重复的做。BOOS的命令，谁敢不服从，要不立刻吵你鱿鱼。对Servlet而言也是一样，只是它没有抵触情绪而已，哈。它也是不断的运行doGet(), doPost()等方法，当中有可能出现异常。人总有一天是会死亡的，死亡的确定有两种，一种是的的确确死了，他的尸体就躺在你面前，另外一种是他失踪了多少年，从法律的角度上判断，他是死亡了，他的老婆拥有了合法改嫁的权利。对Servlet而言，它的死亡方式也有两种：一种是服务器关闭，也就是的的确确死了，另外一种是该Servlet长时间不使用，Tomcat判断其死亡，Servlet的生命周期到此结束。</p> <p>&nbsp; 2. Servlet响应</p> <blockquote> <p>使用响应只是为了向客户发送数据，会对响应调用两个方法：</p> <p>setContentType()</p> <p>getWriter()</p> <p>&nbsp;</p> <p><a href="http://www.blogjava.net/images/blogjava_net/pengjunxlx/WindowsLiveWriter/ServletJSPServlet_E427/image_8.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="305" alt="image" src="http://www.blogjava.net/images/blogjava_net/pengjunxlx/WindowsLiveWriter/ServletJSPServlet_E427/image_thumb_3.png" width="585" border="0"></a></p></blockquote><img src ="http://www.blogjava.net/pengjunxlx/aggbug/247149.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengjunxlx/" target="_blank">peterJ</a> 2008-12-18 16:14 <a href="http://www.blogjava.net/pengjunxlx/archive/2008/12/18/247149.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通过windows live writer 来写博客</title><link>http://www.blogjava.net/pengjunxlx/archive/2008/12/17/246894.html</link><dc:creator>peterJ</dc:creator><author>peterJ</author><pubDate>Wed, 17 Dec 2008 08:15:00 GMT</pubDate><guid>http://www.blogjava.net/pengjunxlx/archive/2008/12/17/246894.html</guid><wfw:comment>http://www.blogjava.net/pengjunxlx/comments/246894.html</wfw:comment><comments>http://www.blogjava.net/pengjunxlx/archive/2008/12/17/246894.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengjunxlx/comments/commentRss/246894.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengjunxlx/services/trackbacks/246894.html</trackback:ping><description><![CDATA[<p>1、在菜单中选择&#8220;Weblog&#8221;，然后选择&#8220;Another Weblog Service&#8221;。<br>2、在Weblog Homepage URL中输入你的Blog主页地址。<br>3、输入用户名与密码。<br>4、在&#8220;Type of&nbsp; weblog that you are using&#8221;中选择&#8220;Custom(Metaweblog API)&#8221;。<br>5、&#8220;Remote posting URL for your weblog&#8221;中输入&#8220;http://www.blogjava.net/用户名/services/metaweblog.aspx&#8221;。 <p>使用注意：用Windows Live Writer发布之后，Windows Live Writer并不改变当前窗口的状态(也没有明显的提示)，在当前窗口中会将刚发布的随笔处于编辑状态，如果修改并发布，会直接修改刚发布的随笔内容。 <p><strong><a href="http://www.cnblogs.com/lyj/archive/2008/11/30/1344463.html"></a></strong> <p>推荐：<strong><a href="http://www.cnblogs.com/lyj/archive/2008/11/30/1344463.html">Live Writer排版技巧</a></strong> <p>Windows Live Writer下载地址：<a href="http://windowslivewriter.spaces.live.com/blog/cns%21D85741BB5E0BE8AA%21174.entry">http://windowslivewriter.spaces.live.com/blog/cns!D85741BB5E0BE8AA!174.entry</a></p> <img src ="http://www.blogjava.net/pengjunxlx/aggbug/246894.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengjunxlx/" target="_blank">peterJ</a> 2008-12-17 16:15 <a href="http://www.blogjava.net/pengjunxlx/archive/2008/12/17/246894.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>