<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Alex's Blog &#187; classpath</title>
	<atom:link href="http://www.hialex.net/tags/classpath/feed" rel="self" type="application/rss+xml" />
	<link>http://www.hialex.net</link>
	<description>记录生活与工作中的点点滴滴</description>
	<lastBuildDate>Sat, 09 Jan 2010 12:37:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Servlet程序设计</title>
		<link>http://www.hialex.net/2008/04/servlet-note.html</link>
		<comments>http://www.hialex.net/2008/04/servlet-note.html#comments</comments>
		<pubDate>Wed, 02 Apr 2008 08:46:24 +0000</pubDate>
		<dc:creator>alex</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[classpath]]></category>
		<category><![CDATA[get]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[post]]></category>
		<category><![CDATA[servlet]]></category>
		<category><![CDATA[语法]]></category>

		<guid isPermaLink="false">http://www.hialex.net/2008/04/servlet-note.html</guid>
		<description><![CDATA[Java Servlet是一种使用Java编写的CGI程序

CGI：通用网关接口
与传统的CGI不同，Servlet是一种多线程处理模式&#8211;性能较高
在Servlet中可以控制输出HTML代码，则所有的HTML代码必须使用out.println()一行一行输出

Servlet的生命周期

初始化（1次）

public void init(ServletiConfig config) throws ServletException
Servlet初始化有两种方式

init()：当不需要传递初始化参数时使用
init(ServletConfig config) ：如果使用这种初始化方法，则上面的无参初始化方法无效，这种方式适用于需要传递初始化参数




服务（多次）

doGet();表单和地址输入都为GET请求
doPost(); 只有表单输入为POST请求


销毁（1次）

服务器关闭
此Servlet长时间不使用



简单Servlet编写

Servlet直接继承直HttpServlet
在doPost（doGet）方法中写入相应的程序代码
配置WEB.XML文件

JSP程序的功能与Servlet一致，意味着Servlet程序同样可以被外部所访问，就必须有一个地址，这只能通过WEB映射解决 

修改web.xml文件可以配置映射地址
//表示要使用一个Servlet

&#60;servlet&#62;  
      //在web.xml文件内部起作用的名字  
      &#60;servlet-name&#62;Simple&#60;/servlet-name&#62;  
      //servlet程序所在包.类名称  
      &#60;servlet-class&#62;net.hialex.Servlet.SimpleServlet&#60;/servlet-class&#62;       
&#60;/servlet&#62;      [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Java Servlet是一种使用Java编写的CGI程序</strong></p>
<ul>
<li><strong>CGI：通用网关接口</strong></li>
<li>与传统的CGI不同，<strong>Servlet是一种多线程处理模式</strong>&#8211;性能较高</li>
<li>在Servlet中可以控制输出HTML代码，则所有的HTML代码必须使用out.println()一行一行输出</li>
</ul>
<p>Servlet的生命周期</p>
<ol>
<li><strong>初始化（1次）</strong>
<ul>
<li>public void <strong>init(ServletiConfig config)</strong> throws ServletException<br />
Servlet初始化有两种方式</p>
<ul>
<li>init()：当不需要传递初始化参数时使用</li>
<li>init(ServletConfig config) ：<strong>如果使用这种初始化方法，则上面的无参初始化方法无效</strong>，这种方式适用于需要传递初始化参数</li>
</ul>
</li>
</ul>
</li>
<li><strong>服务（多次）</strong>
<ul>
<li>doGet();表单和地址输入都为GET请求</li>
<li>doPost(); 只有表单输入为POST请求</li>
</ul>
</li>
<li><strong>销毁（1次）</strong>
<ul>
<li>服务器关闭</li>
<li>此Servlet长时间不使用</li>
</ul>
</li>
</ol>
<p>简单Servlet编写</p>
<ol>
<li>Servlet直接继承直HttpServlet</li>
<li>在doPost（doGet）方法中写入相应的程序代码</li>
<li>配置WEB.XML文件
<ul>
<li><strong>JSP程序的功能与Servlet一致，意味着Servlet程序同样可以被外部所访问，就必须有一个地址，这只能通过WEB映射解决 </strong>
<ul>
<li>修改web.xml文件可以配置映射地址<br />
//表示要使用一个Servlet</li>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>  
      //在web.xml文件内部起作用的名字  
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Simple<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>  
      //servlet程序所在包.类名称  
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>net.hialex.Servlet.SimpleServlet<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>       
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>               
//servlet映射地址               
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-mapping<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>  
     //在web.xml文件内部起作用的名字，与上面的名字一致  
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Simple<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>  
     //具体映射路径，前面必须要有一个/  
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url-pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>/demo<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url-pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>       
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-mapping<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

</ul>
</li>
</ul>
</li>
<li>注意：
<ul>
<li>在编译servlet时可能会遇到找不到servlet包的问题，这是因为servlet为JDK的扩展包，所以在使用时需要指定classpath</li>
<li><strong>若不指定classpath可以将servlet.jar文件拷贝到JSK安装路径下的jre\lib\ext下</strong></li>
</ul>
</li>
<li>结论：<strong>在Tomcat中，存在servlet的全部库文件（%Tomcat_HOME%\lib\servlet-api.jar）</strong></li>
</ol>
<p>HttpServlet类</p>
<ul>
<li>继承自GenericServlet类并增加了doGet()、doPost()等七个方法</li>
<li><strong>doGet()方法：当客户端发送get请求时就调用doGet()方法，HTTP缺省的就是Get</strong></li>
<li><strong>doPost()方法：当客户端发送HTTP请求调用POST方法调用doPost()方法</strong></li>
</ul>
<p>对于一个基本的Servlet程序必须注意以下几点：</p>
<ol>
<li><strong>首先一定要符合Servlet程序的开发框架</strong></li>
<li><strong>配置web.xml文件</strong></li>
<li><strong>Servlet的缺点是不适合输出大量的HTML代码</strong></li>
</ol>
<p><span id="more-62"></span></p>
<p>多个名称映射同一Servlet：</p>
<ul>
<li>&lt;servlet-mapping&gt;<br />
&lt;servlet-name&gt;simple&lt;/servlet-name&gt;<br />
&lt;url-pattern&gt;/demo&lt;/url-pattern&gt;<br />
&lt;/servlet-mapping&gt;</li>
<li>&lt;servlet-mapping&gt;<br />
&lt;servlet-name&gt;simple&lt;/servlet-name&gt;<br />
&lt;url-pattern&gt;/demo.simple&lt;/url-pattern&gt;<br />
&lt;/servlet-mapping&gt;</li>
<li>&lt;servlet-mapping&gt;<br />
&lt;servlet-name&gt;simple&lt;/servlet-name&gt;<br />
&lt;url-pattern&gt;/demo/*&lt;/url-pattern&gt;<br />
&lt;/servlet-mapping&gt;</li>
<li>只要保持&lt;servlet-name&gt;一致，就可以有多个&lt;servlet-mapping&gt;<br />
只要映射名称为*，就可以任意匹配</li>
<li>在servlet中解决路径问题的唯一原则：在地址栏中拼凑出完整路径</li>
</ul>
<p>Servlet接口与JSP对象比较：</p>
<blockquote>
<table border="1" cellspacing="0" cellpadding="2" width="516">
<tbody>
<tr>
<td width="192" valign="top">Servlet接口</td>
<td width="322" valign="top">JSP内置对象</td>
</tr>
<tr>
<td width="192" valign="top">HttpServletRequest</td>
<td width="322" valign="top">request</td>
</tr>
<tr>
<td width="192" valign="top">HttpServletResponse</td>
<td width="322" valign="top">response</td>
</tr>
<tr>
<td width="192" valign="top">ServletConfig</td>
<td width="322" valign="top">config</td>
</tr>
<tr>
<td width="192" valign="top">HttpSession</td>
<td width="322" valign="top">Session，通过request.getSession()取得</td>
</tr>
<tr>
<td width="192" valign="top">ServletContext</td>
<td width="322" valign="top">application<br />
取得两种方式（对应两种初始化方法）<br />
1.无参数初始化方法<br />
2.如果针对有参构造[init(ServletConfig)]则必须通过Config对象取得</td>
</tr>
</tbody>
</table>
</blockquote>
<p><a href="http://17fav.com/?url=http%3A%2F%2Fwww.hialex.net%2F2008%2F04%2Fservlet-note.html&title=Servlet%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1" title="用 17fav 收藏和分享本文"><img src="http://17fav.com/i/bookmark.gif" alt="17fav 收藏本文" /></a></p><h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>2008-02-13 -- <a href="http://www.hialex.net/2008/02/jsp-syntax-g.html" title="(八)JSP基本语法G&#8211;其他对象">(八)JSP基本语法G&#8211;其他对象</a> (0)</li><li>2008-03-15 -- <a href="http://www.hialex.net/2008/03/javabean-syntax-b.html" title="JavaBean语法(下)">JavaBean语法(下)</a> (0)</li><li>2008-03-01 -- <a href="http://www.hialex.net/2008/03/usage-of-jdbc.html" title="(九)JDBC操作技术">(九)JDBC操作技术</a> (0)</li><li>2008-03-01 -- <a href="http://www.hialex.net/2008/03/javabean-syntax-a.html" title="JavaBean语法(上)">JavaBean语法(上)</a> (0)</li><li>2008-02-02 -- <a href="http://www.hialex.net/2008/02/jsp-syntax-f.html" title="(七)JSP基本语法&#8211;session对象">(七)JSP基本语法&#8211;session对象</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.hialex.net/2008/04/servlet-note.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
